IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
May 31, 2007, 2:58:32 PM (19 years ago)
Author:
jhoblitt
Message:

convert to mulit-level option help

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippTools/src/pxinjectConfig.c

    r12025 r13578  
    6969        "define the URI (required)", NULL);
    7070
    71 #define PXTOOL_MODE(option, modeval, argset) \
    72 { \
    73     int N = 0; \
    74     if ((N = psArgumentGet (argc, argv, option))) { \
    75         psArgumentRemove (N, &argc, argv); \
    76         if (config->mode) { \
    77             psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); \
    78         } \
    79         config->mode = modeval; \
    80         config->args = psMemIncrRefCounter(argset); \
    81     } \
    82 }
     71    psMetadata *argSets = psMetadataAlloc();
     72    psMetadata *modes = psMetadataAlloc();
    8373
    84     // find which mode we're running under
    85     PXTOOL_MODE("-newExp",          PXINJECT_MODE_NEWEXP,       newExpArgs);
    86     PXTOOL_MODE("-newImfile",       PXINJECT_MODE_NEWIMFILE,    newImfileArgs);
     74    PXTOOL_ADD_MODE("-newExp",      "", PXINJECT_MODE_NEWEXP,       newExpArgs);
     75    PXTOOL_ADD_MODE("-newImfile",   "", PXINJECT_MODE_NEWIMFILE,    newImfileArgs);
    8776
    88     bool argErr = false;
    89     if (config->mode == PXINJECT_MODE_NONE) {
    90         argErr = true;
    91         fprintf (stderr, "mode argument is required\n");
    92     } else if (! psArgumentParse(config->args, &argc, argv) || argc != 1) {
    93         argErr = true;
    94         fprintf (stderr, "error parsing arguments\n");
    95     }
    96 
    97     if (argErr) {
    98         printf("\nPan-STARRS Detrend Tool\n");
    99         printf("Usage: %s <mode> [<options>]\n\n", argv[0]);
    100         printf(" <mode> : [-newExp|-newImfile]\n\n");
    101         fprintf (stdout, "-newExp ");
    102         psArgumentHelp(newExpArgs);
    103         psFree(newExpArgs);
    104         fprintf (stdout, "-newImfile ");
    105         psArgumentHelp(newImfileArgs);
    106         psFree(newImfileArgs);
    107 
     77    if (!pxGetOptions(stderr, argc, argv, config, modes, argSets)) {
     78        psError(PS_ERR_UNKNOWN, true, "option parsing failed");
     79        psFree(argSets);
     80        psFree(modes);
    10881        psFree(config);
    10982        return NULL;
    11083    }
    11184
    112     psFree(newExpArgs);
    113     psFree(newImfileArgs);
     85    psFree(argSets);
     86    psFree(modes);
    11487
    11588    // setup search criterion
     
    211184    }
    212185
    213     // save argv/argc
    214     config->argv = argv;
    215     config->argc = argc;
    216 
    217186    return config;
    218187}
Note: See TracChangeset for help on using the changeset viewer.