aboutsummaryrefslogtreecommitdiffstats
path: root/sdk/other/strint.c
blob: f4291a103b9963279979e66e53ae81926f7f895f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*
 * Convert integer to string, with optional leading zeros.
 * $Id$
 * Copyright (c) 1997 by Tycho Softworks.
 * For conditions of distribution and reuse see product license.
 */

#include <other/strcvt.h>

char	*strint(long i, int z)
{
	static	char	buf[30];
	char	b1[30];
        char	*p = buf, *q = b1;
	unsigned u;

	if(!i)
	{
		if(z < 1)
			z = 1;
		while(z--)
			*(p++) = '0';
		*p = 0;
		return buf;
	}
	if((i < 0) && !z)
	{
		i = -i;
		buf[0] = '-';
		++p;
	}
	u = (unsigned)i;

	while(u > 0)
	{	
		*(q++) = (char)(u % 10) + '0';
		u /= 10;
	}
	*q = 0;
	z -= strlen(b1);
	while(z-- > 0)
		*(p++) = '0';
	
	while(q > b1)
		*(p++) = *(--q);
	*p = 0;
	return buf;
}