Minor code cleanup.

This commit is contained in:
Wolfgang Denk 2006-10-28 00:38:39 +02:00 committed by Wolfgang Denk
parent e11887a77d
commit 19973b6ad9

View file

@ -95,14 +95,12 @@ static __inline__ int abortboot(int bootdelay)
{ {
int abort = 0; int abort = 0;
uint64_t etime = endtick(bootdelay); uint64_t etime = endtick(bootdelay);
struct struct {
{
char* str; char* str;
u_int len; u_int len;
int retry; int retry;
} }
delaykey [] = delaykey [] = {
{
{ str: getenv ("bootdelaykey"), retry: 1 }, { str: getenv ("bootdelaykey"), retry: 1 },
{ str: getenv ("bootdelaykey2"), retry: 1 }, { str: getenv ("bootdelaykey2"), retry: 1 },
{ str: getenv ("bootstopkey"), retry: 0 }, { str: getenv ("bootstopkey"), retry: 0 },
@ -498,7 +496,7 @@ void main_loop (void)
#ifdef CONFIG_BOOT_RETRY_TIME #ifdef CONFIG_BOOT_RETRY_TIME
/*************************************************************************** /***************************************************************************
* initialise command line timeout * initialize command line timeout
*/ */
void init_cmd_timeout(void) void init_cmd_timeout(void)
{ {
@ -529,23 +527,9 @@ void reset_cmd_timeout(void)
* Author: Janghoon Lyu <nandy@mizi.com> * Author: Janghoon Lyu <nandy@mizi.com>
*/ */
#if 1 /* avoid redundand code -- wd */
#define putnstr(str,n) do { \ #define putnstr(str,n) do { \
printf ("%.*s", n, str); \ printf ("%.*s", n, str); \
} while (0) } while (0)
#else
void putnstr(const char *str, size_t n)
{
if (str == NULL)
return;
while (n && *str != '\0') {
putc(*str);
str++;
n--;
}
}
#endif
#define CTL_CH(c) ((c) - 'a' + 1) #define CTL_CH(c) ((c) - 'a' + 1)
@ -1138,97 +1122,99 @@ static void process_macros (const char *input, char *output)
{ {
char c, prev; char c, prev;
const char *varname_start = NULL; const char *varname_start = NULL;
int inputcnt = strlen (input); int inputcnt = strlen (input);
int outputcnt = CFG_CBSIZE; int outputcnt = CFG_CBSIZE;
int state = 0; /* 0 = waiting for '$' */ int state = 0; /* 0 = waiting for '$' */
/* 1 = waiting for '(' or '{' */
/* 2 = waiting for ')' or '}' */ /* 1 = waiting for '(' or '{' */
/* 3 = waiting for ''' */ /* 2 = waiting for ')' or '}' */
/* 3 = waiting for ''' */
#ifdef DEBUG_PARSER #ifdef DEBUG_PARSER
char *output_start = output; char *output_start = output;
printf ("[PROCESS_MACROS] INPUT len %d: \"%s\"\n", strlen(input), input); printf ("[PROCESS_MACROS] INPUT len %d: \"%s\"\n", strlen (input),
input);
#endif #endif
prev = '\0'; /* previous character */ prev = '\0'; /* previous character */
while (inputcnt && outputcnt) { while (inputcnt && outputcnt) {
c = *input++;
inputcnt--;
if (state!=3) {
/* remove one level of escape characters */
if ((c == '\\') && (prev != '\\')) {
if (inputcnt-- == 0)
break;
prev = c;
c = *input++; c = *input++;
} inputcnt--;
}
switch (state) { if (state != 3) {
case 0: /* Waiting for (unescaped) $ */ /* remove one level of escape characters */
if ((c == '\'') && (prev != '\\')) { if ((c == '\\') && (prev != '\\')) {
state = 3; if (inputcnt-- == 0)
break; break;
prev = c;
c = *input++;
}
} }
if ((c == '$') && (prev != '\\')) {
state++;
} else {
*(output++) = c;
outputcnt--;
}
break;
case 1: /* Waiting for ( */
if (c == '(' || c == '{') {
state++;
varname_start = input;
} else {
state = 0;
*(output++) = '$';
outputcnt--;
if (outputcnt) { switch (state) {
case 0: /* Waiting for (unescaped) $ */
if ((c == '\'') && (prev != '\\')) {
state = 3;
break;
}
if ((c == '$') && (prev != '\\')) {
state++;
} else {
*(output++) = c; *(output++) = c;
outputcnt--; outputcnt--;
} }
} break;
break; case 1: /* Waiting for ( */
case 2: /* Waiting for ) */ if (c == '(' || c == '{') {
if (c == ')' || c == '}') { state++;
int i; varname_start = input;
char envname[CFG_CBSIZE], *envval; } else {
int envcnt = input-varname_start-1; /* Varname # of chars */ state = 0;
*(output++) = '$';
outputcnt--;
/* Get the varname */ if (outputcnt) {
for (i = 0; i < envcnt; i++) { *(output++) = c;
envname[i] = varname_start[i];
}
envname[i] = 0;
/* Get its value */
envval = getenv (envname);
/* Copy into the line if it exists */
if (envval != NULL)
while ((*envval) && outputcnt) {
*(output++) = *(envval++);
outputcnt--; outputcnt--;
} }
/* Look for another '$' */ }
state = 0; break;
case 2: /* Waiting for ) */
if (c == ')' || c == '}') {
int i;
char envname[CFG_CBSIZE], *envval;
int envcnt = input - varname_start - 1; /* Varname # of chars */
/* Get the varname */
for (i = 0; i < envcnt; i++) {
envname[i] = varname_start[i];
}
envname[i] = 0;
/* Get its value */
envval = getenv (envname);
/* Copy into the line if it exists */
if (envval != NULL)
while ((*envval) && outputcnt) {
*(output++) = *(envval++);
outputcnt--;
}
/* Look for another '$' */
state = 0;
}
break;
case 3: /* Waiting for ' */
if ((c == '\'') && (prev != '\\')) {
state = 0;
} else {
*(output++) = c;
outputcnt--;
}
break;
} }
break; prev = c;
case 3: /* Waiting for ' */
if ((c == '\'') && (prev != '\\')) {
state = 0;
} else {
*(output++) = c;
outputcnt--;
}
break;
}
prev = c;
} }
if (outputcnt) if (outputcnt)
@ -1236,7 +1222,7 @@ static void process_macros (const char *input, char *output)
#ifdef DEBUG_PARSER #ifdef DEBUG_PARSER
printf ("[PROCESS_MACROS] OUTPUT len %d: \"%s\"\n", printf ("[PROCESS_MACROS] OUTPUT len %d: \"%s\"\n",
strlen(output_start), output_start); strlen (output_start), output_start);
#endif #endif
} }