This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Shouldn't getopt_long() return : here?

Hello, consider this C program and its accompanying test script:

#include <stdio.h>
#include <getopt.h>

static void handle_args(int, char **);

main(int argc, char **argv)
   handle_args(argc, argv);

   return 0;


static void
handle_args(int argc, char **argv)
   const struct option long_options[] =
      {"option_with_argument", REQUIRES_ARGUMENT, NULL, 0},
      {NULL, 0, NULL, 0},

   const char *short_options = "";

   int c = 0;

   while((c = getopt_long(argc, argv, short_options, long_options, NULL)) 
!= -1)
         case ':':
            printf("Missing parameter.\n");

         case '?':
            printf("Unknown option.\n");


echo "Testing with parameter --option_with_argument=4711"
./getopt_long_problem --option_with_argument=4711
echo -e "\nTesting with parameter --option_with_argument"
./getopt_long_problem --option_with_argument
echo -e "\nTesting with parameter --unknown_option"
./getopt_long_problem --unknown_option

The output when I run the script is:
$ ./
Testing with parameter --option_with_argument=4711

Testing with parameter --option_with_argument
getopt_long_problem: option requires an argument -- option_with_argument
Unknown option.

Testing with parameter --unknown_option
getopt_long_problem: unknown option -- unknown_option
Unknown option.

As you can see, getopt_long() returns '?' for the case where the option 
requires arguments and none was supplied, I was under the impression that it 
should return ':' for that case and '?' for unknown options (it prints the 
correct diagnostic, though). Is this a bug in the implementation of 
getopt_long() that Cygwin comes with or are the docs I have read simply not 
applicable to Cygwins implementation?

/ Mikael 

Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]