2 * This code is derived from software copyrighted by the Free Software
5 * Modified 1991 by Donn Seeley at UUNET Technologies, Inc.
9 static char sccsid
[] = "@(#)iftoa.cc 6.3 (Berkeley) 5/8/91";
12 /* Copyright (C) 1989, 1990 Free Software Foundation, Inc.
13 Written by James Clark (jjc@jclark.uucp)
15 This file is part of groff.
17 groff is free software; you can redistribute it and/or modify it under
18 the terms of the GNU General Public License as published by the Free
19 Software Foundation; either version 1, or (at your option) any later
22 groff is distributed in the hope that it will be useful, but WITHOUT ANY
23 WARRANTY; without even the implied warranty of MERCHANTABILITY or
24 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
27 You should have received a copy of the GNU General Public License along
28 with groff; see the file LICENSE. If not, write to the Free Software
29 Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
33 const char *iftoa(int i
, int decimal_point
)
35 /* room for a -, 10 digits, a decimal point, and a terminating '\0' */
36 static char buf
[INT_DIGITS
+ 3];
37 char *p
= buf
+ INT_DIGITS
+ 2;
39 buf
[INT_DIGITS
+ 2] = '\0';
40 /* assert(decimal_point <= INT_DIGITS); */
43 *--p
= '0' + (i
% 10);
45 if (++point
== decimal_point
)
47 } while (i
!= 0 || point
< decimal_point
);
51 *--p
= '0' - (i
% 10);
53 if (++point
== decimal_point
)
55 } while (i
!= 0 || point
< decimal_point
);
58 if (decimal_point
> 0) {
60 /* there must be a dot, so this will terminate */
61 for (q
= buf
+ INT_DIGITS
+ 2; q
[-1] == '0'; --q
)