summaryrefslogtreecommitdiff
path: root/bcc/misc/test/atol.t
blob: 79c78b7836b1dc3e59249ac21e8e774165c8348e (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
/* atol.c - long atol( char *s ) */

/* atol  converts  s  to a long */
/* leading spaces and tabs are ignored, an optional sign is recognised, */
/* and the digits (0 to 9) following determine the long */

long atol( s )
register char *s;
{
	char signflag;
	long number;

	while ( *s == ' ' || *s == '\t')
		s++;
	signflag = 0;
	if ( *s == '+' )
		s++;
	else if ( *s == '-' )
	{
		signflag = 1;
		s++;
	}
	number = 0;
	while ( *s >= '0' && *s <= '9' )
		number = 10 * number + *s++ - '0';
	if ( signflag )
		return -number;
	return number;
}