Reformat all code using astyle.
[tinc] / src / getopt.c
index 273a000..f84562c 100644 (file)
@@ -4,7 +4,7 @@
    before changing it!
 
    Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
-       Free Software Foundation, Inc.
+        Free Software Foundation, Inc.
 
 NOTE: The canonical source of this file is maintained with the GNU C Library.
 Bugs can be reported to bug-glibc@prep.ai.mit.edu.
@@ -69,12 +69,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 /* This needs to come after some library #include
    to get GNU_LIBRARY defined.  */
-#ifdef GNU_LIBRARY
+#ifdef  GNU_LIBRARY
 /* Don't include stdlib.h for non-GNU C libraries because some of them
    contain conflicting prototypes for getopt.  */
 #include <stdlib.h>
 #include <unistd.h>
-#endif /* GNU C library.  */
+#endif  /* GNU C library.  */
 
 #ifdef VMS
 #include <unixlib.h>
@@ -183,40 +183,41 @@ int optopt = '?';
    of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
    `--' can cause `getopt' to return -1 with `optind' != ARGC.  */
 
-static enum
-{
-  REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+static enum {
+       REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
 } ordering;
 
 /* Value of POSIXLY_CORRECT environment variable.  */
 static char *posixly_correct;
 \f
-#ifdef GNU_LIBRARY
+#ifdef  GNU_LIBRARY
 /* We want to avoid inclusion of string.h with non-GNU libraries
    because there are many ways it can cause trouble.
    On some systems, it contains special magic macros that don't work
    in GCC.  */
 #include <string.h>
-#define        my_index        strchr
+#define my_index        strchr
 #else
 
 /* Avoid depending on library functions or files
    whose names are inconsistent.  */
 
-char *getenv ();
+char *getenv();
 
 static char *
-my_index (str, chr)
-     const char *str;
-     int chr;
+my_index(str, chr)
+const char *str;
+int chr;
 {
-  while (*str)
-    {
-      if (*str == chr)
-       return (char *) str;
-      str++;
-    }
-  return 0;
+       while(*str) {
+               if(*str == chr) {
+                       return (char *) str;
+               }
+
+               str++;
+       }
+
+       return 0;
 }
 
 /* If using GCC, we can safely declare strlen this way.
@@ -227,7 +228,7 @@ my_index (str, chr)
 #if !defined (STDC) || !STDC
 /* gcc with -traditional declares the built-in strlen to return int,
    and has done so at least since version 2.4.5. -- rms.  */
-extern int strlen (const char *);
+extern int strlen(const char *);
 #endif /* not STDC */
 #endif /* GNUC */
 
@@ -261,26 +262,25 @@ extern pid_t libc_pid;
    is valid for the getopt call we must make sure that the ARGV passed
    to getopt is that one passed to the process.  */
 static void
-__attribute__ ((__unused__))
-store_args_and_env (int argc, char *const *argv)
-{
-  /* XXX This is no good solution.  We should rather copy the args so
-     that we can compare them later.  But we must not use malloc(3).  */
-  original_argc = argc;
-  original_argv = argv;
+__attribute__((__unused__))
+store_args_and_env(int argc, char *const *argv) {
+       /* XXX This is no good solution.  We should rather copy the args so
+          that we can compare them later.  But we must not use malloc(3).  */
+       original_argc = argc;
+       original_argv = argv;
 }
-text_set_element (libc_subinit, store_args_and_env);
+text_set_element(libc_subinit, store_args_and_env);
 
 # define SWAP_FLAGS(ch1, ch2) \
-  if (nonoption_flags_len > 0)                                               \
-    {                                                                        \
-      char tmp = getopt_nonoption_flags[ch1];                        \
-      getopt_nonoption_flags[ch1] = getopt_nonoption_flags[ch2];             \
-      getopt_nonoption_flags[ch2] = tmp;                                     \
-    }
-#else  /* !_LIBC */
+       if (nonoption_flags_len > 0)                                                \
+       {                                                                         \
+               char tmp = getopt_nonoption_flags[ch1];                         \
+               getopt_nonoption_flags[ch1] = getopt_nonoption_flags[ch2];              \
+               getopt_nonoption_flags[ch2] = tmp;                                      \
+       }
+#else   /* !_LIBC */
 # define SWAP_FLAGS(ch1, ch2)
-#endif /* _LIBC */
+#endif  /* _LIBC */
 
 /* Exchange two adjacent subsequences of ARGV.
    One subsequence is elements [first_nonopt,last_nonopt)
@@ -292,161 +292,158 @@ text_set_element (libc_subinit, store_args_and_env);
    the new indices of the non-options in ARGV after they are moved.  */
 
 #if defined (STDC) && STDC
-static void exchange (char **);
+static void exchange(char **);
 #endif
 
 static void
-exchange (argv)
-     char **argv;
+exchange(argv)
+char **argv;
 {
-  int bottom = first_nonopt;
-  int middle = last_nonopt;
-  int top = optind;
-  char *tem;
+       int bottom = first_nonopt;
+       int middle = last_nonopt;
+       int top = optind;
+       char *tem;
 
-  /* Exchange the shorter segment with the far end of the longer segment.
-     That puts the shorter segment into the right place.
-     It leaves the longer segment in the right place overall,
-     but it consists of two parts that need to be swapped next.  */
+       /* Exchange the shorter segment with the far end of the longer segment.
+          That puts the shorter segment into the right place.
+          It leaves the longer segment in the right place overall,
+          but it consists of two parts that need to be swapped next.  */
 
 #ifdef _LIBC
-  /* First make sure the handling of the `getopt_nonoption_flags'
-     string can work normally.  Our top argument must be in the range
-     of the string.  */
-  if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
-    {
-      /* We must extend the array.  The user plays games with us and
-        presents new arguments.  */
-      char *new_str = malloc (top + 1);
-      if (new_str == NULL)
-       nonoption_flags_len = nonoption_flags_max_len = 0;
-      else
-       {
-         memcpy (new_str, getopt_nonoption_flags, nonoption_flags_max_len);
-         memset (&new_str[nonoption_flags_max_len], '\0',
-                 top + 1 - nonoption_flags_max_len);
-         nonoption_flags_max_len = top + 1;
-         getopt_nonoption_flags = new_str;
+
+       /* First make sure the handling of the `getopt_nonoption_flags'
+          string can work normally.  Our top argument must be in the range
+          of the string.  */
+       if(nonoption_flags_len > 0 && top >= nonoption_flags_max_len) {
+               /* We must extend the array.  The user plays games with us and
+                presents new arguments.  */
+               char *new_str = malloc(top + 1);
+
+               if(new_str == NULL) {
+                       nonoption_flags_len = nonoption_flags_max_len = 0;
+               } else {
+                       memcpy(new_str, getopt_nonoption_flags, nonoption_flags_max_len);
+                       memset(&new_str[nonoption_flags_max_len], '\0',
+                              top + 1 - nonoption_flags_max_len);
+                       nonoption_flags_max_len = top + 1;
+                       getopt_nonoption_flags = new_str;
+               }
        }
-    }
+
 #endif
 
-  while (top > middle && middle > bottom)
-    {
-      if (top - middle > middle - bottom)
-       {
-         /* Bottom segment is the short one.  */
-         int len = middle - bottom;
-         register int i;
-
-         /* Swap it with the top part of the top segment.  */
-         for (i = 0; i < len; i++)
-           {
-             tem = argv[bottom + i];
-             argv[bottom + i] = argv[top - (middle - bottom) + i];
-             argv[top - (middle - bottom) + i] = tem;
-             SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
-           }
-         /* Exclude the moved bottom segment from further swapping.  */
-         top -= len;
-       }
-      else
-       {
-         /* Top segment is the short one.  */
-         int len = top - middle;
-         register int i;
-
-         /* Swap it with the bottom part of the bottom segment.  */
-         for (i = 0; i < len; i++)
-           {
-             tem = argv[bottom + i];
-             argv[bottom + i] = argv[middle + i];
-             argv[middle + i] = tem;
-             SWAP_FLAGS (bottom + i, middle + i);
-           }
-         /* Exclude the moved top segment from further swapping.  */
-         bottom += len;
+       while(top > middle && middle > bottom) {
+               if(top - middle > middle - bottom) {
+                       /* Bottom segment is the short one.  */
+                       int len = middle - bottom;
+                       register int i;
+
+                       /* Swap it with the top part of the top segment.  */
+                       for(i = 0; i < len; i++) {
+                               tem = argv[bottom + i];
+                               argv[bottom + i] = argv[top - (middle - bottom) + i];
+                               argv[top - (middle - bottom) + i] = tem;
+                               SWAP_FLAGS(bottom + i, top - (middle - bottom) + i);
+                       }
+
+                       /* Exclude the moved bottom segment from further swapping.  */
+                       top -= len;
+               } else {
+                       /* Top segment is the short one.  */
+                       int len = top - middle;
+                       register int i;
+
+                       /* Swap it with the bottom part of the bottom segment.  */
+                       for(i = 0; i < len; i++) {
+                               tem = argv[bottom + i];
+                               argv[bottom + i] = argv[middle + i];
+                               argv[middle + i] = tem;
+                               SWAP_FLAGS(bottom + i, middle + i);
+                       }
+
+                       /* Exclude the moved top segment from further swapping.  */
+                       bottom += len;
+               }
        }
-    }
 
-  /* Update records for the slots the non-options now occupy.  */
+       /* Update records for the slots the non-options now occupy.  */
 
-  first_nonopt += (optind - last_nonopt);
-  last_nonopt = optind;
+       first_nonopt += (optind - last_nonopt);
+       last_nonopt = optind;
 }
 
 /* Initialize the internal data when the first call is made.  */
 
 #if defined (STDC) && STDC
-static const char *_getopt_initialize (int, char *const *, const char *);
+static const char *_getopt_initialize(int, char *const *, const char *);
 #endif
 static const char *
-_getopt_initialize (argc, argv, optstring)
-     int argc;
-     char *const *argv;
-     const char *optstring;
+_getopt_initialize(argc, argv, optstring)
+int argc;
+char *const *argv;
+const char *optstring;
 {
-  /* Start processing options with ARGV-element 1 (since ARGV-element 0
-     is the program name); the sequence of previously skipped
-     non-option ARGV-elements is empty.  */
+       /* Start processing options with ARGV-element 1 (since ARGV-element 0
+          is the program name); the sequence of previously skipped
+          non-option ARGV-elements is empty.  */
 
-  first_nonopt = last_nonopt = optind;
+       first_nonopt = last_nonopt = optind;
 
-  nextchar = NULL;
+       nextchar = NULL;
 
-  posixly_correct = getenv ("POSIXLY_CORRECT");
+       posixly_correct = getenv("POSIXLY_CORRECT");
 
-  /* Determine how to handle the ordering of options and nonoptions.  */
+       /* Determine how to handle the ordering of options and nonoptions.  */
 
-  if (optstring[0] == '-')
-    {
-      ordering = RETURN_IN_ORDER;
-      ++optstring;
-    }
-  else if (optstring[0] == '+')
-    {
-      ordering = REQUIRE_ORDER;
-      ++optstring;
-    }
-  else if (posixly_correct != NULL)
-    ordering = REQUIRE_ORDER;
-  else
-    ordering = PERMUTE;
+       if(optstring[0] == '-') {
+               ordering = RETURN_IN_ORDER;
+               ++optstring;
+       } else if(optstring[0] == '+') {
+               ordering = REQUIRE_ORDER;
+               ++optstring;
+       } else if(posixly_correct != NULL) {
+               ordering = REQUIRE_ORDER;
+       } else {
+               ordering = PERMUTE;
+       }
 
 #ifdef _LIBC
-  if (posixly_correct == NULL
-      && argc == original_argc && argv == original_argv)
-    {
-      if (nonoption_flags_max_len == 0)
-       {
-         if (getopt_nonoption_flags == NULL
-             || getopt_nonoption_flags[0] == '\0')
-           nonoption_flags_max_len = -1;
-         else
-           {
-             const char *orig_str = getopt_nonoption_flags;
-             int len = nonoption_flags_max_len = strlen (orig_str);
-             if (nonoption_flags_max_len < argc)
-               nonoption_flags_max_len = argc;
-             getopt_nonoption_flags =
-               (char *) malloc (nonoption_flags_max_len);
-             if (getopt_nonoption_flags == NULL)
-               nonoption_flags_max_len = -1;
-             else
-               {
-                 memcpy (getopt_nonoption_flags, orig_str, len);
-                 memset (&getopt_nonoption_flags[len], '\0',
-                         nonoption_flags_max_len - len);
+
+       if(posixly_correct == NULL
+                       && argc == original_argc && argv == original_argv) {
+               if(nonoption_flags_max_len == 0) {
+                       if(getopt_nonoption_flags == NULL
+                                       || getopt_nonoption_flags[0] == '\0') {
+                               nonoption_flags_max_len = -1;
+                       } else {
+                               const char *orig_str = getopt_nonoption_flags;
+                               int len = nonoption_flags_max_len = strlen(orig_str);
+
+                               if(nonoption_flags_max_len < argc) {
+                                       nonoption_flags_max_len = argc;
+                               }
+
+                               getopt_nonoption_flags =
+                                       (char *) malloc(nonoption_flags_max_len);
+
+                               if(getopt_nonoption_flags == NULL) {
+                                       nonoption_flags_max_len = -1;
+                               } else {
+                                       memcpy(getopt_nonoption_flags, orig_str, len);
+                                       memset(&getopt_nonoption_flags[len], '\0',
+                                              nonoption_flags_max_len - len);
+                               }
+                       }
                }
-           }
+
+               nonoption_flags_len = nonoption_flags_max_len;
+       } else {
+               nonoption_flags_len = 0;
        }
-      nonoption_flags_len = nonoption_flags_max_len;
-    }
-  else
-    nonoption_flags_len = 0;
+
 #endif
 
-  return optstring;
+       return optstring;
 }
 \f
 /* Scan elements of ARGV (whose length is ARGC) for option characters
@@ -506,474 +503,476 @@ _getopt_initialize (argc, argv, optstring)
    long-named options.  */
 
 int
-_getopt_internal (argc, argv, optstring, longopts, longind, long_only)
-     int argc;
-     char *const *argv;
-     const char *optstring;
-     const struct option *longopts;
-     int *longind;
-     int long_only;
+_getopt_internal(argc, argv, optstring, longopts, longind, long_only)
+int argc;
+char *const *argv;
+const char *optstring;
+const struct option *longopts;
+int *longind;
+int long_only;
 {
-  optarg = NULL;
-
-  if (optind == 0 || !getopt_initialized)
-    {
-      if (optind == 0)
-       optind = 1;     /* Don't scan ARGV[0], the program name.  */
-      optstring = _getopt_initialize (argc, argv, optstring);
-      getopt_initialized = 1;
-    }
-
-  /* Test whether ARGV[optind] points to a non-option argument.
-     Either it does not have option syntax, or there is an environment flag
-     from the shell indicating it is not an option.  The later information
-     is only used when the used in the GNU libc.  */
+       optarg = NULL;
+
+       if(optind == 0 || !getopt_initialized) {
+               if(optind == 0) {
+                       optind = 1;        /* Don't scan ARGV[0], the program name.  */
+               }
+
+               optstring = _getopt_initialize(argc, argv, optstring);
+               getopt_initialized = 1;
+       }
+
+       /* Test whether ARGV[optind] points to a non-option argument.
+          Either it does not have option syntax, or there is an environment flag
+          from the shell indicating it is not an option.  The later information
+          is only used when the used in the GNU libc.  */
 #ifdef _LIBC
-#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'       \
-                    || (optind < nonoption_flags_len                         \
-                        && getopt_nonoption_flags[optind] == '1'))
+#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0'        \
+                     || (optind < nonoption_flags_len                         \
+                         && getopt_nonoption_flags[optind] == '1'))
 #else
 #define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
 #endif
 
-  if (nextchar == NULL || *nextchar == '\0')
-    {
-      /* Advance to the next ARGV-element.  */
+       if(nextchar == NULL || *nextchar == '\0') {
+               /* Advance to the next ARGV-element.  */
 
-      /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
-        moved back by the user (who may also have changed the arguments).  */
-      if (last_nonopt > optind)
-       last_nonopt = optind;
-      if (first_nonopt > optind)
-       first_nonopt = optind;
+               /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been
+                moved back by the user (who may also have changed the arguments).  */
+               if(last_nonopt > optind) {
+                       last_nonopt = optind;
+               }
 
-      if (ordering == PERMUTE)
-       {
-         /* If we have just processed some options following some non-options,
-            exchange them so that the options come first.  */
+               if(first_nonopt > optind) {
+                       first_nonopt = optind;
+               }
 
-         if (first_nonopt != last_nonopt && last_nonopt != optind)
-           exchange ((char **) argv);
-         else if (last_nonopt != optind)
-           first_nonopt = optind;
+               if(ordering == PERMUTE) {
+                       /* If we have just processed some options following some non-options,
+                          exchange them so that the options come first.  */
 
-         /* Skip any additional non-options
-            and extend the range of non-options previously skipped.  */
+                       if(first_nonopt != last_nonopt && last_nonopt != optind) {
+                               exchange((char **) argv);
+                       } else if(last_nonopt != optind) {
+                               first_nonopt = optind;
+                       }
 
-         while (optind < argc && NONOPTION_P)
-           optind++;
-         last_nonopt = optind;
-       }
+                       /* Skip any additional non-options
+                          and extend the range of non-options previously skipped.  */
 
-      /* The special ARGV-element `--' means premature end of options.
-        Skip it like a null option,
-        then exchange with previous non-options as if it were an option,
-        then skip everything else like a non-option.  */
+                       while(optind < argc && NONOPTION_P) {
+                               optind++;
+                       }
 
-      if (optind != argc && !strcmp (argv[optind], "--"))
-       {
-         optind++;
+                       last_nonopt = optind;
+               }
 
-         if (first_nonopt != last_nonopt && last_nonopt != optind)
-           exchange ((char **) argv);
-         else if (first_nonopt == last_nonopt)
-           first_nonopt = optind;
-         last_nonopt = argc;
+               /* The special ARGV-element `--' means premature end of options.
+                Skip it like a null option,
+                then exchange with previous non-options as if it were an option,
+                then skip everything else like a non-option.  */
 
-         optind = argc;
-       }
+               if(optind != argc && !strcmp(argv[optind], "--")) {
+                       optind++;
 
-      /* If we have done all the ARGV-elements, stop the scan
-        and back over any non-options that we skipped and permuted.  */
+                       if(first_nonopt != last_nonopt && last_nonopt != optind) {
+                               exchange((char **) argv);
+                       } else if(first_nonopt == last_nonopt) {
+                               first_nonopt = optind;
+                       }
 
-      if (optind == argc)
-       {
-         /* Set the next-arg-index to point at the non-options
-            that we previously skipped, so the caller will digest them.  */
-         if (first_nonopt != last_nonopt)
-           optind = first_nonopt;
-         return -1;
-       }
+                       last_nonopt = argc;
 
-      /* If we have come to a non-option and did not permute it,
-        either stop the scan or describe it to the caller and pass it by.  */
+                       optind = argc;
+               }
 
-      if (NONOPTION_P)
-       {
-         if (ordering == REQUIRE_ORDER)
-           return -1;
-         optarg = argv[optind++];
-         return 1;
-       }
+               /* If we have done all the ARGV-elements, stop the scan
+                and back over any non-options that we skipped and permuted.  */
 
-      /* We have found another option-ARGV-element.
-        Skip the initial punctuation.  */
-
-      nextchar = (argv[optind] + 1
-                 + (longopts != NULL && argv[optind][1] == '-'));
-    }
-
-  /* Decode the current option-ARGV-element.  */
-
-  /* Check whether the ARGV-element is a long option.
-
-     If long_only and the ARGV-element has the form "-f", where f is
-     a valid short option, don't consider it an abbreviated form of
-     a long option that starts with f.  Otherwise there would be no
-     way to give the -f short option.
-
-     On the other hand, if there's a long option "fubar" and
-     the ARGV-element is "-fu", do consider that an abbreviation of
-     the long option, just like "--fu", and not "-f" with arg "u".
-
-     This distinction seems to be the most useful approach.  */
-
-  if (longopts != NULL
-      && (argv[optind][1] == '-'
-         || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1])))))
-    {
-      char *nameend;
-      const struct option *p;
-      const struct option *pfound = NULL;
-      int exact = 0;
-      int ambig = 0;
-      int indfound = -1;
-      int option_index;
-
-      for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
-       /* Do nothing.  */ ;
-
-      /* Test all long options for either exact match
-        or abbreviated matches.  */
-      for (p = longopts, option_index = 0; p->name; p++, option_index++)
-       if (!strncmp (p->name, nextchar, nameend - nextchar))
-         {
-           if ((unsigned int) (nameend - nextchar)
-               == (unsigned int) strlen (p->name))
-             {
-               /* Exact match found.  */
-               pfound = p;
-               indfound = option_index;
-               exact = 1;
-               break;
-             }
-           else if (pfound == NULL)
-             {
-               /* First nonexact match found.  */
-               pfound = p;
-               indfound = option_index;
-             }
-           else
-             /* Second or later nonexact match found.  */
-             ambig = 1;
-         }
-
-      if (ambig && !exact)
-       {
-         if (opterr)
-           fprintf (stderr, "%s: option `%s' is ambiguous\n",
-                    argv[0], argv[optind]);
-         nextchar += strlen (nextchar);
-         optind++;
-         optopt = 0;
-         return '?';
+               if(optind == argc) {
+                       /* Set the next-arg-index to point at the non-options
+                          that we previously skipped, so the caller will digest them.  */
+                       if(first_nonopt != last_nonopt) {
+                               optind = first_nonopt;
+                       }
+
+                       return -1;
+               }
+
+               /* If we have come to a non-option and did not permute it,
+                either stop the scan or describe it to the caller and pass it by.  */
+
+               if(NONOPTION_P) {
+                       if(ordering == REQUIRE_ORDER) {
+                               return -1;
+                       }
+
+                       optarg = argv[optind++];
+                       return 1;
+               }
+
+               /* We have found another option-ARGV-element.
+                Skip the initial punctuation.  */
+
+               nextchar = (argv[optind] + 1
+                           + (longopts != NULL && argv[optind][1] == '-'));
        }
 
-      if (pfound != NULL)
-       {
-         option_index = indfound;
-         optind++;
-         if (*nameend)
-           {
-             /* Don't test has_arg with >, because some C compilers don't
-                allow it to be used on enums.  */
-             if (pfound->has_arg)
-               optarg = nameend + 1;
-             else
-               {
-                 if (opterr)
-                   {
-                    if (argv[optind - 1][1] == '-')
-                     /* --option */
-                     fprintf (stderr,
-                      "%s: option `--%s' doesn't allow an argument\n",
-                      argv[0], pfound->name);
-                    else
-                     /* +option or -option */
-                     fprintf (stderr,
-                      "%s: option `%c%s' doesn't allow an argument\n",
-                      argv[0], argv[optind - 1][0], pfound->name);
-                   }
-
-                 nextchar += strlen (nextchar);
-
-                 optopt = pfound->val;
-                 return '?';
+       /* Decode the current option-ARGV-element.  */
+
+       /* Check whether the ARGV-element is a long option.
+
+          If long_only and the ARGV-element has the form "-f", where f is
+          a valid short option, don't consider it an abbreviated form of
+          a long option that starts with f.  Otherwise there would be no
+          way to give the -f short option.
+
+          On the other hand, if there's a long option "fubar" and
+          the ARGV-element is "-fu", do consider that an abbreviation of
+          the long option, just like "--fu", and not "-f" with arg "u".
+
+          This distinction seems to be the most useful approach.  */
+
+       if(longopts != NULL
+                       && (argv[optind][1] == '-'
+                           || (long_only && (argv[optind][2] || !my_index(optstring, argv[optind][1]))))) {
+               char *nameend;
+               const struct option *p;
+               const struct option *pfound = NULL;
+               int exact = 0;
+               int ambig = 0;
+               int indfound = -1;
+               int option_index;
+
+               for(nameend = nextchar; *nameend && *nameend != '='; nameend++)
+                       /* Do nothing.  */ ;
+
+               /* Test all long options for either exact match
+                or abbreviated matches.  */
+               for(p = longopts, option_index = 0; p->name; p++, option_index++)
+                       if(!strncmp(p->name, nextchar, nameend - nextchar)) {
+                               if((unsigned int)(nameend - nextchar)
+                                               == (unsigned int) strlen(p->name)) {
+                                       /* Exact match found.  */
+                                       pfound = p;
+                                       indfound = option_index;
+                                       exact = 1;
+                                       break;
+                               } else if(pfound == NULL) {
+                                       /* First nonexact match found.  */
+                                       pfound = p;
+                                       indfound = option_index;
+                               } else
+                                       /* Second or later nonexact match found.  */
+                               {
+                                       ambig = 1;
+                               }
+                       }
+
+               if(ambig && !exact) {
+                       if(opterr)
+                               fprintf(stderr, "%s: option `%s' is ambiguous\n",
+                                       argv[0], argv[optind]);
+
+                       nextchar += strlen(nextchar);
+                       optind++;
+                       optopt = 0;
+                       return '?';
                }
-           }
-         else if (pfound->has_arg == 1)
-           {
-             if (optind < argc)
-               optarg = argv[optind++];
-             else
-               {
-                 if (opterr)
-                   fprintf (stderr,
-                          "%s: option `%s' requires an argument\n",
-                          argv[0], argv[optind - 1]);
-                 nextchar += strlen (nextchar);
-                 optopt = pfound->val;
-                 return optstring[0] == ':' ? ':' : '?';
+
+               if(pfound != NULL) {
+                       option_index = indfound;
+                       optind++;
+
+                       if(*nameend) {
+                               /* Don't test has_arg with >, because some C compilers don't
+                                allow it to be used on enums.  */
+                               if(pfound->has_arg) {
+                                       optarg = nameend + 1;
+                               } else {
+                                       if(opterr) {
+                                               if(argv[optind - 1][1] == '-')
+                                                       /* --option */
+                                                       fprintf(stderr,
+                                                               "%s: option `--%s' doesn't allow an argument\n",
+                                                               argv[0], pfound->name);
+                                               else
+                                                       /* +option or -option */
+                                                       fprintf(stderr,
+                                                               "%s: option `%c%s' doesn't allow an argument\n",
+                                                               argv[0], argv[optind - 1][0], pfound->name);
+                                       }
+
+                                       nextchar += strlen(nextchar);
+
+                                       optopt = pfound->val;
+                                       return '?';
+                               }
+                       } else if(pfound->has_arg == 1) {
+                               if(optind < argc) {
+                                       optarg = argv[optind++];
+                               } else {
+                                       if(opterr)
+                                               fprintf(stderr,
+                                                       "%s: option `%s' requires an argument\n",
+                                                       argv[0], argv[optind - 1]);
+
+                                       nextchar += strlen(nextchar);
+                                       optopt = pfound->val;
+                                       return optstring[0] == ':' ? ':' : '?';
+                               }
+                       }
+
+                       nextchar += strlen(nextchar);
+
+                       if(longind != NULL) {
+                               *longind = option_index;
+                       }
+
+                       if(pfound->flag) {
+                               *(pfound->flag) = pfound->val;
+                               return 0;
+                       }
+
+                       return pfound->val;
+               }
+
+               /* Can't find it as a long option.  If this is not getopt_long_only,
+                or the option starts with '--' or is not a valid short
+                option, then it's an error.
+                Otherwise interpret it as a short option.  */
+               if(!long_only || argv[optind][1] == '-'
+                               || my_index(optstring, *nextchar) == NULL) {
+                       if(opterr) {
+                               if(argv[optind][1] == '-')
+                                       /* --option */
+                                       fprintf(stderr, "%s: unrecognized option `--%s'\n",
+                                               argv[0], nextchar);
+                               else
+                                       /* +option or -option */
+                                       fprintf(stderr, "%s: unrecognized option `%c%s'\n",
+                                               argv[0], argv[optind][0], nextchar);
+                       }
+
+                       nextchar = (char *) "";
+                       optind++;
+                       optopt = 0;
+                       return '?';
                }
-           }
-         nextchar += strlen (nextchar);
-         if (longind != NULL)
-           *longind = option_index;
-         if (pfound->flag)
-           {
-             *(pfound->flag) = pfound->val;
-             return 0;
-           }
-         return pfound->val;
        }
 
-      /* Can't find it as a long option.  If this is not getopt_long_only,
-        or the option starts with '--' or is not a valid short
-        option, then it's an error.
-        Otherwise interpret it as a short option.  */
-      if (!long_only || argv[optind][1] == '-'
-         || my_index (optstring, *nextchar) == NULL)
+       /* Look at and handle the next short option-character.  */
+
        {
-         if (opterr)
-           {
-             if (argv[optind][1] == '-')
-               /* --option */
-               fprintf (stderr, "%s: unrecognized option `--%s'\n",
-                        argv[0], nextchar);
-             else
-               /* +option or -option */
-               fprintf (stderr, "%s: unrecognized option `%c%s'\n",
-                        argv[0], argv[optind][0], nextchar);
-           }
-         nextchar = (char *) "";
-         optind++;
-         optopt = 0;
-         return '?';
-       }
-    }
-
-  /* Look at and handle the next short option-character.  */
-
-  {
-    char c = *nextchar++;
-    char *temp = my_index (optstring, c);
-
-    /* Increment `optind' when we start to process its last character.  */
-    if (*nextchar == '\0')
-      ++optind;
-
-    if (temp == NULL || c == ':')
-      {
-       if (opterr)
-         {
-           if (posixly_correct)
-             /* 1003.2 specifies the format of this message.  */
-             fprintf (stderr, "%s: illegal option -- %c\n",
-                      argv[0], c);
-           else
-             fprintf (stderr, "%s: invalid option -- %c\n",
-                      argv[0], c);
-         }
-       optopt = c;
-       return '?';
-      }
-    /* Convenience. Treat POSIX -W foo same as long option --foo */
-    if (temp[0] == 'W' && temp[1] == ';')
-      {
-       char *nameend;
-       const struct option *p;
-       const struct option *pfound = NULL;
-       int exact = 0;
-       int ambig = 0;
-       int indfound = 0;
-       int option_index;
-
-       /* This is an option that requires an argument.  */
-       if (*nextchar != '\0')
-         {
-           optarg = nextchar;
-           /* If we end this ARGV-element by taking the rest as an arg,
-              we must advance to the next element now.  */
-           optind++;
-         }
-       else if (optind == argc)
-         {
-           if (opterr)
-             {
-               /* 1003.2 specifies the format of this message.  */
-               fprintf (stderr, "%s: option requires an argument -- %c\n",
-                        argv[0], c);
-             }
-           optopt = c;
-           if (optstring[0] == ':')
-             c = ':';
-           else
-             c = '?';
-           return c;
-         }
-       else
-         /* We already incremented `optind' once;
-            increment it again when taking next ARGV-elt as argument.  */
-         optarg = argv[optind++];
-
-       /* optarg is now the argument, see if it's in the
-          table of longopts.  */
-
-       for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
-         /* Do nothing.  */ ;
-
-       /* Test all long options for either exact match
-          or abbreviated matches.  */
-       for (p = longopts, option_index = 0; p->name; p++, option_index++)
-         if (!strncmp (p->name, nextchar, nameend - nextchar))
-           {
-             if ((unsigned int) (nameend - nextchar) == strlen (p->name))
-               {
-                 /* Exact match found.  */
-                 pfound = p;
-                 indfound = option_index;
-                 exact = 1;
-                 break;
+               char c = *nextchar++;
+               char *temp = my_index(optstring, c);
+
+               /* Increment `optind' when we start to process its last character.  */
+               if(*nextchar == '\0') {
+                       ++optind;
                }
-             else if (pfound == NULL)
-               {
-                 /* First nonexact match found.  */
-                 pfound = p;
-                 indfound = option_index;
+
+               if(temp == NULL || c == ':') {
+                       if(opterr) {
+                               if(posixly_correct)
+                                       /* 1003.2 specifies the format of this message.  */
+                                       fprintf(stderr, "%s: illegal option -- %c\n",
+                                               argv[0], c);
+                               else
+                                       fprintf(stderr, "%s: invalid option -- %c\n",
+                                               argv[0], c);
+                       }
+
+                       optopt = c;
+                       return '?';
+               }
+
+               /* Convenience. Treat POSIX -W foo same as long option --foo */
+               if(temp[0] == 'W' && temp[1] == ';') {
+                       char *nameend;
+                       const struct option *p;
+                       const struct option *pfound = NULL;
+                       int exact = 0;
+                       int ambig = 0;
+                       int indfound = 0;
+                       int option_index;
+
+                       /* This is an option that requires an argument.  */
+                       if(*nextchar != '\0') {
+                               optarg = nextchar;
+                               /* If we end this ARGV-element by taking the rest as an arg,
+                                  we must advance to the next element now.  */
+                               optind++;
+                       } else if(optind == argc) {
+                               if(opterr) {
+                                       /* 1003.2 specifies the format of this message.  */
+                                       fprintf(stderr, "%s: option requires an argument -- %c\n",
+                                               argv[0], c);
+                               }
+
+                               optopt = c;
+
+                               if(optstring[0] == ':') {
+                                       c = ':';
+                               } else {
+                                       c = '?';
+                               }
+
+                               return c;
+                       } else
+                               /* We already incremented `optind' once;
+                                  increment it again when taking next ARGV-elt as argument.  */
+                       {
+                               optarg = argv[optind++];
+                       }
+
+                       /* optarg is now the argument, see if it's in the
+                          table of longopts.  */
+
+                       for(nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
+                               /* Do nothing.  */ ;
+
+                       /* Test all long options for either exact match
+                          or abbreviated matches.  */
+                       for(p = longopts, option_index = 0; p->name; p++, option_index++)
+                               if(!strncmp(p->name, nextchar, nameend - nextchar)) {
+                                       if((unsigned int)(nameend - nextchar) == strlen(p->name)) {
+                                               /* Exact match found.  */
+                                               pfound = p;
+                                               indfound = option_index;
+                                               exact = 1;
+                                               break;
+                                       } else if(pfound == NULL) {
+                                               /* First nonexact match found.  */
+                                               pfound = p;
+                                               indfound = option_index;
+                                       } else
+                                               /* Second or later nonexact match found.  */
+                                       {
+                                               ambig = 1;
+                                       }
+                               }
+
+                       if(ambig && !exact) {
+                               if(opterr)
+                                       fprintf(stderr, "%s: option `-W %s' is ambiguous\n",
+                                               argv[0], argv[optind]);
+
+                               nextchar += strlen(nextchar);
+                               optind++;
+                               return '?';
+                       }
+
+                       if(pfound != NULL) {
+                               option_index = indfound;
+
+                               if(*nameend) {
+                                       /* Don't test has_arg with >, because some C compilers don't
+                                          allow it to be used on enums.  */
+                                       if(pfound->has_arg) {
+                                               optarg = nameend + 1;
+                                       } else {
+                                               if(opterr)
+                                                       fprintf(stderr,
+                                                               "%s: option `-W %s' doesn't allow an argument\n",
+                                                               argv[0], pfound->name);
+
+                                               nextchar += strlen(nextchar);
+                                               return '?';
+                                       }
+                               } else if(pfound->has_arg == 1) {
+                                       if(optind < argc) {
+                                               optarg = argv[optind++];
+                                       } else {
+                                               if(opterr)
+                                                       fprintf(stderr,
+                                                               "%s: option `%s' requires an argument\n",
+                                                               argv[0], argv[optind - 1]);
+
+                                               nextchar += strlen(nextchar);
+                                               return optstring[0] == ':' ? ':' : '?';
+                                       }
+                               }
+
+                               nextchar += strlen(nextchar);
+
+                               if(longind != NULL) {
+                                       *longind = option_index;
+                               }
+
+                               if(pfound->flag) {
+                                       *(pfound->flag) = pfound->val;
+                                       return 0;
+                               }
+
+                               return pfound->val;
+                       }
+
+                       nextchar = NULL;
+                       return 'W';   /* Let the application handle it.   */
                }
-             else
-               /* Second or later nonexact match found.  */
-               ambig = 1;
-           }
-       if (ambig && !exact)
-         {
-           if (opterr)
-             fprintf (stderr, "%s: option `-W %s' is ambiguous\n",
-                      argv[0], argv[optind]);
-           nextchar += strlen (nextchar);
-           optind++;
-           return '?';
-         }
-       if (pfound != NULL)
-         {
-           option_index = indfound;
-           if (*nameend)
-             {
-               /* Don't test has_arg with >, because some C compilers don't
-                  allow it to be used on enums.  */
-               if (pfound->has_arg)
-                 optarg = nameend + 1;
-               else
-                 {
-                   if (opterr)
-                     fprintf (stderr,
-                              "%s: option `-W %s' doesn't allow an argument\n",
-                              argv[0], pfound->name);
-
-                   nextchar += strlen (nextchar);
-                   return '?';
-                 }
-             }
-           else if (pfound->has_arg == 1)
-             {
-               if (optind < argc)
-                 optarg = argv[optind++];
-               else
-                 {
-                   if (opterr)
-                     fprintf (stderr,
-                              "%s: option `%s' requires an argument\n",
-                              argv[0], argv[optind - 1]);
-                   nextchar += strlen (nextchar);
-                   return optstring[0] == ':' ? ':' : '?';
-                 }
-             }
-           nextchar += strlen (nextchar);
-           if (longind != NULL)
-             *longind = option_index;
-           if (pfound->flag)
-             {
-               *(pfound->flag) = pfound->val;
-               return 0;
-             }
-           return pfound->val;
-         }
-         nextchar = NULL;
-         return 'W';   /* Let the application handle it.   */
-      }
-    if (temp[1] == ':')
-      {
-       if (temp[2] == ':')
-         {
-           /* This is an option that accepts an argument optionally.  */
-           if (*nextchar != '\0')
-             {
-               optarg = nextchar;
-               optind++;
-             }
-           else
-             optarg = NULL;
-           nextchar = NULL;
-         }
-       else
-         {
-           /* This is an option that requires an argument.  */
-           if (*nextchar != '\0')
-             {
-               optarg = nextchar;
-               /* If we end this ARGV-element by taking the rest as an arg,
-                  we must advance to the next element now.  */
-               optind++;
-             }
-           else if (optind == argc)
-             {
-               if (opterr)
-                 {
-                   /* 1003.2 specifies the format of this message.  */
-                   fprintf (stderr,
-                          "%s: option requires an argument -- %c\n",
-                          argv[0], c);
-                 }
-               optopt = c;
-               if (optstring[0] == ':')
-                 c = ':';
-               else
-                 c = '?';
-             }
-           else
-             /* We already incremented `optind' once;
-                increment it again when taking next ARGV-elt as argument.  */
-             optarg = argv[optind++];
-           nextchar = NULL;
-         }
-      }
-    return c;
-  }
+
+               if(temp[1] == ':') {
+                       if(temp[2] == ':') {
+                               /* This is an option that accepts an argument optionally.  */
+                               if(*nextchar != '\0') {
+                                       optarg = nextchar;
+                                       optind++;
+                               } else {
+                                       optarg = NULL;
+                               }
+
+                               nextchar = NULL;
+                       } else {
+                               /* This is an option that requires an argument.  */
+                               if(*nextchar != '\0') {
+                                       optarg = nextchar;
+                                       /* If we end this ARGV-element by taking the rest as an arg,
+                                          we must advance to the next element now.  */
+                                       optind++;
+                               } else if(optind == argc) {
+                                       if(opterr) {
+                                               /* 1003.2 specifies the format of this message.  */
+                                               fprintf(stderr,
+                                                       "%s: option requires an argument -- %c\n",
+                                                       argv[0], c);
+                                       }
+
+                                       optopt = c;
+
+                                       if(optstring[0] == ':') {
+                                               c = ':';
+                                       } else {
+                                               c = '?';
+                                       }
+                               } else
+                                       /* We already incremented `optind' once;
+                                        increment it again when taking next ARGV-elt as argument.  */
+                               {
+                                       optarg = argv[optind++];
+                               }
+
+                               nextchar = NULL;
+                       }
+               }
+
+               return c;
+       }
 }
 
 int
-getopt (argc, argv, optstring)
-     int argc;
-     char *const *argv;
-     const char *optstring;
+getopt(argc, argv, optstring)
+int argc;
+char *const *argv;
+const char *optstring;
 {
-  return _getopt_internal (argc, argv, optstring,
-                          (const struct option *) 0,
-                          (int *) 0,
-                          0);
+       return _getopt_internal(argc, argv, optstring,
+                               (const struct option *) 0,
+                               (int *) 0,
+                               0);
 }
 
-#endif /* Not ELIDE_CODE.  */
+#endif  /* Not ELIDE_CODE.  */
 \f
 #ifdef TEST
 
@@ -981,68 +980,72 @@ getopt (argc, argv, optstring)
    the above definition of `getopt'.  */
 
 int
-main (argc, argv)
-     int argc;
-     char **argv;
+main(argc, argv)
+int argc;
+char **argv;
 {
-  int c;
-  int digit_optind = 0;
+       int c;
+       int digit_optind = 0;
 
-  while (1)
-    {
-      int this_option_optind = optind ? optind : 1;
+       while(1) {
+               int this_option_optind = optind ? optind : 1;
 
-      c = getopt (argc, argv, "abc:d:0123456789");
-      if (c == -1)
-       break;
+               c = getopt(argc, argv, "abc:d:0123456789");
 
-      switch (c)
-       {
-       case '0':
-       case '1':
-       case '2':
-       case '3':
-       case '4':
-       case '5':
-       case '6':
-       case '7':
-       case '8':
-       case '9':
-         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 '?':
-         break;
-
-       default:
-         printf ("?? getopt returned character code 0%o ??\n", c);
+               if(c == -1) {
+                       break;
+               }
+
+               switch(c) {
+               case '0':
+               case '1':
+               case '2':
+               case '3':
+               case '4':
+               case '5':
+               case '6':
+               case '7':
+               case '8':
+               case '9':
+                       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 '?':
+                       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");
-    }
+       if(optind < argc) {
+               printf("non-option ARGV-elements: ");
+
+               while(optind < argc) {
+                       printf("%s ", argv[optind++]);
+               }
+
+               printf("\n");
+       }
 
-  exit (0);
+       exit(0);
 }
 
 #endif /* TEST */