aboutsummaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/cmdedit.c4
-rw-r--r--shell/lash.c10
2 files changed, 8 insertions, 6 deletions
diff --git a/shell/cmdedit.c b/shell/cmdedit.c
index eef1a88c8..ce5450032 100644
--- a/shell/cmdedit.c
+++ b/shell/cmdedit.c
@@ -1211,7 +1211,8 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
fflush(stdout); /* buffered out to fast */
if (read(inputFd, &c, 1) < 1)
- return;
+ /* if we can't read input then exit */
+ goto prepare_to_die;
switch (c) {
case '\n':
@@ -1243,6 +1244,7 @@ extern void cmdedit_read_input(char *prompt, char command[BUFSIZ])
/* Control-d -- Delete one character, or exit
* if the len=0 and no chars to delete */
if (len == 0) {
+prepare_to_die:
printf("exit");
clean_up_and_die(0);
} else {
diff --git a/shell/lash.c b/shell/lash.c
index 243ba8139..892237b08 100644
--- a/shell/lash.c
+++ b/shell/lash.c
@@ -1019,6 +1019,8 @@ static int expand_arguments(char *command)
(tmpcmd = strsep_space(cmd, &ix)) != NULL; cmd += ix, ix=0) {
if (*tmpcmd == '\0')
break;
+ /* we need to trim() the result for glob! */
+ trim(tmpcmd);
retval = glob(tmpcmd, flags, NULL, &expand_result);
free(tmpcmd); /* Free mem allocated by strsep_space */
if (retval == GLOB_NOSPACE) {
@@ -1041,10 +1043,8 @@ static int expand_arguments(char *command)
error_msg(out_of_space);
return FALSE;
}
- if (i>0) {
- strcat(command+total_length, " ");
- total_length+=1;
- }
+ strcat(command+total_length, " ");
+ total_length+=1;
strcat(command+total_length, expand_result.gl_pathv[i]);
total_length+=length;
}
@@ -1803,7 +1803,7 @@ static int busy_loop(FILE * input)
if (!job_list.fg) {
/* move the shell to the foreground */
/* suppress messages when run from /linuxrc mag@sysgo.de */
- if (tcsetpgrp(0, getpid()) && errno != ENOTTY)
+ if (tcsetpgrp(0, getpgrp()) && errno != ENOTTY)
perror_msg("tcsetpgrp");
}
}