Changeset 12906 for trunk/psModules/src/config/pmConfig.c
- Timestamp:
- Apr 18, 2007, 12:42:33 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/config/pmConfig.c (modified) (24 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/config/pmConfig.c
r12905 r12906 4 4 * @author EAM (IfA) 5 5 * 6 * @version $Revision: 1.8 7$ $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 $ 8 8 * 9 9 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 62 62 psFree(config->arguments); 63 63 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 66 pmConfig *pmConfigAlloc() 71 67 { 72 68 pmConfig *config = psAlloc(sizeof(pmConfig)); … … 86 82 config->defaultRecipe = NULL; 87 83 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 94 84 // the file structure is used to carry pmFPAfiles 95 85 config->files = psMetadataAlloc (); … … 310 300 PS_ASSERT_PTR_NON_NULL(argv, NULL); 311 301 312 pmConfig *config = pmConfigAlloc( argc, argv); // The configuration, containing site, camera and recipes302 pmConfig *config = pmConfigAlloc(); // The configuration, containing site, camera and recipes 313 303 config->defaultRecipe = defaultRecipe; 314 304 … … 322 312 // First, try command line 323 313 // 324 psS32 argNum = psArgumentGet(* config->argc, config->argv, "-site");314 psS32 argNum = psArgumentGet(*argc, argv, "-site"); 325 315 if (argNum != 0) { 326 316 // … … 329 319 // remove it as well. 330 320 // 331 psArgumentRemove(argNum, config->argc, config->argv);332 if (argNum >= * config->argc) {321 psArgumentRemove(argNum, argc, argv); 322 if (argNum >= *argc) { 333 323 psLogMsg("psModules.config", PS_LOG_WARN, 334 324 "-site command-line switch provided without the required filename --- ignored.\n"); 335 325 } else { 336 siteName = psStringCopy( config->argv[argNum]);337 psArgumentRemove(argNum, config->argc, config->argv);326 siteName = psStringCopy(argv[argNum]); 327 psArgumentRemove(argNum, argc, argv); 338 328 } 339 329 } … … 397 387 } 398 388 399 argNum = psArgumentGet(* config->argc, config->argv, "-log");389 argNum = psArgumentGet(*argc, argv, "-log"); 400 390 if (argNum > 0) 401 391 { 402 psArgumentRemove(argNum, config->argc, config->argv);403 if (argNum >= * config->argc) {392 psArgumentRemove(argNum, argc, argv); 393 if (argNum >= *argc) { 404 394 psLogMsg("psModules.config", PS_LOG_WARN, "-log command-line switch provided without the " 405 395 "required log destination --- ignored.\n"); 406 396 } else { 407 if (!psLogSetDestination(psMessageDestination( config->argv[argNum]))) {397 if (!psLogSetDestination(psMessageDestination(argv[argNum]))) { 408 398 psLogMsg("psModules.config", PS_LOG_WARN, "Unable to set log destination to %s\n", 409 config->argv[argNum]);399 argv[argNum]); 410 400 } 411 psArgumentRemove(argNum, config->argc, config->argv);401 psArgumentRemove(argNum, argc, argv); 412 402 } 413 403 } else … … 420 410 if (!psLogSetDestination(psMessageDestination(logDest))) { 421 411 psLogMsg("psModules.config", PS_LOG_WARN, "Unable to set log destination to %s\n", 422 config->argv[argNum]);412 argv[argNum]); 423 413 } 424 414 } … … 472 462 // B: will the pmConfigRead function always be called on initialization. 473 463 // 474 psArgumentVerbosity( config->argc, config->argv);464 psArgumentVerbosity(argc, argv); 475 465 // XXX: substitute the string for the default log level for "2". 476 466 } … … 498 488 // file is read and parsed into psMetadata struct "camera". 499 489 // 500 argNum = psArgumentGet(* config->argc, config->argv, "-camera");490 argNum = psArgumentGet(*argc, argv, "-camera"); 501 491 if (argNum > 0) { 502 psArgumentRemove(argNum, config->argc, config->argv);503 if (argNum >= * config->argc) {492 psArgumentRemove(argNum, argc, argv); 493 if (argNum >= *argc) { 504 494 psLogMsg("psModules.config", PS_LOG_WARN, 505 495 "-camera command-line switch provided without the required camera or filename --- " 506 496 "ignored.\n"); 507 497 } else { 508 char *cameraFile = config->argv[argNum]; // The camera configuration file to read498 char *cameraFile = argv[argNum]; // The camera configuration file to read 509 499 510 500 // look for a symbolic camera name in the CAMERAS metadata … … 525 515 526 516 pmConfigFileRead(&config->camera, cameraFile, "camera"); 527 psArgumentRemove(argNum, config->argc, config->argv);517 psArgumentRemove(argNum, argc, argv); 528 518 529 519 // Read in the formats … … 600 590 601 591 // check for values that override DB* keywords 602 argNum = psArgumentGet(* config->argc, config->argv, "-dbserver");592 argNum = psArgumentGet(*argc, argv, "-dbserver"); 603 593 if (argNum > 0) { 604 psArgumentRemove(argNum, config->argc, config->argv);605 if (argNum >= * config->argc) {594 psArgumentRemove(argNum, argc, argv); 595 if (argNum >= *argc) { 606 596 psLogMsg("psModules.config", PS_LOG_WARN, 607 597 "-dbserver command-line switch provided without the required server name --- "); 608 598 } else { 609 char *dbserver = config->argv[argNum]; // The camera configuration file to read599 char *dbserver = argv[argNum]; // The camera configuration file to read 610 600 if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBSERVER", PS_META_REPLACE, NULL, dbserver)) { 611 601 psLogMsg("psModules.config", PS_LOG_WARN, … … 613 603 } 614 604 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"); 620 610 if (argNum > 0) { 621 psArgumentRemove(argNum, config->argc, config->argv);622 if (argNum >= * config->argc) {611 psArgumentRemove(argNum, argc, argv); 612 if (argNum >= *argc) { 623 613 psLogMsg("psModules.config", PS_LOG_WARN, 624 614 "-dbname command-line switch provided without the required database name --- "); 625 615 } else { 626 char *dbname = config->argv[argNum]; // The camera configuration file to read616 char *dbname = argv[argNum]; // The camera configuration file to read 627 617 if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBNAME", PS_META_REPLACE, NULL, dbname)) { 628 618 psLogMsg("psModules.config", PS_LOG_WARN, … … 630 620 } 631 621 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"); 637 627 if (argNum > 0) { 638 psArgumentRemove(argNum, config->argc, config->argv);639 if (argNum >= * config->argc) {628 psArgumentRemove(argNum, argc, argv); 629 if (argNum >= *argc) { 640 630 psLogMsg("psModules.config", PS_LOG_WARN, 641 631 "-dbuser command-line switch provided without the required database name --- "); 642 632 } else { 643 char *dbuser = config->argv[argNum]; // The camera configuration file to read633 char *dbuser = argv[argNum]; // The camera configuration file to read 644 634 if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBUSER", PS_META_REPLACE, NULL, dbuser)) { 645 635 psLogMsg("psModules.config", PS_LOG_WARN, … … 647 637 } 648 638 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"); 654 644 if (argNum > 0) { 655 psArgumentRemove(argNum, config->argc, config->argv);656 if (argNum >= * config->argc) {645 psArgumentRemove(argNum, argc, argv); 646 if (argNum >= *argc) { 657 647 psLogMsg("psModules.config", PS_LOG_WARN, 658 648 "-dbpassword command-line switch provided without the required password --- "); 659 649 } else { 660 char *dbpassword = config->argv[argNum]; // The camera configuration file to read650 char *dbpassword = argv[argNum]; // The camera configuration file to read 661 651 if (!psMetadataAddStr(config->site, PS_LIST_TAIL, "DBPASSWORD", PS_META_REPLACE, NULL, dbpassword)) { 662 652 psLogMsg("psModules.config", PS_LOG_WARN, … … 664 654 } 665 655 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"); 671 661 if (argNum > 0) { 672 psArgumentRemove(argNum, config->argc, config->argv);673 if (argNum >= * config->argc) {662 psArgumentRemove(argNum, argc, argv); 663 if (argNum >= *argc) { 674 664 psLogMsg("psModules.config", PS_LOG_WARN, 675 665 "-dbpport command-line switch provided without the required port number --- "); 676 666 } else { 677 char *dbport = config->argv[argNum]; // The camera configuration file to read667 char *dbport = argv[argNum]; // The camera configuration file to read 678 668 if (!psMetadataAddS32(config->site, PS_LIST_TAIL, "DBPORT", PS_META_REPLACE, NULL, (psS32)atoi(dbport))) { 679 669 psLogMsg("psModules.config", PS_LOG_WARN, … … 681 671 } 682 672 683 psArgumentRemove(argNum, config->argc, config->argv);673 psArgumentRemove(argNum, argc, argv); 684 674 } 685 675 } … … 975 965 } 976 966 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); 967 psArray *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); 983 972 PS_ASSERT_STRING_NON_EMPTY(file, NULL); 984 973 PS_ASSERT_STRING_NON_EMPTY(list, NULL); … … 992 981 // maybe a comma-separated list of words 993 982 // each word may be a glob: "file*.fits" 994 if ((Narg = psArgumentGet (* config->argc, config->argv, file))) {983 if ((Narg = psArgumentGet (*argc, argv, file))) { 995 984 996 985 // 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); 1000 989 1001 990 // parse the word as a glob … … 1021 1010 1022 1011 // load the list from the supplied text file 1023 if ((Narg = psArgumentGet (* config->argc, config->argv, list))) {1012 if ((Narg = psArgumentGet (*argc, argv, list))) { 1024 1013 int nItems; 1025 1014 char line[1024]; // XXX limits the list lines to 1024 chars … … 1027 1016 char *filename; 1028 1017 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"); 1031 1020 if (f == NULL) { 1032 1021 psAbort("unable to open specified list file"); … … 1048 1037 } 1049 1038 } 1050 psArgumentRemove (Narg, config->argc, config->argv);1039 psArgumentRemove (Narg, argc, argv); 1051 1040 } 1052 1041 … … 1054 1043 } 1055 1044 1056 bool pmConfigFileSetsMD(psMetadata *metadata, pmConfig *config, const char *name,1045 bool pmConfigFileSetsMD(psMetadata *metadata, int *argc, char **argv, const char *name, 1057 1046 const char *file, const char *list) 1058 1047 { 1059 1048 PS_ASSERT_PTR_NON_NULL(metadata, false); 1060 PS_ASSERT_PTR_NON_NULL(config, false);1061 1049 PS_ASSERT_STRING_NON_EMPTY(name, NULL); 1062 1050 PS_ASSERT_STRING_NON_EMPTY(file, NULL); … … 1065 1053 psErrorClear(); // pmConfigFileSets may or may not call psError, so 1066 1054 // 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); 1068 1056 if (files->n == 0) { 1069 1057 // psError(PS_ERR_IO, false, "pmConfigFileSets failed to find %s in the argument list", name);
Note:
See TracChangeset
for help on using the changeset viewer.
