(root)/
tar-1.35/
gnu/
xstrtol.h
       1  /* A more useful interface to strtol.
       2  
       3     Copyright (C) 1995-1996, 1998-1999, 2001-2004, 2006-2023 Free Software
       4     Foundation, Inc.
       5  
       6     This program is free software: you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation, either version 3 of the License, or
       9     (at your option) any later version.
      10  
      11     This program is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      18  
      19  #ifndef XSTRTOL_H_
      20  # define XSTRTOL_H_ 1
      21  
      22  /* Get intmax_t, uintmax_t.  */
      23  # include <stdint.h>
      24  
      25  # ifndef _STRTOL_ERROR
      26  enum strtol_error
      27    {
      28      LONGINT_OK = 0,
      29  
      30      /* These two values can be ORed together, to indicate that both
      31         errors occurred.  */
      32      LONGINT_OVERFLOW = 1,
      33      LONGINT_INVALID_SUFFIX_CHAR = 2,
      34  
      35      LONGINT_INVALID_SUFFIX_CHAR_WITH_OVERFLOW = (LONGINT_INVALID_SUFFIX_CHAR
      36                                                   | LONGINT_OVERFLOW),
      37      LONGINT_INVALID = 4
      38    };
      39  typedef enum strtol_error strtol_error;
      40  # endif
      41  
      42  # define _DECLARE_XSTRTOL(name, type) \
      43    strtol_error name (const char *, char **, int, type *, const char *);
      44  _DECLARE_XSTRTOL (xstrtol, long int)
      45  _DECLARE_XSTRTOL (xstrtoul, unsigned long int)
      46  _DECLARE_XSTRTOL (xstrtoll, long long int)
      47  _DECLARE_XSTRTOL (xstrtoull, unsigned long long int)
      48  _DECLARE_XSTRTOL (xstrtoimax, intmax_t)
      49  _DECLARE_XSTRTOL (xstrtoumax, uintmax_t)
      50  
      51  #endif /* not XSTRTOL_H_ */