Exemplo n.º 1
0
static void usage(const char *program_name) {
    fprintf(stdout, "\n");
    fprintf(stdout, "USAGE: %s [-options]\n", program_name);
    fprintf(stdout, "\n");
    fprintf(stdout, " General Options:\n");
    fprintf(stdout, "  -?             You're reading it.\n");
    fprintf(stdout, "  -v             Verbose output.\n");
//    fprintf(stdout, "  -V            Version and compiled in options.\n");
    fprintf(stdout, "  -i <iface>     Interface to sniff from.\n");
    fprintf(stdout, "  -f <format>    Output format line. See Format options.\n");
    fprintf(stdout, "  -b <bfp>       Berkley packet filter.\n");
    fprintf(stdout, "  -d <dir>       Directory to write session files to.\n");
    fprintf(stdout, "  -D             Enable daemon mode.\n");
    fprintf(stdout, "  -u <user>      User to drop priveleges to after daemonising.\n");
    fprintf(stdout, "  -g <group>     Group to drop priveleges to after daemonising.\n");
    fprintf(stdout, "  -T <dir>       Direct to chroot into.\n");
    fprintf(stdout, "  -P <path>      Path to PID file (/var/run).\n");
    fprintf(stdout, "  -p <file>      Name of pidfile (cxtracker.pid).\n");
    fprintf(stdout, "  -r <pcap>      PCAP file to read.\n");
    fprintf(stdout, "  -w <name>      Dump PCAP to file with specified prefix.\n");
    fprintf(stdout, "  -F             Flush output after every write to dump file.\n");
    fprintf(stdout, "  -s <bytes>     Roll over dump file based on size.\n");
    fprintf(stdout, "  -t <interval>  Roll over dump file based on time intervals.\n");
    fprintf(stdout, "\n");
    fprintf(stdout, " Long Options:\n");
    fprintf(stdout, "  --help         Same as '?'\n");
//    fprintf(stdout, "  --version     Same as 'V'\n");
    fprintf(stdout, "  --interface    Same as 'i'\n");
    fprintf(stdout, "  --format       Same as 'f'\n");
    fprintf(stdout, "  --bpf          Same as 'b'\n");
    fprintf(stdout, "  --log-dir      Same as 'd'\n");
    fprintf(stdout, "  --daemonize    Same as 'D'\n");
    fprintf(stdout, "  --user         Same as 'u'\n");
    fprintf(stdout, "  --group        Same as 'g'\n");
    fprintf(stdout, "  --chroot-dir   Same as 'T'\n");
    fprintf(stdout, "  --pid-file     Same as 'p'\n");
    fprintf(stdout, "  --pcap-file    Same as 'r'\n");
    fprintf(stdout, "\n");
    format_options();
 }
Exemplo n.º 2
0
void parse_args(int argc, char **argv,
		struct _options *options, struct _flags *flags)
{
    options->dsn = G_define_option();
    options->dsn->key = "output";
    options->dsn->type = TYPE_STRING;
    options->dsn->label = _("Name of output directory or OGR or PostGIS data source");
    options->dsn->description = _("Examples:\n"
				  "\t\tESRI Shapefile: directory containing a shapefile\n"
				  "\t\tMapInfo File: directory containing a mapinfo file\n"
				  "\t\tPostGIS database: connection string, eg. 'PG:dbname=db user=grass'");
    options->dsn->required = NO;
    options->dsn->guisection = _("Settings");

    options->format = G_define_option();
    options->format->key = "format";
    options->format->description = _("Format for output vector data");
    options->format->required = NO;
    options->format->type = TYPE_STRING;
    options->format->options = format_options();
#ifdef HAVE_OGR
    options->format->answer = "ESRI_Shapefile";
#else
#ifdef HAVE_POSTGRES
    options->format->answer = "PostgreSQL";
#endif /* HAVE_POSTGRES */
#endif /* HAVE_OGR */
    options->format->guisection = _("Settings");

    options->opts = G_define_option();
    options->opts->key = "options";
    options->opts->label = _("Creation options");
    options->opts->description = _("Examples:\n"
				  "\t\t'SHPT=POINTZ': create 3D point Shapefile data\n"
				  "\t\t'GEOM_TYPE=geography': use geography PostGIS data\n"
				  "\t\t'SCHEMA=grass': create new PostGIS tables in 'grass' schema");
    options->opts->required = NO;
    options->opts->multiple = YES;
    options->opts->type = TYPE_STRING;
    options->opts->guisection = _("Settings");

    options->input = G_define_standard_option(G_OPT_F_INPUT);
    options->input->key = "loadsettings";
    options->input->required = NO;
    options->input->description = _("Name of input file to read settings from");
    options->input->guisection = _("Settings");

    options->output = G_define_standard_option(G_OPT_F_OUTPUT);
    options->output->key = "savesettings";
    options->output->required = NO;
    options->output->description = _("Name for output file where to save current settings");

    flags->f = G_define_flag();
    flags->f->key = 'f';
    flags->f->description = _("List supported formats and exit");
    flags->f->guisection = _("Print");
    flags->f->suppress_required = YES;

    flags->r = G_define_flag();
    flags->r->key = 'r';
    flags->r->description = _("Cease using OGR/PostGIS, revert to native output and exit");
    flags->r->suppress_required = YES;
    flags->r->guisection = _("Native");
    
    flags->p = G_define_flag();
    flags->p->key = 'p';
    flags->p->description = _("Print current status");
    flags->p->guisection = _("Print");
    flags->p->suppress_required = YES;

    flags->g = G_define_flag();
    flags->g->key = 'g';
    flags->g->description = _("Print current status in shell script style");
    flags->g->guisection = _("Print");
    flags->g->suppress_required = YES;

    if (G_parser(argc, argv))
	exit(EXIT_FAILURE);

    /* check options */
    if (options->dsn->answer && options->format->answer &&
        options->input->answer)
        G_fatal_error(_("%s= and %s=/%s= are mutually exclusive"),
                      options->input->key,
                      options->dsn->key, options->format->key);
    if (flags->f->answer || flags->p->answer || flags->r->answer || flags->g->answer ||
        options->output->answer)
        return;

    if (!options->dsn->answer && !options->input->answer)
        G_fatal_error(_("%s= or %s= must be specified"),
                      options->dsn->key, options->input->key);
    if (options->dsn->answer && !options->format->answer)
        G_fatal_error(_("%s= must be specified"),
                      options->format->key);
}