root/maint/gnulib/lib/anytostr.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. anytostr

   1 /* anytostr.c -- convert integers to printable strings
   2 
   3    Copyright (C) 2001, 2006, 2008-2021 Free Software Foundation, Inc.
   4 
   5    This file is free software: you can redistribute it and/or modify
   6    it under the terms of the GNU Lesser General Public License as
   7    published by the Free Software Foundation; either version 2.1 of the
   8    License, or (at your option) any later version.
   9 
  10    This file is distributed in the hope that it will be useful,
  11    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13    GNU Lesser General Public License for more details.
  14 
  15    You should have received a copy of the GNU Lesser General Public License
  16    along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
  17 
  18 /* Written by Paul Eggert */
  19 
  20 /* Tell gcc not to warn about the (i < 0) test, below.  */
  21 #if (__GNUC__ == 4 && 3 <= __GNUC_MINOR__) || 4 < __GNUC__
  22 # pragma GCC diagnostic ignored "-Wtype-limits"
  23 #elif defined __clang__
  24 # pragma clang diagnostic ignored "-Wtautological-compare"
  25 #endif
  26 
  27 #include <config.h>
  28 
  29 #include "inttostr.h"
  30 
  31 /* Convert I to a printable string in BUF, which must be at least
  32    INT_BUFSIZE_BOUND (INTTYPE) bytes long.  Return the address of the
  33    printable string, which need not start at BUF.  */
  34 
  35 _GL_ATTRIBUTE_NODISCARD char *
  36 anytostr (inttype i, char *buf)
     /* [previous][next][first][last][top][bottom][index][help] */
  37 {
  38   char *p = buf + INT_STRLEN_BOUND (inttype);
  39   *p = 0;
  40 
  41   if (i < 0)
  42     {
  43       do
  44         *--p = '0' - i % 10;
  45       while ((i /= 10) != 0);
  46 
  47       *--p = '-';
  48     }
  49   else
  50     {
  51       do
  52         *--p = '0' + i % 10;
  53       while ((i /= 10) != 0);
  54     }
  55 
  56   return p;
  57 }

/* [previous][next][first][last][top][bottom][index][help] */