Changeset 7848 for trunk/ippTools/src/chiptoolConfig.c
- Timestamp:
- Jul 7, 2006, 5:40:03 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/ippTools/src/chiptoolConfig.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippTools/src/chiptoolConfig.c
r7037 r7848 6 6 7 7 #include "pxtools.h" 8 #include "p2search.h" 8 9 9 bool p2searchConfig(pxConfig *config, int argc, char **argv) { 10 // this function can not fail -- exits on error 11 pxConfig *p2searchConfig(pxConfig *config, int argc, char **argv) { 10 12 if (!config) { 11 13 config = pxConfigAlloc(); … … 14 16 config->modules = pmConfigRead(&argc, argv); 15 17 if (! config->modules) { 16 psError StackPrint(stderr, "Can't find site configuration!\n");17 exit(EXIT_FAILURE);18 psError(PS_ERR_UNKNOWN, false, "Can't find site configuration"); 19 goto FAIL; 18 20 } 19 21 20 // Parse other command-line arguments 21 psMetadata *arguments = psMetadataAlloc(); // The arguments, with default values 22 // -quick 23 psMetadata *quickArgs = psMetadataAlloc(); 24 25 // -define 26 psMetadata *defineArgs = psMetadataAlloc(); 22 27 23 int N; 24 config->mode = PX_MODE_NONE; 25 if ((N = psArgumentGet (argc, argv, "-quick"))) { 26 psArgumentRemove (N, &argc, argv); 27 if (config->mode) { 28 psAbort (argv[0], "only one mode selection is allowed"); 29 } 30 config->mode = PX_MODE_QUICK; 31 } 32 if ((N = psArgumentGet (argc, argv, "-define"))) { 33 psArgumentRemove (N, &argc, argv); 34 if (config->mode) { 35 psAbort (argv[0], "only one mode selection is allowed"); 36 } 37 config->mode = PX_MODE_DEFINE; 38 } 39 if ((N = psArgumentGet (argc, argv, "-pending"))) { 40 psArgumentRemove (N, &argc, argv); 41 if (config->mode) { 42 psAbort (argv[0], "only one mode selection is allowed"); 43 } 44 config->mode = PX_MODE_PENDING; 45 } 46 /* 47 if ((N = psArgumentGet (argc, argv, "-update"))) { 48 psArgumentRemove (N, &argc, argv); 49 if (config->mode) { 50 psAbort (argv[0], "only one mode selection is allowed"); 51 } 52 config->mode = PX_MODE_UPDATE; 53 } 54 */ 55 if ((N = psArgumentGet (argc, argv, "-done"))) { 56 psArgumentRemove (N, &argc, argv); 57 if (config->mode) { 58 psAbort (argv[0], "only one mode selection is allowed"); 59 } 60 config->mode = PX_MODE_DONE; 28 // -pending 29 psMetadata *pendingArgs = psMetadataAlloc(); 30 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-inst", 0, "define camera of interest", ""); 31 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-filter", 0, "define filter of interest", ""); 32 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-exp_id", 0, "define exposure ID", ""); 33 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-class", 0, "define class", ""); 34 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-class_id", 0, "define class ID", ""); 35 psMetadataAddStr(pendingArgs, PS_LIST_TAIL, "-uri", 0, "define URL", ""); 36 37 // -done 38 psMetadata *doneArgs = psMetadataAlloc(); 39 40 #define PXTOOL_MODE(option, modeval, argset) \ 41 { \ 42 int N = 0; \ 43 if ((N = psArgumentGet (argc, argv, option))) { \ 44 psArgumentRemove (N, &argc, argv); \ 45 if (config->mode) { \ 46 psError(PS_ERR_UNKNOWN, true, "only one mode selection is allowed"); \ 47 } \ 48 config->mode = modeval; \ 49 config->args = psMemIncrRefCounter(argset); \ 50 } \ 51 } 52 53 PXTOOL_MODE("-quick", P2SEARCH_MODE_QUICK, quickArgs); 54 PXTOOL_MODE("-define", P2SEARCH_MODE_DEFINE, defineArgs); 55 PXTOOL_MODE("-pending", P2SEARCH_MODE_PENDING, pendingArgs); 56 PXTOOL_MODE("-done", P2SEARCH_MODE_DONE, doneArgs); 57 58 bool argErr = false; 59 if (config->mode == P2SEARCH_MODE_NONE) { 60 argErr = true; 61 fprintf (stderr, "mode argument is required\n"); 62 } else if (! psArgumentParse(config->args, &argc, argv) || argc != 1) { 63 argErr = true; 64 fprintf (stderr, "error parsing arguments\n"); 61 65 } 62 66 63 // paul's argument parsing convention requires: -key value 64 psMetadataAddBool(arguments, PS_LIST_TAIL, "-quick", 0, "examine raw image table, write ppImage output", false); 65 psMetadataAddStr(arguments, PS_LIST_TAIL, "-define", 0, "examine raw image table, add to pending image table", ""); 66 psMetadataAddStr(arguments, PS_LIST_TAIL, "-pending", 0, "examine pending image table, write ppImage output", ""); 67 // psMetadataAddStr(arguments, PS_LIST_TAIL, "-update", 0, "update pending image table", ""); 68 psMetadataAddStr(arguments, PS_LIST_TAIL, "-done", 0, "mov image from pending to done table", ""); 69 // psMetadataAddStr(arguments, PS_LIST_TAIL, "-time", 0, "define time range of interest", ""); 70 psMetadataAddStr(arguments, PS_LIST_TAIL, "-inst", 0, "define camera of interest", ""); 71 psMetadataAddStr(arguments, PS_LIST_TAIL, "-filter", 0, "define filter of interest", ""); 72 psMetadataAddStr(arguments, PS_LIST_TAIL, "-exp_id", 0, "define exposure ID", ""); 73 psMetadataAddStr(arguments, PS_LIST_TAIL, "-class", 0, "define class", ""); 74 psMetadataAddStr(arguments, PS_LIST_TAIL, "-class_id", 0, "define class ID", ""); 75 psMetadataAddStr(arguments, PS_LIST_TAIL, "-uri", 0, "define URL", ""); 67 if (argErr) { 68 printf("\nPan-STARRS Phase 2 Search Tool\n\n"); 69 printf("Usage: %s [mode] [options]\n\n", argv[0]); 70 printf(" [mode] : -quick | -define | -pending | -done\n\n"); 71 fprintf (stdout, "-quick "); 72 psArgumentHelp(quickArgs); 73 psFree(quickArgs); 74 fprintf (stdout, "-define "); 75 psArgumentHelp(defineArgs); 76 psFree(defineArgs); 77 fprintf (stdout, "-pending "); 78 psArgumentHelp(pendingArgs); 79 psFree(pendingArgs); 80 fprintf (stdout, "-done "); 81 psArgumentHelp(doneArgs); 82 psFree(doneArgs); 76 83 77 if (config->mode == PX_MODE_NONE) { 78 fprintf (stderr, "search mode not specified\n"); 79 psArgumentHelp(arguments); 80 psFree(arguments); 81 exit(EXIT_FAILURE); 84 goto FAIL; 82 85 } 83 86 84 if (! psArgumentParse(arguments, &argc, argv) || argc != 1) { 85 printf("\nPan-STARRS Phase 2 Search Tool\n\n"); 86 printf("Usage: %s [mode] [options]\n\n", argv[0]); 87 printf(" [mode] : -quick | -define | -pending | -donee\n\n"); 88 psArgumentHelp(arguments); 89 psFree(arguments); 90 exit(EXIT_FAILURE); 87 psFree(quickArgs) 88 psFree(defineArgs) 89 psFree(pendingArgs) 90 psFree(doneArgs) 91 92 // setup search criterion 93 #define addWhereStr(name) \ 94 { \ 95 psString str = NULL; \ 96 bool status = false; \ 97 if ((str = psMetadataLookupStr(&status, config->args, "-" #name))) { \ 98 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, #name, 0, "==", str)) {\ 99 psError(PS_ERR_UNKNOWN, false, "failed to add item " #name); \ 100 goto FAIL; \ 101 } \ 102 } \ 103 } 104 105 106 107 // generate SQL where claus 108 config->where = psMetadataAlloc(); 109 110 addWhereStr(exp_id); 111 // convert '-inst' to 'camera' 112 { 113 psString str = NULL; 114 bool status = false; 115 if ((str = psMetadataLookupStr(&status, config->args, "-inst"))) { 116 if (!psMetadataAddStr(config->where, PS_LIST_TAIL, "camera", 0, "==", str)) { 117 psError(PS_ERR_UNKNOWN, false, "failed to add item camera"); 118 goto FAIL; 119 } 120 } 91 121 } 92 122 93 bool status;94 config->camera_name = psMetadataLookupStr(&status, arguments,95 "-inst");96 config->exp_id = psMetadataLookupStr(&status, arguments, "-exp_id");97 config->class = psMetadataLookupStr(&status, arguments, "-class");98 config->class_id = psMetadataLookupStr(&status, arguments,99 "-class_id");100 config->uri = psMetadataLookupStr(&status, arguments, "-uri");101 123 102 // XXX why is "" being returned when -[foo] isn't specified? 103 #define EMPTY_TO_NULL_STRING(var) \ 104 if (strcmp(var, "") == 0) { \ 105 var = NULL; \ 106 } 107 108 EMPTY_TO_NULL_STRING(config->camera_name); 109 EMPTY_TO_NULL_STRING(config->exp_id); 110 EMPTY_TO_NULL_STRING(config->class); 111 EMPTY_TO_NULL_STRING(config->class_id); 112 EMPTY_TO_NULL_STRING(config->uri); 113 114 psMetadata *where = psMetadataAlloc(); 115 116 if (config->camera_name != NULL) { 117 if (!psMetadataAddStr(where, PS_LIST_TAIL, "camera", 0, "==", 118 config->camera_name)) { 119 psError(PS_ERR_UNKNOWN, false, "failed to add item camera"); 120 psFree(where); 121 return NULL; 122 } 123 } 124 if (config->filter != NULL) { 125 psMetadataAddStr(where, PS_LIST_TAIL, "filter", 0, "==", 126 config->filter); 127 } 128 if (config->exp_id != NULL) { 129 psMetadataAddStr(where, PS_LIST_TAIL, "exp_id", 0, "==", 130 config->exp_id); 131 } 132 if (config->class != NULL) { 133 psMetadataAddStr(where, PS_LIST_TAIL, "class", 0, "==", 134 config->class); 135 } 136 if (config->class_id != NULL) { 137 psMetadataAddStr(where, PS_LIST_TAIL, "class_id", 0, "==", 138 config->class_id); 139 } 124 addWhereStr(filter); 125 addWhereStr(class); 126 addWhereStr(class_id); 140 127 141 128 /* … … 147 134 */ 148 135 149 if ( where->list->n < 1) {150 psFree( where);151 where = NULL;136 if (config->where->list->n < 1) { 137 psFree(config->where); 138 config->where = NULL; 152 139 } 153 154 config->where = where;155 156 157 // add the input and output images to the arguments list158 //psMetadataAddStr (arguments, PS_LIST_TAIL, "-output", 0, "Name of the output image", argv[1]);159 140 160 141 // define Database handle, if used … … 162 143 if (!config->dbh) { 163 144 psError(PS_ERR_UNKNOWN, false, "Can't configure database"); 164 exit(EXIT_FAILURE);145 goto FAIL; 165 146 } 166 147 167 return true; 148 // save argv/argc 149 config->argv = argv; 150 config->argc = argc; 151 152 return config; 153 154 FAIL: 155 psFree(config); 156 pmConfigDone(); 157 psLibFinalize(); 158 exit(EXIT_FAILURE); 168 159 }
Note:
See TracChangeset
for help on using the changeset viewer.
