1234567891011121314151617181920212223242526272829303132333435363738394041 |
- /* $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;
- }
|