Mercurial > hg > octave-shane > gnulib-hg
annotate lib/xstrtol.h @ 4397:c6450308f123
Assume C89, so PARAMS isn't needed.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Wed, 18 Jun 2003 05:52:19 +0000 |
parents | 98b37cab8b76 |
children | 33e8f958b651 |
rev | line source |
---|---|
3412
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
1 /* A more useful interface to strtol. |
4397
c6450308f123
Assume C89, so PARAMS isn't needed.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4132
diff
changeset
|
2 |
c6450308f123
Assume C89, so PARAMS isn't needed.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4132
diff
changeset
|
3 Copyright (C) 1995, 1996, 1998, 1999, 2001, 2002, 2003 Free |
c6450308f123
Assume C89, so PARAMS isn't needed.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4132
diff
changeset
|
4 Software Foundation, Inc. |
3412
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
5 |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
6 This program is free software; you can redistribute it and/or modify |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
7 it under the terms of the GNU General Public License as published by |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
8 the Free Software Foundation; either version 2, or (at your option) |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
9 any later version. |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
10 |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
11 This program is distributed in the hope that it will be useful, |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
14 GNU General Public License for more details. |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
15 |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
16 You should have received a copy of the GNU General Public License |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
17 along with this program; if not, write to the Free Software Foundation, |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
18 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
19 |
764 | 20 #ifndef XSTRTOL_H_ |
21 # define XSTRTOL_H_ 1 | |
366 | 22 |
4132
98b37cab8b76
More consistent inttypes.h / stdint.h handling.
Bruno Haible <bruno@clisp.org>
parents:
3412
diff
changeset
|
23 /* Get uintmax_t. */ |
1782
891c8561137d
(__xstrtol, __strtol, __unsigned): Remove macro decls.
Jim Meyering <jim@meyering.net>
parents:
1393
diff
changeset
|
24 # if HAVE_INTTYPES_H |
4132
98b37cab8b76
More consistent inttypes.h / stdint.h handling.
Bruno Haible <bruno@clisp.org>
parents:
3412
diff
changeset
|
25 # include <inttypes.h> |
98b37cab8b76
More consistent inttypes.h / stdint.h handling.
Bruno Haible <bruno@clisp.org>
parents:
3412
diff
changeset
|
26 # else |
98b37cab8b76
More consistent inttypes.h / stdint.h handling.
Bruno Haible <bruno@clisp.org>
parents:
3412
diff
changeset
|
27 # if HAVE_STDINT_H |
98b37cab8b76
More consistent inttypes.h / stdint.h handling.
Bruno Haible <bruno@clisp.org>
parents:
3412
diff
changeset
|
28 # include <stdint.h> |
98b37cab8b76
More consistent inttypes.h / stdint.h handling.
Bruno Haible <bruno@clisp.org>
parents:
3412
diff
changeset
|
29 # endif |
760 | 30 # endif |
366 | 31 |
1170 | 32 # ifndef _STRTOL_ERROR |
366 | 33 enum strtol_error |
34 { | |
35 LONGINT_OK, LONGINT_INVALID, LONGINT_INVALID_SUFFIX_CHAR, LONGINT_OVERFLOW | |
36 }; | |
37 typedef enum strtol_error strtol_error; | |
1170 | 38 # endif |
366 | 39 |
1782
891c8561137d
(__xstrtol, __strtol, __unsigned): Remove macro decls.
Jim Meyering <jim@meyering.net>
parents:
1393
diff
changeset
|
40 # define _DECLARE_XSTRTOL(name, type) \ |
4397
c6450308f123
Assume C89, so PARAMS isn't needed.
Paul Eggert <eggert@cs.ucla.edu>
parents:
4132
diff
changeset
|
41 strtol_error name (const char *, char **, int, type *, const char *); |
1782
891c8561137d
(__xstrtol, __strtol, __unsigned): Remove macro decls.
Jim Meyering <jim@meyering.net>
parents:
1393
diff
changeset
|
42 _DECLARE_XSTRTOL (xstrtol, long int) |
891c8561137d
(__xstrtol, __strtol, __unsigned): Remove macro decls.
Jim Meyering <jim@meyering.net>
parents:
1393
diff
changeset
|
43 _DECLARE_XSTRTOL (xstrtoul, unsigned long int) |
3379 | 44 _DECLARE_XSTRTOL (xstrtoimax, intmax_t) |
1782
891c8561137d
(__xstrtol, __strtol, __unsigned): Remove macro decls.
Jim Meyering <jim@meyering.net>
parents:
1393
diff
changeset
|
45 _DECLARE_XSTRTOL (xstrtoumax, uintmax_t) |
366 | 46 |
760 | 47 # define _STRTOL_ERROR(Exit_code, Str, Argument_type_string, Err) \ |
366 | 48 do \ |
49 { \ | |
759 | 50 switch ((Err)) \ |
366 | 51 { \ |
52 case LONGINT_OK: \ | |
53 abort (); \ | |
54 \ | |
55 case LONGINT_INVALID: \ | |
759 | 56 error ((Exit_code), 0, "invalid %s `%s'", \ |
57 (Argument_type_string), (Str)); \ | |
366 | 58 break; \ |
59 \ | |
60 case LONGINT_INVALID_SUFFIX_CHAR: \ | |
3412
0053a9244567
* lib/xstrtol.h: Add copyright notice.
Jim Meyering <jim@meyering.net>
parents:
3379
diff
changeset
|
61 error ((Exit_code), 0, "invalid character following %s in `%s'", \ |
759 | 62 (Argument_type_string), (Str)); \ |
366 | 63 break; \ |
64 \ | |
65 case LONGINT_OVERFLOW: \ | |
1782
891c8561137d
(__xstrtol, __strtol, __unsigned): Remove macro decls.
Jim Meyering <jim@meyering.net>
parents:
1393
diff
changeset
|
66 error ((Exit_code), 0, "%s `%s' too large", \ |
759 | 67 (Argument_type_string), (Str)); \ |
366 | 68 break; \ |
69 } \ | |
70 } \ | |
71 while (0) | |
72 | |
760 | 73 # define STRTOL_FATAL_ERROR(Str, Argument_type_string, Err) \ |
759 | 74 _STRTOL_ERROR (2, Str, Argument_type_string, Err) |
373 | 75 |
760 | 76 # define STRTOL_FAIL_WARN(Str, Argument_type_string, Err) \ |
759 | 77 _STRTOL_ERROR (0, Str, Argument_type_string, Err) |
373 | 78 |
764 | 79 #endif /* not XSTRTOL_H_ */ |