optarg_t * parse_options (int argc, const char * argv[]) { optarg_t *poptarg = (optarg_t *) malloc(sizeof(optarg_t)); if (!poptarg) { fprintf(stderr, "ERROR: could not allocate memory for option parser!\n"); exit(EXIT_FAILURE); } // set defaults poptarg->promiscuous = 1; poptarg->to_ms = 100; poptarg->snaplen = 100; poptarg->t_long = 10 * 60; poptarg->t_short = 10; poptarg->t_age = 30; // check arguments int c; while ((c = getopt(argc, (char**)argv, "s:r:o:w:m:i:A:S:L:p?h")) != -1) { switch (c) { case 's': poptarg->snaplen = atoi(optarg); break; case 'r': poptarg->infile = optarg; break; case 'o': poptarg->outfile = optarg; break; case 'w': poptarg->dumpfile = optarg; break; case 'm': poptarg->to_ms = atoi(optarg); break; case 'p': poptarg->promiscuous = 0; break; case 'i': poptarg->dev = optarg; break; case 'S': poptarg->t_short = atoi(optarg); break; case 'L': poptarg->t_long = atoi(optarg); break; case 'A': poptarg->t_age = atoi(optarg); break; case '?': usage(); break; case 'h': usage(); break; default: usage(); break; } } // set the remaining as filter string poptarg->filter = concat_argv((char**)&argv[optind]); return(poptarg); }
bool argv_to_string(const char *argv[SIZEOF_ARG], char *buf, size_t buflen, const char *sep) { return concat_argv(argv, buf, buflen, sep, FALSE); }
bool argv_to_string_quoted(const char *argv[SIZEOF_ARG], char *buf, size_t buflen, const char *sep) { return concat_argv(argv, buf, buflen, sep, true); }