int main(int argc, char **argv) { static struct option long_options[] = { {"host", required_argument, NULL, 'h'}, {"limit", required_argument, NULL, 'l'}, {"dry-run", no_argument, NULL, 'n'}, {"port", required_argument, NULL, 'p'}, {"username", required_argument, NULL, 'U'}, {"verbose", no_argument, NULL, 'v'}, {"version", no_argument, NULL, 'V'}, {"no-password", no_argument, NULL, 'w'}, {"password", no_argument, NULL, 'W'}, {"help", no_argument, NULL, '?'}, {NULL, 0, NULL, 0} }; int rc = 0; struct _param param; int c; int port; const char *progname; int optindex; progname = get_progname(argv[0]); /* Set default parameter values */ param.pg_user = NULL; param.pg_prompt = TRI_DEFAULT; param.pg_host = NULL; param.pg_port = NULL; param.progname = progname; param.verbose = 0; param.dry_run = 0; param.transaction_limit = 1000; /* Process command-line arguments */ if (argc > 1) { if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) { usage(progname); exit(0); } if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) { puts("vacuumlo (PostgreSQL) " PG_VERSION); exit(0); } } while ((c = getopt_long(argc, argv, "h:l:np:U:vwW", long_options, &optindex)) != -1) { switch (c) { case '?': fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); exit(1); case 'h': param.pg_host = pg_strdup(optarg); break; case 'l': param.transaction_limit = strtol(optarg, NULL, 10); if (param.transaction_limit < 0) { fprintf(stderr, "%s: transaction limit must not be negative (0 disables)\n", progname); exit(1); } break; case 'n': param.dry_run = 1; param.verbose = 1; break; case 'p': port = strtol(optarg, NULL, 10); if ((port < 1) || (port > 65535)) { fprintf(stderr, "%s: invalid port number: %s\n", progname, optarg); exit(1); } param.pg_port = pg_strdup(optarg); break; case 'U': param.pg_user = pg_strdup(optarg); break; case 'v': param.verbose = 1; break; case 'w': param.pg_prompt = TRI_NO; break; case 'W': param.pg_prompt = TRI_YES; break; default: fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); exit(1); } } /* No database given? Show usage */ if (optind >= argc) { fprintf(stderr, "vacuumlo: missing required argument: database name\n"); fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); exit(1); } for (c = optind; c < argc; c++) { /* Work on selected database */ rc += (vacuumlo(argv[c], ¶m) != 0); } return rc; }
int main(int argc, char **argv) { int rc = 0; struct _param param; int c; int port; const char *progname; progname = get_progname(argv[0]); /* Parameter handling */ param.pg_user = NULL; param.pg_prompt = TRI_DEFAULT; param.pg_host = NULL; param.pg_port = NULL; param.verbose = 0; param.dry_run = 0; if (argc > 1) { if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0) { usage(progname); exit(0); } if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0) { puts("vacuumlo (PostgreSQL) " PG_VERSION); exit(0); } } while (1) { c = getopt(argc, argv, "h:U:p:vnwW"); if (c == -1) break; switch (c) { case '?': fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname); exit(1); case ':': exit(1); case 'v': param.verbose = 1; break; case 'n': param.dry_run = 1; param.verbose = 1; break; case 'U': param.pg_user = strdup(optarg); break; case 'w': param.pg_prompt = TRI_NO; break; case 'W': param.pg_prompt = TRI_YES; break; case 'p': port = strtol(optarg, NULL, 10); if ((port < 1) || (port > 65535)) { fprintf(stderr, "%s: invalid port number: %s\n", progname, optarg); exit(1); } param.pg_port = strdup(optarg); break; case 'h': param.pg_host = strdup(optarg); break; } } /* No database given? Show usage */ if (optind >= argc) { fprintf(stderr, "vacuumlo: missing required argument: database name\n"); fprintf(stderr, "Try 'vacuumlo -?' for help.\n"); exit(1); } for (c = optind; c < argc; c++) { /* Work on selected database */ rc += (vacuumlo(argv[c], ¶m) != 0); } return rc; }