X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fxstrtol.h;h=fd0c97f6325819ffb92d53a634eff87de80e506b;hb=c89f48f01f6047b50c1ed3c981901f620ec98f6a;hp=45043d01df09e37f8916f987c10f0c6bbdf5b42e;hpb=3af47ca3f672f6c43bc63843a91ecfac278d846f;p=gnulib.git diff --git a/lib/xstrtol.h b/lib/xstrtol.h index 45043d01d..fd0c97f63 100644 --- a/lib/xstrtol.h +++ b/lib/xstrtol.h @@ -13,6 +13,7 @@ # define __ZLONG_MAX LONG_MAX #endif +#undef __P #if defined (__STDC__) && __STDC__ #define __P(x) x #else @@ -27,9 +28,9 @@ typedef enum strtol_error strtol_error; strtol_error __xstrtol __P ((const char *s, char **ptr, int base, - __unsigned long int *val, int allow_bkm_suffix)); + __unsigned long int *val, const char *valid_suffixes)); -#define STRTOL_FATAL_ERROR(str, argument_type_string, err) \ +#define _STRTOL_ERROR(exit_code, str, argument_type_string, err) \ do \ { \ switch ((err)) \ @@ -38,20 +39,28 @@ strtol_error abort (); \ \ case LONGINT_INVALID: \ - error (2, 0, "invalid %s `%s'", (argument_type_string), (str));\ + error ((exit_code), 0, "invalid %s `%s'", \ + (argument_type_string), (str)); \ break; \ \ case LONGINT_INVALID_SUFFIX_CHAR: \ - error (2, 0, "invalid character following %s `%s'", \ + error ((exit_code), 0, "invalid character following %s `%s'", \ (argument_type_string), (str)); \ break; \ \ case LONGINT_OVERFLOW: \ - error (2, 0, "%s `%s' larger than maximum long int", \ + /* FIXME: make this message dependent on STRING_TO_UNSIGNED */\ + error ((exit_code), 0, "%s `%s' larger than maximum long int",\ (argument_type_string), (str)); \ break; \ } \ } \ while (0) +#define STRTOL_FATAL_ERROR(str, argument_type_string, err) \ + _STRTOL_ERROR (2, str, argument_type_string, err) + +#define STRTOL_FAIL_WARN(str, argument_type_string, err) \ + _STRTOL_ERROR (0, str, argument_type_string, err) + #endif /* _xstrtol_h_ */