Mercurial > hg > index.cgi
comparison lwlib/lw_cmdline.c @ 52:51c840679a0e
Fixed off by one bug parsing long options
author | lost@l-w.ca |
---|---|
date | Tue, 05 Apr 2011 21:48:22 -0600 |
parents | a5d4693483af |
children | 2077b755b8b4 |
comparison
equal
deleted
inserted
replaced
51:fd1ecc5d6e69 | 52:51c840679a0e |
---|---|
411 goto do_usage; | 411 goto do_usage; |
412 if (strcmp(argv[i], "--version") == 0) | 412 if (strcmp(argv[i], "--version") == 0) |
413 goto do_version; | 413 goto do_version; |
414 /* look up name */ | 414 /* look up name */ |
415 | 415 |
416 fprintf(stderr, "option string: %s\n", argv[i]); | |
416 for (j = 2; argv[i][j] && argv[i][j] != '='; j++) | 417 for (j = 2; argv[i][j] && argv[i][j] != '='; j++) |
417 /* do nothing */ ; | 418 /* do nothing */ ; |
418 tstr = lw_alloc(j - 1); | 419 tstr = lw_alloc(j - 1); |
419 strncpy(tstr, argv[i] + 2, j - 2); | 420 strncpy(tstr, argv[i] + 2, j - 2); |
420 tstr[j - 1] = 0; | 421 tstr[j - 2] = 0; |
421 if (argv[i][j] == '=') | 422 if (argv[i][j] == '=') |
422 j++; | 423 j++; |
423 cch = j; | 424 cch = j; |
424 | 425 fprintf(stderr, "Option: %s, Arg: %s\n", tstr, argv[i]+j); |
425 for (j = 0; parser -> options[j].name; j++) | 426 for (j = 0; parser -> options[j].name; j++) |
426 { | 427 { |
427 if (strcmp(parser -> options[j].name, tstr) == 0) | 428 if (strcmp(parser -> options[j].name, tstr) == 0) |
428 break; | 429 break; |
429 } | 430 } |