xref: /minix3/minix/lib/libc/gen/itoa.c (revision bad58c9c5145c5fa2a65ce5ca37ceebbbd315e2d)
1*bad58c9cSBen Gras #include <lib.h>
2*bad58c9cSBen Gras /* Integer to ASCII for signed decimal integers. */
3*bad58c9cSBen Gras 
4*bad58c9cSBen Gras static int next;
5*bad58c9cSBen Gras static char qbuf[8];
6*bad58c9cSBen Gras 
7*bad58c9cSBen Gras char *itoa(int n);
8*bad58c9cSBen Gras 
itoa(int n)9*bad58c9cSBen Gras char *itoa(int n)
10*bad58c9cSBen Gras {
11*bad58c9cSBen Gras   register int r, k;
12*bad58c9cSBen Gras   int flag = 0;
13*bad58c9cSBen Gras 
14*bad58c9cSBen Gras   next = 0;
15*bad58c9cSBen Gras   if (n < 0) {
16*bad58c9cSBen Gras 	qbuf[next++] = '-';
17*bad58c9cSBen Gras 	n = -n;
18*bad58c9cSBen Gras   }
19*bad58c9cSBen Gras   if (n == 0) {
20*bad58c9cSBen Gras 	qbuf[next++] = '0';
21*bad58c9cSBen Gras   } else {
22*bad58c9cSBen Gras 	k = 10000;
23*bad58c9cSBen Gras 	while (k > 0) {
24*bad58c9cSBen Gras 		r = n / k;
25*bad58c9cSBen Gras 		if (flag || r > 0) {
26*bad58c9cSBen Gras 			qbuf[next++] = '0' + r;
27*bad58c9cSBen Gras 			flag = 1;
28*bad58c9cSBen Gras 		}
29*bad58c9cSBen Gras 		n -= r * k;
30*bad58c9cSBen Gras 		k = k / 10;
31*bad58c9cSBen Gras 	}
32*bad58c9cSBen Gras   }
33*bad58c9cSBen Gras   qbuf[next] = 0;
34*bad58c9cSBen Gras   return(qbuf);
35*bad58c9cSBen Gras }
36