annotate lib/xstrtol.h @ 764:13671d74c0fb

.
author Jim Meyering <jim@meyering.net>
date Tue, 29 Oct 1996 17:44:03 +0000
parents 360e64e5f9c2
children 759a0cbe32e1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
764
Jim Meyering <jim@meyering.net>
parents: 760
diff changeset
1 #ifndef XSTRTOL_H_
Jim Meyering <jim@meyering.net>
parents: 760
diff changeset
2 # define XSTRTOL_H_ 1
366
Jim Meyering <jim@meyering.net>
parents:
diff changeset
3
760
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
4 # if STRING_TO_UNSIGNED
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
5 # define __xstrtol xstrtoul
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
6 # define __strtol strtoul
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
7 # define __unsigned unsigned
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
8 # define __ZLONG_MAX ULONG_MAX
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
9 # else
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
10 # define __xstrtol xstrtol
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
11 # define __strtol strtol
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
12 # define __unsigned /* empty */
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
13 # define __ZLONG_MAX LONG_MAX
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
14 # endif
366
Jim Meyering <jim@meyering.net>
parents:
diff changeset
15
760
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
16 # undef PARAMS
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
17 # if defined (__STDC__) && __STDC__
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
18 # define PARAMS(Args) Args
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
19 # else
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
20 # define PARAMS(Args) ()
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
21 # endif
366
Jim Meyering <jim@meyering.net>
parents:
diff changeset
22
Jim Meyering <jim@meyering.net>
parents:
diff changeset
23 enum strtol_error
Jim Meyering <jim@meyering.net>
parents:
diff changeset
24 {
Jim Meyering <jim@meyering.net>
parents:
diff changeset
25 LONGINT_OK, LONGINT_INVALID, LONGINT_INVALID_SUFFIX_CHAR, LONGINT_OVERFLOW
Jim Meyering <jim@meyering.net>
parents:
diff changeset
26 };
Jim Meyering <jim@meyering.net>
parents:
diff changeset
27 typedef enum strtol_error strtol_error;
Jim Meyering <jim@meyering.net>
parents:
diff changeset
28
Jim Meyering <jim@meyering.net>
parents:
diff changeset
29 strtol_error
742
cddc2692eef4 Define and use macro, PARAMS, not __P.
Jim Meyering <jim@meyering.net>
parents: 400
diff changeset
30 __xstrtol PARAMS ((const char *s, char **ptr, int base,
cddc2692eef4 Define and use macro, PARAMS, not __P.
Jim Meyering <jim@meyering.net>
parents: 400
diff changeset
31 __unsigned long int *val, const char *valid_suffixes));
366
Jim Meyering <jim@meyering.net>
parents:
diff changeset
32
760
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
33 # define _STRTOL_ERROR(Exit_code, Str, Argument_type_string, Err) \
366
Jim Meyering <jim@meyering.net>
parents:
diff changeset
34 do \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
35 { \
759
fc727aca2aa4 libitize
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
36 switch ((Err)) \
366
Jim Meyering <jim@meyering.net>
parents:
diff changeset
37 { \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
38 case LONGINT_OK: \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
39 abort (); \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
40 \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
41 case LONGINT_INVALID: \
759
fc727aca2aa4 libitize
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
42 error ((Exit_code), 0, "invalid %s `%s'", \
fc727aca2aa4 libitize
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
43 (Argument_type_string), (Str)); \
366
Jim Meyering <jim@meyering.net>
parents:
diff changeset
44 break; \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
45 \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
46 case LONGINT_INVALID_SUFFIX_CHAR: \
759
fc727aca2aa4 libitize
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
47 error ((Exit_code), 0, "invalid character following %s `%s'", \
fc727aca2aa4 libitize
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
48 (Argument_type_string), (Str)); \
366
Jim Meyering <jim@meyering.net>
parents:
diff changeset
49 break; \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
50 \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
51 case LONGINT_OVERFLOW: \
400
a4121ca0720b merge with 1.11.d
Jim Meyering <jim@meyering.net>
parents: 396
diff changeset
52 /* FIXME: make this message dependent on STRING_TO_UNSIGNED */\
759
fc727aca2aa4 libitize
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
53 error ((Exit_code), 0, "%s `%s' larger than maximum long int",\
fc727aca2aa4 libitize
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
54 (Argument_type_string), (Str)); \
366
Jim Meyering <jim@meyering.net>
parents:
diff changeset
55 break; \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
56 } \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
57 } \
Jim Meyering <jim@meyering.net>
parents:
diff changeset
58 while (0)
Jim Meyering <jim@meyering.net>
parents:
diff changeset
59
760
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
60 # define STRTOL_FATAL_ERROR(Str, Argument_type_string, Err) \
759
fc727aca2aa4 libitize
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
61 _STRTOL_ERROR (2, Str, Argument_type_string, Err)
373
Jim Meyering <jim@meyering.net>
parents: 366
diff changeset
62
760
360e64e5f9c2 cpp-indent
Jim Meyering <jim@meyering.net>
parents: 759
diff changeset
63 # define STRTOL_FAIL_WARN(Str, Argument_type_string, Err) \
759
fc727aca2aa4 libitize
Jim Meyering <jim@meyering.net>
parents: 742
diff changeset
64 _STRTOL_ERROR (0, Str, Argument_type_string, Err)
373
Jim Meyering <jim@meyering.net>
parents: 366
diff changeset
65
764
Jim Meyering <jim@meyering.net>
parents: 760
diff changeset
66 #endif /* not XSTRTOL_H_ */