1 /* $NetBSD: itoa.c,v 1.1.1.1 2016/01/13 18:41:48 christos Exp $ */ 2 3 /* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2002, 2004 4 Free Software Foundation, Inc. 5 Written by James Clark (jjc (at) jclark.com) 6 7 This file is part of groff. 8 9 groff is free software; you can redistribute it and/or modify it under 10 the terms of the GNU General Public License as published by the Free 11 Software Foundation; either version 2, or (at your option) any later 12 version. 13 14 groff is distributed in the hope that it will be useful, but WITHOUT ANY 15 WARRANTY; without even the implied warranty of MERCHANTABILITY or 16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 17 for more details. 18 19 You should have received a copy of the GNU General Public License along 20 with groff; see the file COPYING. If not, write to the Free Software 21 Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ 22 23 #define INT_DIGITS 19 /* enough for 64 bit integer */ 24 #define UINT_DIGITS 20 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 char *i_to_a(int i) 31 { 32 /* Room for INT_DIGITS digits, - and '\0' */ 33 static char buf[INT_DIGITS + 2]; 34 char *p = buf + INT_DIGITS + 1; /* points to terminating '\0' */ 35 if (i >= 0) { 36 do { 37 *--p = '0' + (i % 10); 38 i /= 10; 39 } while (i != 0); 40 return p; 41 } 42 else { /* i < 0 */ 43 do { 44 *--p = '0' - (i % 10); 45 i /= 10; 46 } while (i != 0); 47 *--p = '-'; 48 } 49 return p; 50 } 51 52 char *ui_to_a(unsigned int i) 53 { 54 /* Room for UINT_DIGITS digits and '\0' */ 55 static char buf[UINT_DIGITS + 1]; 56 char *p = buf + UINT_DIGITS; /* points to terminating '\0' */ 57 do { 58 *--p = '0' + (i % 10); 59 i /= 10; 60 } while (i != 0); 61 return p; 62 } 63 64 #ifdef __cplusplus 65 } 66 #endif 67