Mercurial > hg > octave-kai > gnulib-hg
annotate lib/argmatch.h @ 1591:fccafdb9ccd1
white space changes
author | Jim Meyering <jim@meyering.net> |
---|---|
date | Thu, 31 Dec 1998 18:10:53 +0000 |
parents | a6a81f3170d0 |
children | 6ba864382953 |
rev | line source |
---|---|
1588 | 1 /* argmatch.h -- definitions and prototypes for argmatch.c |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
2 Copyright (C) 1990, 1998 Free Software Foundation, Inc. |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
3 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
4 This program is free software; you can redistribute it and/or modify |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
5 it under the terms of the GNU General Public License as published by |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
6 the Free Software Foundation; either version 2, or (at your option) |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
7 any later version. |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
8 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
9 This program is distributed in the hope that it will be useful, |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
12 GNU General Public License for more details. |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
13 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
14 You should have received a copy of the GNU General Public License |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
15 along with this program; if not, write to the Free Software Foundation, |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
16 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
17 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
18 /* Written by David MacKenzie <djm@ai.mit.edu> |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
19 Modified by Akim Demaille <demaille@inf.enst.fr> */ |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
20 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
21 #ifndef _ARGMATCH_H_ |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
22 # define _ARGMATCH_H_ 1 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
23 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
24 # if HAVE_CONFIG_H |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
25 # include <config.h> |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
26 # endif |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
27 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
28 # include <sys/types.h> |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
29 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
30 # ifndef PARAMS |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
31 # if PROTOTYPES || (defined (__STDC__) && __STDC__) |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
32 # define PARAMS(args) args |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
33 # else |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
34 # define PARAMS(args) () |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
35 # endif /* GCC. */ |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
36 # endif /* Not PARAMS. */ |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
37 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
38 /* Return the index of the element of ARGLIST (NULL terminated) that |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
39 matches with ARG. If VALLIST is not NULL, then use it to resolve |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
40 false ambiguities (i.e., different matches of ARG but corresponding |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
41 to the same values in VALLIST). */ |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
42 |
1588 | 43 int argmatch |
1591 | 44 PARAMS ((const char *arg, const char *const *arglist, |
45 const char *vallist, size_t valsize)); | |
1588 | 46 int argcasematch |
1591 | 47 PARAMS ((const char *arg, const char *const *arglist, |
48 const char *vallist, size_t valsize)); | |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
49 |
1591 | 50 # define ARGMATCH(Arg, ARGLIST, Vallist) \ |
51 argmatch (Arg, Arglist, (const char *) Vallist, sizeof (*Vallist)) | |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
52 |
1591 | 53 # define ARGCASEMATCH(Arg, Arglist, Vallist) \ |
54 argcasematch (Arg, Arglist, (const char *) Vallist, sizeof (*Vallist)) | |
530 | 55 |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
56 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
57 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
58 /* Report on stderr why argmatch failed. Report correct values. */ |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
59 |
1588 | 60 void argmatch_invalid |
1591 | 61 PARAMS ((const char *kind, const char *value, int problem)); |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
62 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
63 /* Left for compatibility with the old name invalid_arg */ |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
64 |
1591 | 65 # define invalid_arg(Kind, Value, Problem) \ |
66 argmatch_invalid (Kind, Value, Problem) | |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
67 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
68 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
69 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
70 /* Report on stderr the list of possible arguments. */ |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
71 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
72 void argmatch_valid |
1591 | 73 PARAMS ((const char *const *arglist, |
74 const char *vallist, size_t valsize)); | |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
75 |
1591 | 76 # define ARGMATCH_VALID(Arglist, Vallist) \ |
77 valid_args (Arglist, (const char *) Vallist, sizeof (*Vallist)) | |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
78 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
79 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
80 /* Returns matches, or, upon error, report explanatory message and |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
81 exit. */ |
530 | 82 |
1588 | 83 int __xargmatch_internal |
1591 | 84 PARAMS ((const char *kind, |
85 const char *arg, const char *const *arglist, | |
86 const char *vallist, size_t valsize, | |
87 int sensitive)); | |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
88 |
1591 | 89 # define XARGMATCH(Kind, Arg, Arglist, Vallist) \ |
90 Vallist [__xargmatch_internal (Kind, Arg, Arglist, \ | |
91 (const char *) Vallist, sizeof (*Vallist), 1)] | |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
92 |
1591 | 93 # define XARGCASEMATCH(Kind, Arg, Arglist, Vallist) \ |
94 Vallist [__xargmatch_internal (Kind, Arg, Arglist, \ | |
95 (const char *) Vallist, sizeof (*Vallist), 0)] | |
530 | 96 |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
97 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
98 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
99 /* Convert a value into a corresponding argument. */ |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
100 |
1591 | 101 const char *argmatch_to_argument |
102 PARAMS ((char *value, const char *const *arglist, | |
103 const char *vallist, size_t valsize)); | |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
104 |
1591 | 105 # define ARGMATCH_TO_ARGUMENT(Value, Arglist, Vallist) \ |
106 argmatch_to_argument ((char *) &Value, Arglist, \ | |
107 (const char *) Vallist, sizeof (*Vallist)) | |
1587
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
108 |
3f067a341196
lots of changes from Akim Demaille.
Jim Meyering <jim@meyering.net>
parents:
925
diff
changeset
|
109 #endif /* _ARGMATCH_H_ */ |