Annotation of embedaddon/lrzsz/lib/xstrtol.h, revision 1.1

1.1     ! misho       1: #ifndef _xstrtol_h_
        !             2: #define _xstrtol_h_ 1
        !             3: 
        !             4: #if STRING_TO_UNSIGNED
        !             5: # define __xstrtol xstrtoul
        !             6: # define __strtol strtoul
        !             7: # define __unsigned unsigned
        !             8: # define __ZLONG_MAX ULONG_MAX
        !             9: #else
        !            10: # define __xstrtol xstrtol
        !            11: # define __strtol strtol
        !            12: # define __unsigned /* empty */
        !            13: # define __ZLONG_MAX LONG_MAX
        !            14: #endif
        !            15: 
        !            16: #undef __P
        !            17: #if defined (__STDC__) && __STDC__
        !            18: #define        __P(x) x
        !            19: #else
        !            20: #define        __P(x) ()
        !            21: #endif
        !            22: 
        !            23: enum strtol_error
        !            24:   {
        !            25:     LONGINT_OK, LONGINT_INVALID, LONGINT_INVALID_SUFFIX_CHAR, LONGINT_OVERFLOW
        !            26:   };
        !            27: typedef enum strtol_error strtol_error;
        !            28: 
        !            29: strtol_error
        !            30:   __xstrtol __P ((const char *s, char **ptr, int base,
        !            31:                  __unsigned long int *val, const char *valid_suffixes));
        !            32: 
        !            33: #define _STRTOL_ERROR(exit_code, str, argument_type_string, err)       \
        !            34:   do                                                                   \
        !            35:     {                                                                  \
        !            36:       switch ((err))                                                   \
        !            37:        {                                                               \
        !            38:        case LONGINT_OK:                                                \
        !            39:          abort ();                                                     \
        !            40:                                                                        \
        !            41:        case LONGINT_INVALID:                                           \
        !            42:          error ((exit_code), 0, "invalid %s `%s'",                     \
        !            43:                 (argument_type_string), (str));                        \
        !            44:          break;                                                        \
        !            45:                                                                        \
        !            46:        case LONGINT_INVALID_SUFFIX_CHAR:                               \
        !            47:          error ((exit_code), 0, "invalid character following %s `%s'", \
        !            48:                 (argument_type_string), (str));                        \
        !            49:          break;                                                        \
        !            50:                                                                        \
        !            51:        case LONGINT_OVERFLOW:                                          \
        !            52:          /* FIXME: make this message dependent on STRING_TO_UNSIGNED */\
        !            53:          error ((exit_code), 0, "%s `%s' larger than maximum long int",\
        !            54:                 (argument_type_string), (str));                        \
        !            55:          break;                                                        \
        !            56:        }                                                               \
        !            57:     }                                                                  \
        !            58:   while (0)
        !            59: 
        !            60: #define STRTOL_FATAL_ERROR(str, argument_type_string, err)             \
        !            61:   _STRTOL_ERROR (2, str, argument_type_string, err)
        !            62: 
        !            63: #define STRTOL_FAIL_WARN(str, argument_type_string, err)               \
        !            64:   _STRTOL_ERROR (0, str, argument_type_string, err)
        !            65: 
        !            66: #endif /* _xstrtol_h_ */

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>