PageRenderTime 14ms CodeModel.GetById 2ms app.highlight 8ms RepoModel.GetById 1ms app.codeStats 0ms

/contrib/groff/src/libs/libgroff/itoa.c

https://bitbucket.org/freebsd/freebsd-head/
C | 64 lines | 38 code | 5 blank | 21 comment | 8 complexity | b72cce3a11edafc7b3684762a5962e47 MD5 | raw file
 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