IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 12906


Ignore:
Timestamp:
Apr 18, 2007, 12:42:33 PM (19 years ago)
Author:
magnier
Message:

removed argc,argv from pmConfig

Location:
trunk/psModules/src/config
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/config/pmConfig.c

    r12905 r12906  
    44 *  @author EAM (IfA)
    55 *
    6  *  @version $Revision: 1.87 $ $Name: not supported by cvs2svn $
    7  *  @date $Date: 2007-04-18 22:20:28 $
     6 *  @version $Revision: 1.88 $ $Name: not supported by cvs2svn $
     7 *  @date $Date: 2007-04-18 22:42:33 $
    88 *
    99 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    6262    psFree(config->arguments);
    6363    psFree(config->database);
    64     for (int i = 0; i < argc; i++) {
    65         psFree (config->argv[i]);
    66     }
    67     psFree (config->argv);
    68 }
    69 
    70 pmConfig *pmConfigAlloc(int argc, char **argv)
     64}
     65
     66pmConfig *pmConfigAlloc()
    7167{
    7268    pmConfig *config = psAlloc(sizeof(pmConfig));
     
    8682    config->defaultRecipe = NULL;
    8783
    88     config->argc = argc;
    89     config->argv = (char *)psAlloc (argc*sizeof(char *));
    90     for (int i = 0; i < argc; i++) {
    91         config->argv[i] = psStringCopy(argv[i]);
    92     }
    93 
    9484    // the file structure is used to carry pmFPAfiles
    9585    config->files = psMetadataAlloc ();
     
    310300    PS_ASSERT_PTR_NON_NULL(argv, NULL);
    311301
    312     pmConfig *config = pmConfigAlloc(argc, argv); // The configuration, containing site, camera and recipes
     302    pmConfig *config = pmConfigAlloc(); // The configuration, containing site, camera and recipes
    313303    config->defaultRecipe = defaultRecipe;
    314304
     
    322312    // First, try command line
    323313    //
    324     psS32 argNum = psArgumentGet(*config->argc, config->argv, "-site");
     314    psS32 argNum = psArgumentGet(*argc, argv, "-site");
    325315    if (argNum != 0) {
    326316        //
     
    329319        // remove it as well.
    330320        //
    331         psArgumentRemove(argNum, config->argc, config->argv);
    332         if (argNum >= *config->argc) {
     321        psArgumentRemove(argNum, argc, argv);
     322        if (argNum >= *argc) {
    333323            psLogMsg("psModules.config", PS_LOG_WARN,
    334324                     "-site command-line switch provided without the required filename --- ignored.\n");
    335325        } else {
    336             siteName = psStringCopy(config->argv[argNum]);
    337             psArgumentRemove(argNum, config->argc, config->argv);
     326            siteName = psStringCopy(argv[argNum]);
     327            psArgumentRemove(argNum, argc, argv);
    338328        }
    339329    }
     
    397387        }
    398388
    399         argNum = psArgumentGet(*config->argc, config->argv, "-log");
     389        argNum = psArgumentGet(*argc, argv, "-log");
    400390        if (argNum > 0)
    401391        {
    402             psArgumentRemove(argNum, config->argc, config->argv);
    403             if (argNum >= *config->argc) {
     392            psArgumentRemove(argNum, argc, argv);
     393            if (argNum >= *argc) {
    404394                psLogMsg("psModules.config", PS_LOG_WARN, "-log command-line switch provided without the "
    405395                         "required log destination --- ignored.\n");
    406396            } else {
    407                 if (!psLogSetDestination(psMessageDestination(config->argv[argNum]))) {
     397                if (!psLogSetDestination(psMessageDestination(argv[argNum]))) {
    408398                    psLogMsg("psModules.config", PS_LOG_WARN, "Unable to set log destination to %s\n",
    409                              config->argv[argNum]);
     399                             argv[argNum]);
    410400                }
    411                 psArgumentRemove(argNum, config->argc, config->argv);
     401                psArgumentRemove(argNum, argc, argv);
    412402            }
    413403        } else
     
    420410                if (!psLogSetDestination(psMessageDestination(logDest))) {
    421411                    psLogMsg("psModules.config", PS_LOG_WARN, "Unable to set log destination to %s\n",
    422                              config->argv[argNum]);
     412                             argv[argNum]);
    423413                }
    424414            }
     
    472462        //   B: will the pmConfigRead function always be called on initialization.
    473463        //
    474         psArgumentVerbosity(config->argc, config->argv);
     464        psArgumentVerbosity(argc, argv);
    475465        // XXX: substitute the string for the default log level for "2".
    476466    }
     
    498488    // file is read and parsed into psMetadata struct "camera".
    499489    //
    500     argNum = psArgumentGet(*config->argc, config->argv, "-camera");
     490    argNum = psArgumentGet(*argc, argv, "-camera");
    501491    if (argNum > 0) {
    502         psArgumentRemove(argNum, config->argc, config->argv);
    503         if (argNum >= *config->argc) {
     492        psArgumentRemove(argNum, argc, argv);
     493        if (argNum >= *argc) {
    504494            psLogMsg("psModules.config", PS_LOG_WARN,
    505495                     "-camera command-line switch provided without the required camera or filename --- "
    506496                     "ignored.\n");
    507497        } else {
    508             char *cameraFile = config->argv[argNum]; // The camera configuration file to read
     498            char *cameraFile = argv[argNum]; // The camera configuration file to read
    509499
    510500            // look for a symbolic camera name in the CAMERAS metadata
     
    525515
    526516            pmConfigFileRead(&config->camera, cameraFile, "camera");
    527             psArgumentRemove(argNum, config->argc, config->argv);
     517            psArgumentRemove(argNum, argc, argv);
    528518
    529519            // Read in the formats
     
    600590
    601591    // check for values that override DB* keywords
    602     argNum = psArgumentGet(*config->argc, config->argv, "-dbserver");
     592    argNum = psArgumentGet(*argc, argv, "-dbserver");
    603593    if (argNum > 0) {
    604         psArgumentRemove(argNum, config->argc, config->argv);
    605         if (argNum >= *config->argc) {
     594        psArgumentRemove(argNum, argc, argv);
     595        if (argNum >= *argc) {
    606596            psLogMsg("psModules.config", PS_LOG_WARN,
    607597                     "-dbserver command-line switch provided without the required server name --- ");
    608598        } else {
    609             char *dbserver = config->argv[argNum]; // The camera configuration file to read
     599            char *dbserver = argv[argNum]; // The camera configuration file to read
    610600            if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBSERVER", PS_META_REPLACE, NULL, dbserver)) {
    611601                psLogMsg("psModules.config", PS_LOG_WARN,
     
    613603            }
    614604
    615             psArgumentRemove(argNum, config->argc, config->argv);
    616         }
    617     }
    618 
    619     argNum = psArgumentGet(*config->argc, config->argv, "-dbname");
     605            psArgumentRemove(argNum, argc, argv);
     606        }
     607    }
     608
     609    argNum = psArgumentGet(*argc, argv, "-dbname");
    620610    if (argNum > 0) {
    621         psArgumentRemove(argNum, config->argc, config->argv);
    622         if (argNum >= *config->argc) {
     611        psArgumentRemove(argNum, argc, argv);
     612        if (argNum >= *argc) {
    623613            psLogMsg("psModules.config", PS_LOG_WARN,
    624614                     "-dbname command-line switch provided without the required database name --- ");
    625615        } else {
    626             char *dbname = config->argv[argNum]; // The camera configuration file to read
     616            char *dbname = argv[argNum]; // The camera configuration file to read
    627617            if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBNAME", PS_META_REPLACE, NULL, dbname)) {
    628618                psLogMsg("psModules.config", PS_LOG_WARN,
     
    630620            }
    631621
    632             psArgumentRemove(argNum, config->argc, config->argv);
    633         }
    634     }
    635 
    636     argNum = psArgumentGet(*config->argc, config->argv, "-dbuser");
     622            psArgumentRemove(argNum, argc, argv);
     623        }
     624    }
     625
     626    argNum = psArgumentGet(*argc, argv, "-dbuser");
    637627    if (argNum > 0) {
    638         psArgumentRemove(argNum, config->argc, config->argv);
    639         if (argNum >= *config->argc) {
     628        psArgumentRemove(argNum, argc, argv);
     629        if (argNum >= *argc) {
    640630            psLogMsg("psModules.config", PS_LOG_WARN,
    641631                     "-dbuser command-line switch provided without the required database name --- ");
    642632        } else {
    643             char *dbuser = config->argv[argNum]; // The camera configuration file to read
     633            char *dbuser = argv[argNum]; // The camera configuration file to read
    644634            if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBUSER", PS_META_REPLACE, NULL, dbuser)) {
    645635                psLogMsg("psModules.config", PS_LOG_WARN,
     
    647637            }
    648638
    649             psArgumentRemove(argNum, config->argc, config->argv);
    650         }
    651     }
    652 
    653     argNum = psArgumentGet(*config->argc, config->argv, "-dbpassword");
     639            psArgumentRemove(argNum, argc, argv);
     640        }
     641    }
     642
     643    argNum = psArgumentGet(*argc, argv, "-dbpassword");
    654644    if (argNum > 0) {
    655         psArgumentRemove(argNum, config->argc, config->argv);
    656         if (argNum >= *config->argc) {
     645        psArgumentRemove(argNum, argc, argv);
     646        if (argNum >= *argc) {
    657647            psLogMsg("psModules.config", PS_LOG_WARN,
    658648                     "-dbpassword command-line switch provided without the required password --- ");
    659649        } else {
    660             char *dbpassword = config->argv[argNum]; // The camera configuration file to read
     650            char *dbpassword = argv[argNum]; // The camera configuration file to read
    661651            if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBPASSWORD", PS_META_REPLACE, NULL, dbpassword)) {
    662652                psLogMsg("psModules.config", PS_LOG_WARN,
     
    664654            }
    665655
    666             psArgumentRemove(argNum, config->argc, config->argv);
    667         }
    668     }
    669 
    670     argNum = psArgumentGet(*config->argc, config->argv, "-dbport");
     656            psArgumentRemove(argNum, argc, argv);
     657        }
     658    }
     659
     660    argNum = psArgumentGet(*argc, argv, "-dbport");
    671661    if (argNum > 0) {
    672         psArgumentRemove(argNum, config->argc, config->argv);
    673         if (argNum >= *config->argc) {
     662        psArgumentRemove(argNum, argc, argv);
     663        if (argNum >= *argc) {
    674664            psLogMsg("psModules.config", PS_LOG_WARN,
    675665                     "-dbpport command-line switch provided without the required port number --- ");
    676666        } else {
    677             char *dbport = config->argv[argNum]; // The camera configuration file to read
     667            char *dbport = argv[argNum]; // The camera configuration file to read
    678668            if (!psMetadataAddS32(config->site, PS_LIST_TAIL, "DBPORT", PS_META_REPLACE, NULL, (psS32)atoi(dbport))) {
    679669                psLogMsg("psModules.config", PS_LOG_WARN,
     
    681671            }
    682672
    683             psArgumentRemove(argNum, config->argc, config->argv);
     673            psArgumentRemove(argNum, argc, argv);
    684674        }
    685675    }
     
    975965}
    976966
    977 psArray *pmConfigFileSets(pmConfig *config, const char *file, const char *list)
    978 {
    979     PS_ASSERT_PTR_NON_NULL(config, NULL);
    980     PS_ASSERT_PTR_NON_NULL(config->argc, NULL);
    981     PS_ASSERT_INT_NONNEGATIVE(*config->argc, NULL);
    982     PS_ASSERT_PTR_NON_NULL(config->argv, NULL);
     967psArray *pmConfigFileSets(int *argc, char **argv, const char *file, const char *list)
     968{
     969    PS_ASSERT_PTR_NON_NULL(argc, NULL);
     970    PS_ASSERT_INT_NONNEGATIVE(*argc, NULL);
     971    PS_ASSERT_PTR_NON_NULL(argv, NULL);
    983972    PS_ASSERT_STRING_NON_EMPTY(file, NULL);
    984973    PS_ASSERT_STRING_NON_EMPTY(list, NULL);
     
    992981    // maybe a comma-separated list of words
    993982    // each word may be a glob: "file*.fits"
    994     if ((Narg = psArgumentGet (*config->argc, config->argv, file))) {
     983    if ((Narg = psArgumentGet (*argc, argv, file))) {
    995984
    996985        // select the word after 'file' and split by comma
    997         psArgumentRemove (Narg, config->argc, config->argv);
    998         psArray *words = psStringSplitArray (config->argv[Narg], ",", true);
    999         psArgumentRemove (Narg, config->argc, config->argv);
     986        psArgumentRemove (Narg, argc, argv);
     987        psArray *words = psStringSplitArray (argv[Narg], ",", true);
     988        psArgumentRemove (Narg, argc, argv);
    1000989
    1001990        // parse the word as a glob
     
    10211010
    10221011    // load the list from the supplied text file
    1023     if ((Narg = psArgumentGet (*config->argc, config->argv, list))) {
     1012    if ((Narg = psArgumentGet (*argc, argv, list))) {
    10241013        int nItems;
    10251014        char line[1024]; // XXX limits the list lines to 1024 chars
     
    10271016        char *filename;
    10281017
    1029         psArgumentRemove (Narg, config->argc, config->argv);
    1030         FILE *f = fopen (config->argv[Narg], "r");
     1018        psArgumentRemove (Narg, argc, argv);
     1019        FILE *f = fopen (argv[Narg], "r");
    10311020        if (f == NULL) {
    10321021            psAbort("unable to open specified list file");
     
    10481037            }
    10491038        }
    1050         psArgumentRemove (Narg, config->argc, config->argv);
     1039        psArgumentRemove (Narg, argc, argv);
    10511040    }
    10521041
     
    10541043}
    10551044
    1056 bool pmConfigFileSetsMD(psMetadata *metadata, pmConfig *config, const char *name,
     1045bool pmConfigFileSetsMD(psMetadata *metadata, int *argc, char **argv, const char *name,
    10571046                        const char *file, const char *list)
    10581047{
    10591048    PS_ASSERT_PTR_NON_NULL(metadata, false);
    1060     PS_ASSERT_PTR_NON_NULL(config, false);
    10611049    PS_ASSERT_STRING_NON_EMPTY(name, NULL);
    10621050    PS_ASSERT_STRING_NON_EMPTY(file, NULL);
     
    10651053    psErrorClear();   // pmConfigFileSets may or may not call psError, so
    10661054    // if files->n == 0 we'll want to call psError(..., false, ...)
    1067     psArray *files = pmConfigFileSets(config, file, list);
     1055    psArray *files = pmConfigFileSets(argc, argv, file, list);
    10681056    if (files->n == 0) {
    10691057        // psError(PS_ERR_IO, false, "pmConfigFileSets failed to find %s in the argument list", name);
  • trunk/psModules/src/config/pmConfig.h

    r12716 r12906  
    55 *  @author Eugene Magnier, IfA
    66 *
    7  *  @version $Revision: 1.28 $ $Name: not supported by cvs2svn $
    8  *  @date $Date: 2007-04-03 20:28:26 $
     7 *  @version $Revision: 1.29 $ $Name: not supported by cvs2svn $
     8 *  @date $Date: 2007-04-18 22:42:33 $
    99 *  Copyright 2005-2006 Institute for Astronomy, University of Hawaii
    1010 */
     
    4747    psMetadata *files;                  ///< pmFPAfiles used for analysis
    4848    psDB *database;                     ///< Database handle
    49     int *argc;                          ///< Number of command-line arguments
    50     char **argv;                        ///< Command-line arguments (raw version)
    5149    const char *defaultRecipe;          ///< name of top-level recipe for this program
    5250    // Private members
    5351    pmRecipeSource recipesRead;         ///< Which recipe sources have been read
    5452    psMetadata *recipeSymbols;          ///< Where each recipe came from
     53
     54    // dropping the argc, argv info from pmConfig
     55    # if (0)
     56    int *argc;                          ///< Number of command-line arguments
     57    char **argv;                        ///< Command-line arguments (raw version)
     58    # endif
    5559}
    5660pmConfig;
Note: See TracChangeset for help on using the changeset viewer.