Minor code cleanup.
This commit is contained in:
parent
e11887a77d
commit
19973b6ad9
170
common/main.c
170
common/main.c
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue