ack/modules/src/string/str2long.c
1994-06-24 11:31:16 +00:00

41 lines
668 B
C

/* $Id$ */
/*
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
/* str2long()
*/
#include "ack_string.h"
value(c, b)
char c;
int b;
{
register int ch;
ch = c - '0';
if ((unsigned) ch <= 9) return ch;
ch = c - 'A';
if ((unsigned) ch <= 5) return ch + 10;
ch = c - 'a';
if ((unsigned) ch <= 5) return ch + 10;
return b;
}
long
str2long(str, base)
register char *str;
int base;
{
int minus = 0, d;
long l = 0;
if (*str == '-') {
minus++;
str++;
}
while ((d = value(*str++, base)) < base)
l = base * l + d;
return minus ? -l : l;
}