|
|
DataMuseum.dkPresents historical artifacts from the history of: Commodore CBM-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Commodore CBM-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 840 (0x348)
Types: TextFile
Notes: UNIX file
Names: »atoi.c«
└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code
└─⟦f4b8d8c84⟧ UNIX Filesystem
└─⟦this⟧ »cmd/rsh/atoi.c«
└─⟦this⟧ »cmd/sh/atoi.c«
/*
* Non-floating ASCII to int conversion
* int atoi(cp)
* char *cp;
* Modified by rec 22.Apr.82 to allow octal and hexadecimal.
*/
atoi(cp)
register char *cp;
{
register val;
register c;
register base;
int sign;
val = sign = 0;
while ((c = *cp)==' ' || c=='\t')
cp++;
if (c == '-') {
sign = 1;
cp++;
} else if (c == '+')
cp++;
base = 10;
if ((c = *cp) == '0') {
cp++;
if ((c = *cp) == 'x' || c == 'X') {
cp++;
base = 16;
} else
base = 8;
}
for (;;) {
c = *cp++;
if ((c -= '0') >= 0 && c <= 9) {
val = val*base - c;
continue;
}
if (base == 16) {
if ((c += 10 + '0' - 'A') >= 0 && c < base) {
val = val*base - c;
continue;
}
if ((c += 'A' - 'a') >= 0 && c < base) {
val = val*base - c;
continue;
}
}
break;
}
if (!sign)
val = -val;
return (val);
}