lash: fix compile-time warning

This commit is contained in:
Denis Vlasenko 2007-11-15 17:47:45 +00:00
parent 6d38dc3af4
commit a6899c3587

View File

@ -157,8 +157,8 @@ static int shell_context; /* Type prompt trigger (PS1 or PS2) */
static char *cwd; static char *cwd;
static char *local_pending_command; static char *local_pending_command;
static struct jobset job_list = { NULL, NULL }; static struct jobset job_list = { NULL, NULL };
static int argc; static int global_argc;
static char **argv; static char **global_argv;
static llist_t *close_me_list; static llist_t *close_me_list;
static int last_return_code; static int last_return_code;
static int last_bg_pid; static int last_bg_pid;
@ -810,16 +810,16 @@ static int expand_arguments(char *command)
var = itoa(getpid()); var = itoa(getpid());
break; break;
case '#': case '#':
var = itoa(argc-1); var = itoa(global_argc - 1);
break; break;
case '0':case '1':case '2':case '3':case '4': case '0':case '1':case '2':case '3':case '4':
case '5':case '6':case '7':case '8':case '9': case '5':case '6':case '7':case '8':case '9':
{ {
int ixx = *(dst+1)-48+1; int ixx = *(dst+1)-48+1;
if (ixx >= argc) { if (ixx >= global_argc) {
var = '\0'; var = '\0';
} else { } else {
var = argv[ixx]; var = global_argv[ixx];
} }
} }
break; break;
@ -1492,12 +1492,13 @@ static inline void setup_job_control(void)
#endif #endif
int lash_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int lash_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
int lash_main(int argc_l, char **argv_l) int lash_main(int argc, char **argv)
{ {
unsigned opt; unsigned opt;
FILE *input = stdin; FILE *input = stdin;
argc = argc_l;
argv = argv_l; global_argc = argc;
global_argv = argv;
#if ENABLE_FEATURE_EDITING #if ENABLE_FEATURE_EDITING
line_input_state = new_line_input_t(FOR_SHELL); line_input_state = new_line_input_t(FOR_SHELL);
@ -1510,7 +1511,7 @@ int lash_main(int argc_l, char **argv_l)
job_list.fg = NULL; job_list.fg = NULL;
last_return_code = 1; last_return_code = 1;
if (argv[0] && argv[0][0] == '-') { if (global_argv[0] && global_argv[0][0] == '-') {
FILE *prof_input; FILE *prof_input;
prof_input = fopen("/etc/profile", "r"); prof_input = fopen("/etc/profile", "r");
if (prof_input) { if (prof_input) {
@ -1522,13 +1523,13 @@ int lash_main(int argc_l, char **argv_l)
} }
} }
opt = getopt32(argv_l, "+ic:", &local_pending_command); opt = getopt32(argv, "+ic:", &local_pending_command);
#define LASH_OPT_i (1<<0) #define LASH_OPT_i (1<<0)
#define LASH_OPT_c (1<<1) #define LASH_OPT_c (1<<1)
if (opt & LASH_OPT_c) { if (opt & LASH_OPT_c) {
input = NULL; input = NULL;
optind++; optind++;
argv += optind; global_argv += optind;
} }
/* A shell is interactive if the `-i' flag was given, or if all of /* A shell is interactive if the `-i' flag was given, or if all of
* the following conditions are met: * the following conditions are met:
@ -1537,7 +1538,7 @@ int lash_main(int argc_l, char **argv_l)
* standard input is a terminal * standard input is a terminal
* standard output is a terminal * standard output is a terminal
* Refer to Posix.2, the description of the `sh' utility. */ * Refer to Posix.2, the description of the `sh' utility. */
if (argv[optind] == NULL && input == stdin if (global_argv[optind] == NULL && input == stdin
&& isatty(STDIN_FILENO) && isatty(STDOUT_FILENO) && isatty(STDIN_FILENO) && isatty(STDOUT_FILENO)
) { ) {
opt |= LASH_OPT_i; opt |= LASH_OPT_i;
@ -1550,9 +1551,9 @@ int lash_main(int argc_l, char **argv_l)
"Enter 'help' for a list of built-in commands.\n\n", "Enter 'help' for a list of built-in commands.\n\n",
bb_banner); bb_banner);
} }
} else if (!local_pending_command && argv[optind]) { } else if (!local_pending_command && global_argv[optind]) {
//printf( "optind=%d argv[optind]='%s'\n", optind, argv[optind]); //printf( "optind=%d argv[optind]='%s'\n", optind, argv[optind]);
input = xfopen(argv[optind], "r"); input = xfopen(global_argv[optind], "r");
/* be lazy, never mark this closed */ /* be lazy, never mark this closed */
llist_add_to(&close_me_list, (void *)(long)fileno(input)); llist_add_to(&close_me_list, (void *)(long)fileno(input));
} }