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