BOOL get_options(int argc, char *argv[]) { int i; char *bptr; for(i = 1; i < argc; i++) { if ((*argv[i] == '-') && (*(argv[i] + 1) == '-')) { if(TRUE == lslp_pattern_match(argv[i] + 2, "type=*", FALSE)) { bptr = argv[i] + 2; while (*bptr != '=') { bptr++; } bptr++; /* handle case where type is specified twice on the cmd line */ if (type != NULL) { free(type); } type = strdup(bptr); } else if ( TRUE == lslp_pattern_match(argv[i] + 2, "predicate=*", FALSE)) { bptr = argv[i] + 2; while (*bptr != '=') { bptr++; } bptr++; if (predicate != NULL) { free(predicate); } predicate = strdup(bptr); } else if (TRUE == lslp_pattern_match(argv[i] + 2, "scopes*", FALSE)) { bptr = argv[i] + 2; while (*bptr != '=') { bptr++; } bptr++; if (scopes != NULL) { free(scopes); } scopes = strdup(bptr); } else if ( TRUE == lslp_pattern_match(argv[i] + 2, "address*", FALSE)) { bptr = argv[i] + 2; while (*bptr != '=') { bptr++; } bptr++; if (addr != NULL) { free(addr); } addr = strdup(bptr); } else if (TRUE == lslp_pattern_match(argv[i] + 2, "port*", FALSE)) { bptr = argv[i] + 2; while (*bptr != '=') { bptr++; } bptr++; port = (int16)strtoul(bptr, NULL, 10); } else if ( TRUE == lslp_pattern_match(argv[i] + 2, "interface*", FALSE)) { bptr = argv[i] + 2; while (*bptr != '=') { bptr++; } bptr++; if (_interface != NULL) { free(_interface); } _interface = strdup(bptr); } else if ( TRUE == lslp_pattern_match(argv[i] + 2, "use_da=true*", FALSE)) { dir_agent = TRUE; } else if (TRUE == lslp_pattern_match(argv[i] + 2, "test*", FALSE)) { test = TRUE; } else if ( TRUE == lslp_pattern_match(argv[i] + 2, "converge=*", FALSE)) { bptr = argv[i] + 2; while (*bptr != '=') { bptr++; } bptr++; converge = (int16)strtoul(bptr, NULL, 10); } else if (TRUE == lslp_pattern_match(argv[i] + 2, "fs=*", FALSE)) { bptr = argv[i] + 2; while (*bptr != '=') { bptr++; } bptr++; fs = *bptr; parsable=TRUE; } else if (TRUE == lslp_pattern_match(argv[i] + 2, "rs=*", FALSE)) { bptr = argv[i] + 2; while (*bptr != '=') { bptr++; } bptr++; rs = *bptr; parsable=TRUE; } } } if( type == NULL ) { return FALSE; } return TRUE; }
BOOL get_options(int argc, char *argv[]) { int i; char *bptr; for(i = 1; i < argc; i++){ if((*argv[i] == '-') && (*(argv[i] + 1) == '-')) { if(TRUE == lslp_pattern_match(argv[i] + 2, "type=*", FALSE)) { bptr = argv[i] + 2; while(*bptr != '=') bptr++; bptr++; /* handle case where type is specified twice on the cmd line */ if(type != NULL) free(type); type = strdup(bptr); } else if(TRUE == lslp_pattern_match(argv[i] + 2, "url=*", FALSE)) { bptr = argv[i] + 2; while(*bptr != '=') bptr++; bptr++; if(url != NULL) free(url); url = strdup(bptr); } else if(TRUE == lslp_pattern_match(argv[i] + 2, "attributes=*", FALSE)) { bptr = argv[i] + 2; while(*bptr != '=') bptr++; bptr++; if(attrs != NULL) free(attrs); attrs = strdup(bptr); } else if(TRUE == lslp_pattern_match(argv[i] + 2, "address=*", FALSE)) { bptr = argv[i] + 2; while(*bptr != '=') bptr++; bptr++; if(addr != NULL) free(addr); addr = strdup(bptr); } else if(TRUE == lslp_pattern_match(argv[i] + 2, "scopes=*", FALSE)) { bptr = argv[i] + 2; while(*bptr != '=') bptr++; bptr++; if(scopes != NULL) free(scopes); scopes = strdup(bptr); } else if(TRUE == lslp_pattern_match(argv[i] + 2, "lifetime*", FALSE)) { bptr = argv[i] + 2; while(*bptr != '=') bptr++; bptr++; life = (uint16)strtoul(bptr, NULL, 10); } else if(TRUE == lslp_pattern_match(argv[i] + 2, "port=*", FALSE)) { bptr = argv[i] + 2; while(*bptr != '=') bptr++; bptr++; port = (uint16)strtoul(bptr, NULL, 10); } else if(TRUE == lslp_pattern_match(argv[i] + 2, "interface=*", FALSE)) { bptr = argv[i] + 2; while(*bptr != '=') bptr++; bptr++; if(iface != NULL) free(iface); iface = strdup(bptr); } else if(TRUE == lslp_pattern_match(argv[i] + 2, "daemon=true*", FALSE)) { should_listen = TRUE; } else if(TRUE == lslp_pattern_match(argv[i] + 2, "test*", FALSE)) { test = TRUE; } else if(TRUE == lslp_pattern_match(argv[i] + 2, "use_da=true*", FALSE)) { dir_agent = TRUE; } } } if( type == NULL || url == NULL || attrs == NULL ) return FALSE; return TRUE; }