This commit makes dash exit with return code 127 instead of 2 if
started as non-interactive shell with a non-existent command_file
specified as argument, as documented in
 http://www.opengroup.org/onlinepubs/009695399/utilities/sh.html#tag_04_128_14

The wrong exit code was reported by Clint Adams through
 http://bugs.debian.org/548743

Signed-off-by: Gerrit Pape <[email protected]>
---
 src/input.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/input.c b/src/input.c
index e57ad76..c1e3e54 100644
--- a/src/input.c
+++ b/src/input.c
@@ -101,6 +101,7 @@ MKINIT struct parsefile basepf;     /* top level input file 
*/
 MKINIT char basebuf[IBUFSIZ];  /* buffer for top level input file */
 struct parsefile *parsefile = &basepf; /* current input file */
 int whichprompt;               /* 1 == PS1, 2 == PS2 */
+extern int exitstatus;
 
 #ifndef SMALL
 EditLine *el;                  /* cookie for editline package */
@@ -408,7 +409,9 @@ setinputfile(const char *fname, int flags)
        if ((fd = open(fname, O_RDONLY)) < 0) {
                if (flags & INPUT_NOFILE_OK)
                        goto out;
-               sh_error("Can't open %s", fname);
+               sh_warnx("Can't open %s", fname);
+               exitstatus = 127;
+               exraise(EXEXIT);
        }
        if (fd < 10)
                fd = savefd(fd, fd);
-- 
1.6.0.3

--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to