This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/19226] New: about getopt_long
- From: "304702903 at qq dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Tue, 10 Nov 2015 13:14:06 +0000
- Subject: [Bug libc/19226] New: about getopt_long
- Auto-submitted: auto-generated
https://sourceware.org/bugzilla/show_bug.cgi?id=19226
Bug ID: 19226
Summary: about getopt_long
Product: glibc
Version: 2.17
Status: NEW
Severity: enhancement
Priority: P2
Component: libc
Assignee: unassigned at sourceware dot org
Reporter: 304702903 at qq dot com
CC: drepper.fsp at gmail dot com
Target Milestone: ---
centos/rhel 7.
man 3 getopt_long,there is a sample code
but getopt_long cant not find this bad command: "--" is invalid.
How can I detect "--" is invalid string? any advice?
[gg@wq test]$ ./getopt_long_man -c 1
option c with value '1'
[gg@wqtest]$ ./getopt_long_man -c 1 --
option c with value '1'
[gg@wqtest]$
[gg@wqtest]$
sample code from man page:
#include <stdio.h> /* for printf */
#include <stdlib.h> /* for exit */
#include <getopt.h>
int
main(int argc, char **argv)
{
int c;
int digit_optind = 0;
while (1) {
int this_option_optind = optind ? optind : 1;
int option_index = 0;
static struct option long_options[] = {
{"add", required_argument, 0, 0 },
{"append", no_argument, 0, 0 },
{"delete", required_argument, 0, 0 },
{"verbose", no_argument, 0, 0 },
{"create", required_argument, 0, 'c'},
{"file", required_argument, 0, 0 },
{0, 0, 0, 0 }
};
c = getopt_long(argc, argv, "abc:d:012",
long_options, &option_index);
if (c == -1)
break;
switch (c) {
case 0:
printf("option %s", long_options[option_index].name);
if (optarg)
printf(" with arg %s", optarg);
printf("\n");
break;
case '0':
case '1':
case '2':
if (digit_optind != 0 && digit_optind != this_option_optind)
printf("digits occur in two different argv-elements.\n");
digit_optind = this_option_optind;
printf("option %c\n", c);
break;
case 'a':
printf("option a\n");
break;
case 'b':
printf("option b\n");
break;
case 'c':
printf("option c with value '%s'\n", optarg);
break;
case 'd':
printf("option d with value '%s'\n", optarg);
break;
case '?':
break;
default:
printf("?? getopt returned character code 0%o ??\n", c);
}
}
if (optind < argc) {
printf("non-option ARGV-elements: ");
while (optind < argc)
printf("%s ", argv[optind++]);
printf("\n");
}
exit(EXIT_SUCCESS);
}
--
You are receiving this mail because:
You are on the CC list for the bug.