Changeset 6990 for trunk/ippTools/src/guidetoolConfig.c
- Timestamp:
- Apr 25, 2006, 5:06:03 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/guidetoolConfig.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/guidetoolConfig.c
r6981 r6990 7 7 #include "pxtools.h" 8 8 9 bool p1searchConfig(pxConfig *config, int argc, char **argv) { 9 // this function can not fail -- exits on error 10 11 pxConfig *p1searchConfig(pxConfig *config, int argc, char **argv) { 10 12 if (!config) { 11 13 config = pxConfigAlloc(); 12 14 } 13 15 14 if (! pmConfigRead(&config->site, &config->camera, &config->recipe, &argc, argv, RECIPE)) { 16 // setup site config 17 if (! pmConfigRead(&config->site, &config->camera, &config->recipe, 18 &argc, argv, RECIPE)) { 15 19 psError(PS_ERR_UNKNOWN, false, "Can't find site configuration!\n"); 16 20 exit(EXIT_FAILURE); 17 21 } 18 22 19 int N; 20 config->mode = PX_MODE_NONE; 21 if ((N = psArgumentGet (argc, argv, "-pending"))) { 22 psArgumentRemove (N, &argc, argv); 23 if (config->mode) { 24 psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); 25 } 26 config->mode = PX_MODE_PENDING; 27 } 28 if ((N = psArgumentGet (argc, argv, "-update"))) { 29 psArgumentRemove (N, &argc, argv); 30 if (config->mode) { 31 psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); 32 } 33 config->mode = PX_MODE_UPDATE; 34 } 35 36 // paul's argument parsing convention requires: -key value 37 // Parse other command-line arguments 23 // CLI options 24 // modes 38 25 psMetadata *args = psMetadataAlloc(); 39 26 psMetadataAddStr(args , PS_LIST_TAIL, "-pending", 0, 40 27 "examine pending image table, write ppImage output", ""); 41 psMetadataAddStr(args , PS_LIST_TAIL, "- update", 0,28 psMetadataAddStr(args , PS_LIST_TAIL, "-define", 0, 42 29 "update pending image table", ""); 43 44 30 45 31 // -pending search … … 56 42 "define class", ""); 57 43 44 // -define inputs 45 psMetadata *defineArgs = psMetadataAlloc(); 46 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-exp_id", 0, 47 "define class", ""); 48 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-filter", 0, 49 "define filter of interest", ""); 50 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-stat", 0, 51 "define URL", ""); 52 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-recipe", 0, 53 "define URL", ""); 54 psMetadataAddStr(defineArgs, PS_LIST_TAIL, "-mosiac", 0, 55 "define URL", ""); 58 56 59 // -update inputs 60 psMetadata *updateArgs = psMetadataAlloc(); 61 psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-exp_id", 0, 62 "define class", ""); 63 psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-filter", 0, 64 "define filter of interest", ""); 65 psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-stat", 0, 66 "define URL", ""); 67 psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-recipe", 0, 68 "define URL", ""); 69 psMetadataAddStr(updateArgs, PS_LIST_TAIL, "-mosiac", 0, 70 "define URL", ""); 57 // find which mode we're running under 58 int N = 0; 59 config->mode = PX_MODE_NONE; 60 if ((N = psArgumentGet (argc, argv, "-pending"))) { 61 psArgumentRemove (N, &argc, argv); 62 if (config->mode) { 63 psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); 64 } 65 config->mode = PX_MODE_PENDING; 66 } 67 if ((N = psArgumentGet (argc, argv, "-define"))) { 68 psArgumentRemove (N, &argc, argv); 69 if (config->mode) { 70 psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); 71 } 72 config->mode = PX_MODE_DEFINE; 73 } 74 75 // parse CLI for these options 76 psMetadata *argSet = NULL; 77 switch (config->mode) { 78 case PX_MODE_PENDING: 79 argSet = pendingArgs; 80 break; 81 case PX_MODE_DEFINE: 82 argSet = defineArgs; 83 break; 84 default: 85 argSet = args; 86 } 71 87 72 88 bool argErr = false; … … 74 90 argErr = true; 75 91 fprintf (stderr, "mode argument is required\n"); 76 } else if (! psArgumentParse(arg s, &argc, argv) || argc != 1) {92 } else if (! psArgumentParse(argSet, &argc, argv) || argc != 1) { 77 93 argErr = true; 78 94 fprintf (stderr, "error parsing arguments\n"); … … 80 96 81 97 if (argErr) { 82 printf("\nPan-STARRS Phase 0Search Tool\n");98 printf("\nPan-STARRS Phase 1 Search Tool\n"); 83 99 printf("Usage: %s <mode> [<options>]\n\n", argv[0]); 84 printf(" <mode> : -pending | - update\n\n");100 printf(" <mode> : -pending | -define\n\n"); 85 101 fprintf (stdout, "-pending "); 86 102 psArgumentHelp(pendingArgs); 87 fprintf (stdout, "- update ");88 psArgumentHelp( updateArgs);103 fprintf (stdout, "-define "); 104 psArgumentHelp(defineArgs); 89 105 psFree(args); 90 106 psFree(pendingArgs); 91 psFree( updateArgs);107 psFree(defineArgs); 92 108 exit(EXIT_FAILURE); 93 109 } 94 95 // XXX why is "" being returned when -[foo] isn't specified? 96 #define EMPTY_TO_NULL_STRING(var) \ 97 if (var != NULL && strcmp(var, "") == 0) { \ 98 var = NULL; \ 99 } 100 101 switch (config->mode) { 102 bool status; 103 case PX_MODE_PENDING: 104 // -exp_id 105 config->exp_id = psMetadataLookupStr(&status, args, "-exp_id"); 106 psMemIncrRefCounter(config->exp_id); 107 EMPTY_TO_NULL_STRING(config->exp_id); 108 // -inst 109 config->camera_name = psMetadataLookupStr(&status, args, "-inst"); 110 psMemIncrRefCounter(config->camera_name); 111 EMPTY_TO_NULL_STRING(config->camera_name); 112 // -telescope 113 config->camera_name = psMetadataLookupStr(&status, args, 114 "-telescope"); 115 psMemIncrRefCounter(config->telescope); 116 EMPTY_TO_NULL_STRING(config->telescope); 117 // -exp_type 118 config->class = psMetadataLookupStr(&status, args, "-exp_type"); 119 psMemIncrRefCounter(config->exp_type); 120 EMPTY_TO_NULL_STRING(config->exp_type); 121 // -class 122 config->class = psMetadataLookupStr(&status, args, "-class"); 123 psMemIncrRefCounter(config->class); 124 EMPTY_TO_NULL_STRING(config->class); 125 break; 126 case PX_MODE_UPDATE: 127 // -exp_id 128 config->exp_id = psMetadataLookupStr(&status, args, "-exp_id"); 129 psMemIncrRefCounter(config->exp_id); 130 EMPTY_TO_NULL_STRING(config->exp_id); 131 // -filter 132 config->filter = psMetadataLookupStr(&status, args, "-filter"); 133 psMemIncrRefCounter(config->filter); 134 EMPTY_TO_NULL_STRING(config->filter); 135 136 break; 137 default: 138 psAbort(argv[0], "invalid option (this should not happen)"); 139 } 140 110 141 111 psFree(args); 142 112 psFree(pendingArgs); 143 psFree( updateArgs);113 psFree(defineArgs); 144 114 115 // setup search criterion 116 #define addWhereStr(name) \ 117 if ((str = psMetadataLookupStr(&status, args, "-" #name))) { \ 118 if (!psMetadataAddStr(where, PS_LIST_TAIL, #name, 0, "==", str)) {\ 119 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \ 120 psFree(where); \ 121 exit(EXIT_FAILURE); \ 122 } \ 123 } 145 124 146 125 psMetadata *where = psMetadataAlloc(); 147 126 148 if (config->camera_name != NULL) { 149 if (!psMetadataAddStr(where, PS_LIST_TAIL, "camera", 0, "==", 150 config->camera_name)) { 127 { 128 psString str = NULL; 129 int n = 0; 130 bool status = false; 131 132 addWhereStr(exp_id); 133 if ((str = psMetadataLookupStr(&status, args, "-inst"))) { 134 if (!psMetadataAddStr(where, PS_LIST_TAIL, "camera", 0, "==", str)) { 151 135 psError(PS_ERR_UNKNOWN, false, "failed to add item camera"); 152 136 psFree(where); 153 return NULL;137 exit(EXIT_FAILURE); 154 138 } 155 139 } 156 if (config->filter != NULL) { 157 psMetadataAddStr(where, PS_LIST_TAIL, "filter", 0, "==", 158 config->filter); 140 addWhereStr(telescope); 141 addWhereStr(exp_type); 142 if ((n = psMetadataLookupStr(&status, args, "-imfiles"))) { 143 if (!psMetadataAddS32(where, PS_LIST_TAIL, "imfiles", 0, "==", n)) { 144 psError(PS_ERR_UNKNOWN, false, "failed to add item imfiles"); 145 psFree(where); 146 exit(EXIT_FAILURE); 147 } 159 148 } 160 if (config->exp_id != NULL) { 161 psMetadataAddStr(where, PS_LIST_TAIL, "exp_id", 0, "==", 162 config->exp_id); 163 } 164 if (config->class != NULL) { 165 psMetadataAddStr(where, PS_LIST_TAIL, "class", 0, "==", 166 config->class); 167 } 168 if (config->class_id != NULL) { 169 psMetadataAddStr(where, PS_LIST_TAIL, "class_id", 0, "==", 170 config->class_id); 171 } 172 173 /* 174 // psMetadataConfig does not support times yet 175 if (!psTimeIsZero(config->start) && !psTimeIsZero(config->stop)) { 176 psMetadataAddTime (where, PS_LIST_TAIL, "TIME_START", 0, "<", config->stop); 177 psMetadataAddTime (where, PS_LIST_TAIL, "TIME_STOP", 0, ">", config->start); 178 } 179 */ 149 addWhereStr(filter); 150 addWhereStr(stats); 151 addWhereStr(recipe); 152 } 180 153 181 154 if (where->list->n < 1) { … … 186 159 config->where = where; 187 160 188 189 // add the input and output images to the args list190 //psMetadataAddStr (args, PS_LIST_TAIL, "-output", 0, "Name of the output image", argv[1]);191 192 161 // define Database handle, if used 193 162 config->dbh = pmConfigDB(config->site); 194 163 195 return true;164 return config; 196 165 }
Note:
See TracChangeset
for help on using the changeset viewer.
