Mercurial > gnulib
annotate lib/long-options.c @ 649:89f4c1937ac7
update FSF address in copyright and remove any trailing blanks
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Mon, 15 Jul 1996 02:41:49 +0000 |
parents | 8461c3b8595a |
children | f9f8782ba476 |
rev | line source |
---|---|
317 | 1 /* Utility to accept --help and --version options as unobtrusively as possible. |
2 Copyright (C) 1993, 1994 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 | |
649
89f4c1937ac7
update FSF address in copyright and remove any trailing blanks
Jim Meyering <jim@meyering.net>
parents:
446
diff
changeset
|
15 along with this program; if not, write to the Free Software Foundation, |
89f4c1937ac7
update FSF address in copyright and remove any trailing blanks
Jim Meyering <jim@meyering.net>
parents:
446
diff
changeset
|
16 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
317 | 17 |
649
89f4c1937ac7
update FSF address in copyright and remove any trailing blanks
Jim Meyering <jim@meyering.net>
parents:
446
diff
changeset
|
18 /* Written by Jim Meyering. */ |
317 | 19 |
20 #ifdef HAVE_CONFIG_H | |
21 #include <config.h> | |
22 #endif | |
23 | |
24 #include <stdio.h> | |
25 #include <getopt.h> | |
26 #include "long-options.h" | |
27 | |
28 static struct option const long_options[] = | |
29 { | |
30 {"help", no_argument, 0, 'h'}, | |
31 {"version", no_argument, 0, 'v'}, | |
32 {0, 0, 0, 0} | |
33 }; | |
34 | |
35 /* Process long options --help and --version, but only if argc == 2. | |
36 Be careful not to gobble up `--'. */ | |
37 | |
38 void | |
39 parse_long_options (argc, argv, command_name, version_string, usage) | |
40 int argc; | |
41 char **argv; | |
42 const char *command_name; | |
43 const char *version_string; | |
44 void (*usage)(); | |
45 { | |
46 int c; | |
47 int saved_opterr; | |
48 int saved_optind; | |
49 | |
50 saved_opterr = opterr; | |
51 saved_optind = optind; | |
52 | |
53 /* Don't print an error message for unrecognized options. */ | |
54 opterr = 0; | |
55 | |
56 if (argc == 2 | |
57 && (c = getopt_long (argc, argv, "+", long_options, (int *) 0)) != EOF) | |
58 { | |
59 switch (c) | |
60 { | |
61 case 'h': | |
62 (*usage) (0); | |
63 | |
64 case 'v': | |
65 printf ("%s - %s\n", command_name, version_string); | |
66 exit (0); | |
446
8461c3b8595a
Remove trailing white space.
Jim Meyering <jim@meyering.net>
parents:
317
diff
changeset
|
67 |
317 | 68 default: |
69 /* Don't process any other long-named options. */ | |
70 break; | |
71 } | |
72 } | |
73 | |
74 /* Restore previous value. */ | |
75 opterr = saved_opterr; | |
76 | |
77 /* Restore optind in case it has advanced past a leading `--'. */ | |
78 optind = saved_optind; | |
79 } |