version 1.55, 2005/03/02 10:12:15 |
version 1.56, 2005/05/29 18:44:36 |
|
|
|
|
#include <sys/types.h> |
#include <sys/types.h> |
#include <errno.h> |
#include <errno.h> |
|
#include <limits.h> |
#include <unistd.h> |
#include <unistd.h> |
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
|
|
* doexpr - evaluate arithmetic |
* doexpr - evaluate arithmetic |
* expression |
* expression |
*/ |
*/ |
|
{ |
|
int base = 10; |
|
int maxdigits = 0; |
|
const char *errstr; |
|
|
|
if (argc > 3) { |
|
base = strtonum(argv[3], 2, 36, &errstr); |
|
if (errstr) { |
|
errx(1, "base %s invalid", argv[3]); |
|
} |
|
} |
|
if (argc > 4) { |
|
maxdigits = strtonum(argv[4], 0, INT_MAX, &errstr); |
|
if (errstr) { |
|
errx(1, "maxdigits %s invalid", argv[4]); |
|
} |
|
} |
if (argc > 2) |
if (argc > 2) |
pbnum(expr(argv[2])); |
pbnumbase(expr(argv[2]), base, maxdigits); |
break; |
break; |
|
} |
|
|
case IFELTYPE: |
case IFELTYPE: |
if (argc > 4) |
if (argc > 4) |
|
|
|
|
if (argc > 2) { |
if (argc > 2) { |
for (ind = 2; ind < argc; ind++) { |
for (ind = 2; ind < argc; ind++) { |
n = atoi(argv[ind]); |
const char *errstr; |
if (n > 0 && n < maxout && outfile[n] != NULL) |
n = strtonum(argv[ind], 1, INT_MAX, &errstr); |
getdiv(n); |
if (errstr) { |
|
if (errno == EINVAL && mimic_gnu) |
|
getdivfile(argv[ind]); |
|
} else { |
|
if (n < maxout && outfile[n] != NULL) |
|
getdiv(n); |
|
} |
} |
} |
} |
} |
else |
else |
|
|
while(*src) { |
while(*src) { |
if (src[1] == '-' && src[2]) { |
if (src[1] == '-' && src[2]) { |
unsigned char i; |
unsigned char i; |
for (i = (unsigned char)src[0]; |
if ((unsigned char)src[0] <= (unsigned char)src[2]) { |
i <= (unsigned char)src[2]; i++) { |
for (i = (unsigned char)src[0]; |
*p++ = i; |
i <= (unsigned char)src[2]; i++) { |
if (p == end) { |
*p++ = i; |
*p = '\0'; |
if (p == end) { |
return buffer; |
*p = '\0'; |
|
return buffer; |
|
} |
|
} |
|
} else { |
|
for (i = (unsigned char)src[0]; |
|
i >= (unsigned char)src[2]; i--) { |
|
*p++ = i; |
|
if (p == end) { |
|
*p = '\0'; |
|
return buffer; |
|
} |
} |
} |
} |
} |
src += 3; |
src += 3; |