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

unix.superglobalmegacorp.com

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