Annotation of gcc/getopt1.c, revision 1.1.1.1

1.1       root        1: /* Getopt for GNU.
                      2:    Copyright (C) 1987, 88, 89, 90, 91, 1992 Free Software Foundation, Inc.
                      3: 
                      4:    This program is free software; you can redistribute it and/or modify
                      5:    it under the terms of the GNU General Public License as published by
                      6:    the Free Software Foundation; either version 2, or (at your option)
                      7:    any later version.
                      8: 
                      9:    This program is distributed in the hope that it will be useful,
                     10:    but WITHOUT ANY WARRANTY; without even the implied warranty of
                     11:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     12:    GNU General Public License for more details.
                     13: 
                     14:    You should have received a copy of the GNU General Public License
                     15:    along with this program; if not, write to the Free Software
                     16:    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
                     17: 
                     18: #ifdef LIBC
                     19: /* For when compiled as part of the GNU C library.  */
                     20: #include <ansidecl.h>
                     21: #endif
                     22: 
                     23: #include "getopt.h"
                     24: 
                     25: #ifndef __STDC__
                     26: #define const
                     27: #endif
                     28: 
                     29: #if defined(STDC_HEADERS) || defined(__GNU_LIBRARY__) || defined (LIBC)
                     30: #include <stdlib.h>
                     31: #else /* STDC_HEADERS or __GNU_LIBRARY__ */
                     32: char *getenv ();
                     33: #endif /* STDC_HEADERS or __GNU_LIBRARY__ */
                     34: 
                     35: #if !defined (NULL)
                     36: #define NULL 0
                     37: #endif
                     38: 
                     39: int
                     40: getopt_long (argc, argv, options, long_options, opt_index)
                     41:      int argc;
                     42:      char *const *argv;
                     43:      const char *options;
                     44:      const struct option *long_options;
                     45:      int *opt_index;
                     46: {
                     47:   return _getopt_internal (argc, argv, options, long_options, opt_index, 0);
                     48: }
                     49: 
                     50: /* Like getopt_long, but '-' as well as '--' can indicate a long option.
                     51:    If an option that starts with '-' (not '--') doesn't match a long option,
                     52:    but does match a short option, it is parsed as a short option
                     53:    instead. */
                     54: 
                     55: int 
                     56: getopt_long_only (argc, argv, options, long_options, opt_index)
                     57:      int argc;
                     58:      char *const *argv;
                     59:      const char *options;
                     60:      const struct option *long_options;
                     61:      int *opt_index;
                     62: {
                     63:   return _getopt_internal (argc, argv, options, long_options, opt_index, 1);
                     64: }
                     65: 
                     66: #ifdef TEST
                     67: 
                     68: #include <stdio.h>
                     69: 
                     70: int
                     71: main (argc, argv)
                     72:      int argc;
                     73:      char **argv;
                     74: {
                     75:   int c;
                     76:   int digit_optind = 0;
                     77: 
                     78:   while (1)
                     79:     {
                     80:       int this_option_optind = optind ? optind : 1;
                     81:       int option_index = 0;
                     82:       static struct option long_options[] =
                     83:       {
                     84:        {"add", 1, 0, 0},
                     85:        {"append", 0, 0, 0},
                     86:        {"delete", 1, 0, 0},
                     87:        {"verbose", 0, 0, 0},
                     88:        {"create", 0, 0, 0},
                     89:        {"file", 1, 0, 0},
                     90:        {0, 0, 0, 0}
                     91:       };
                     92: 
                     93:       c = getopt_long (argc, argv, "abc:d:0123456789",
                     94:                       long_options, &option_index);
                     95:       if (c == EOF)
                     96:        break;
                     97: 
                     98:       switch (c)
                     99:        {
                    100:        case 0:
                    101:          printf ("option %s", long_options[option_index].name);
                    102:          if (optarg)
                    103:            printf (" with arg %s", optarg);
                    104:          printf ("\n");
                    105:          break;
                    106: 
                    107:        case '0':
                    108:        case '1':
                    109:        case '2':
                    110:        case '3':
                    111:        case '4':
                    112:        case '5':
                    113:        case '6':
                    114:        case '7':
                    115:        case '8':
                    116:        case '9':
                    117:          if (digit_optind != 0 && digit_optind != this_option_optind)
                    118:            printf ("digits occur in two different argv-elements.\n");
                    119:          digit_optind = this_option_optind;
                    120:          printf ("option %c\n", c);
                    121:          break;
                    122: 
                    123:        case 'a':
                    124:          printf ("option a\n");
                    125:          break;
                    126: 
                    127:        case 'b':
                    128:          printf ("option b\n");
                    129:          break;
                    130: 
                    131:        case 'c':
                    132:          printf ("option c with value `%s'\n", optarg);
                    133:          break;
                    134: 
                    135:        case 'd':
                    136:          printf ("option d with value `%s'\n", optarg);
                    137:          break;
                    138: 
                    139:        case '?':
                    140:          break;
                    141: 
                    142:        default:
                    143:          printf ("?? getopt returned character code 0%o ??\n", c);
                    144:        }
                    145:     }
                    146: 
                    147:   if (optind < argc)
                    148:     {
                    149:       printf ("non-option ARGV-elements: ");
                    150:       while (optind < argc)
                    151:        printf ("%s ", argv[optind++]);
                    152:       printf ("\n");
                    153:     }
                    154: 
                    155:   exit (0);
                    156: }
                    157: 
                    158: #endif /* TEST */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.