00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "csv.h"
00011 #include "csv_local.h"
00012 #include "csv_extern.h"
00013
00014 static int usage(void);
00015
00016
00017
00018
00019 DB_ENV *dbenv;
00020 DB *db;
00021 int verbose;
00022 char *progname;
00023
00024 int
00025 main(int argc, char *argv[])
00026 {
00027 int ch, done, ret, t_ret;
00028 char **clist, **clp, *home;
00029
00030
00031 dbenv = NULL;
00032 db = NULL;
00033 if ((progname = strrchr(argv[0], '/')) == NULL)
00034 progname = argv[0];
00035 else
00036 ++progname;
00037 verbose = 0;
00038
00039
00040 home = NULL;
00041 ret = 0;
00042
00043
00044 if ((clp = clist =
00045 (char **)calloc((size_t)argc + 1, sizeof(char *))) == NULL) {
00046 fprintf(stderr, "%s: %s\n", progname, strerror(ENOMEM));
00047 return (EXIT_FAILURE);
00048 }
00049
00050
00051 while ((ch = getopt(argc, argv, "c:h:v")) != EOF)
00052 switch (ch) {
00053 case 'c':
00054 *clp++ = optarg;
00055 break;
00056 case 'h':
00057 home = optarg;
00058 break;
00059 case 'v':
00060 ++verbose;
00061 break;
00062 case '?':
00063 default:
00064 return (usage());
00065 }
00066 argc -= optind;
00067 argv += optind;
00068
00069 if (*argv != NULL)
00070 return (usage());
00071
00072
00073 if (csv_env_open(home, 1) != 0)
00074 return (EXIT_FAILURE);
00075
00076
00077 if (clp == clist)
00078 ret = query_interactive();
00079 else
00080 for (clp = clist, done = 0; *clp != NULL && !done; ++clp)
00081 if ((ret = query(*clp, &done)) != 0)
00082 break;
00083
00084
00085 if ((t_ret = csv_env_close()) != 0 && ret == 0)
00086 ret = t_ret;
00087
00088 return (ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE);
00089 }
00090
00091
00092
00093
00094
00095 static int
00096 usage(void)
00097 {
00098 (void)fprintf(stderr, "usage: %s [-v] [-c cmd] [-h home]\n", progname);
00099 return (EXIT_FAILURE);
00100 }