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 }