dc: use common_bufsiz1 for evaluation stack msh: fix "underscore bug" (a_b=1111 didn't work) dnsd: openlog(), so that applet's name is logged
No binary (build failed)
—
(log yok)
| @@ -4,22 +4,19 @@ | |
| */ | |
| #include "busybox.h" | |
| - | #include <ctype.h> |
| - | #include <stdio.h> |
| - | #include <stdlib.h> |
| - | #include <string.h> |
| - | #include <unistd.h> |
| #include <math.h> | |
| /* Tiny RPN calculator, because "expr" didn't give me bitwise operations. */ | |
| - | static double stack[100]; |
| + | enum { STACK_SIZE = sizeof(bb_common_bufsiz1) / sizeof(double) }; |
| + | |
| + | #define stack ((double*)&bb_common_bufsiz1) |
| static unsigned int pointer; | |
| static unsigned char base; | |
| static void push(double a) | |
| { | |
| - | if (pointer >= (sizeof(stack) / sizeof(*stack))) |
| + | if (pointer >= STACK_SIZE) |
| bb_error_msg_and_die("stack overflow"); | |
| stack[pointer++] = a; | |
| } | |
| @@ -91,10 +88,10 @@ static void not(void) | |
| static void set_output_base(void) | |
| { | |
| - | base=(unsigned char)pop(); |
| + | base = (unsigned char)pop(); |
| if ((base != 10) && (base != 16)) { | |
| - | fprintf(stderr, "Error: base = %d is not supported.\n", base); |
| - | base=10; |
| + | bb_error_msg("error, base %d is not supported", base); |
| + | base = 10; |
| } | |
| } | |
| @@ -103,12 +100,12 @@ static void print_base(double print) | |
| if (base == 16) | |
| printf("%x\n", (unsigned int)print); | |
| else | |
| - | printf("%g\n", print); |
| + | printf("%g\n", print); |
| } | |
| static void print_stack_no_pop(void) | |
| { | |
| - | unsigned int i=pointer; |
| + | unsigned int i = pointer; |
| while (i) | |
| print_base(stack[--i]); | |
| } | |
| @@ -119,7 +116,7 @@ static void print_no_pop(void) | |
| } | |
| struct op { | |
| - | const char *name; |
| + | const char name[4]; |
| void (*function) (void); | |
| }; | |
| @@ -145,7 +142,7 @@ static const struct op operators[] = { | |
| {"p", print_no_pop}, | |
| {"f", print_stack_no_pop}, | |
| {"o", set_output_base}, | |
| - | {0, 0} |
| + | {"", 0} |
| }; | |
| static void stack_machine(const char *argument) | |
| @@ -164,9 +161,9 @@ static void stack_machine(const char *argument) | |
| return; | |
| } | |
| - | while (o->name != 0) { |
| + | while (o->name[0]) { |
| if (strcmp(o->name, argument) == 0) { | |
| - | (*(o->function)) (); |
| + | o->function(); |
| return; | |
| } | |
| o++; | |
| @@ -185,7 +182,9 @@ static char *get_token(char **buffer) | |
| current = skip_whitespace(*buffer); | |
| if (*current != 0) { | |
| start = current; | |
| - | while (!isspace(*current) && *current != 0) { current++; } |
| + | while (!isspace(*current) && *current != 0) { |
| + | current++; |
| + | } |
| *buffer = current; | |
| } | |
| return start; | |
| @@ -220,7 +219,7 @@ int dc_main(int argc, char **argv) | |
| free(line); | |
| } | |
| } else { | |
| - | if (*argv[1]=='-') |
| + | if (*argv[1] == '-') |
| bb_show_usage(); | |
| while (argc >= 2) { | |
| stack_machine(argv[1]); | |
| @@ -17,6 +17,7 @@ | |
| * the first porting of oao' scdns to busybox also. | |
| */ | |
| + | #include <syslog.h> |
| #include "busybox.h" | |
| //#define DEBUG 1 | |
| @@ -114,7 +115,6 @@ static void undot(uint8_t * rip) | |
| * Presently the dot is copied into name without | |
| * converting to a length/string substring for that label. | |
| */ | |
| - | |
| static int getfileentry(FILE * fp, struct dns_entry *s) | |
| { | |
| unsigned int a,b,c,d; | |
| @@ -359,6 +359,7 @@ int dnsd_main(int argc, char **argv) | |
| #else | |
| xdaemon(1, 0); | |
| #endif | |
| + | openlog(applet_name, LOG_PID, LOG_DAEMON); |
| logmode = LOGMODE_SYSLOG; | |
| } | |
| @@ -1191,23 +1191,22 @@ static int isassign(const char *s) | |
| unsigned char c; | |
| DBGPRINTF7(("ISASSIGN: enter, s=%s\n", s)); | |
| - | /* no isalpha() - we shouldn't use locale */ |
| c = *s; | |
| - | if (c != '_' |
| - | && (unsigned)((c|0x20) - 'a') > 25 /* not letter */ |
| - | ) { |
| + | /* no isalpha() - we shouldn't use locale */ |
| + | /* c | 0x20 - lowercase (Latin) letters */ |
| + | if (c != '_' && (unsigned)((c|0x20) - 'a') > 25) |
| + | /* not letter */ |
| return 0; | |
| - | } |
| + | |
| while (1) { | |
| c = *++s; | |
| - | if (c == '\0') |
| - | return 0; |
| if (c == '=') | |
| return 1; | |
| - | c |= 0x20; /* lowercase letters, doesn't affect numbers */ |
| + | if (c == '\0') |
| + | return 0; |
| if (c != '_' | |
| && (unsigned)(c - '0') > 9 /* not number */ | |
| - | && (unsigned)(c - 'a') > 25 /* not letter */ |
| + | && (unsigned)((c|0x20) - 'a') > 25 /* not letter */ |
| ) { | |
| return 0; | |
| } | |