On Sun, Nov 28, 2010 at 08:24:37PM +0800, Herbert Xu wrote:
> On Sun, Nov 28, 2010 at 08:06:27PM +0800, Herbert Xu wrote:
> >
> > However, instead of adding an ad-hoc exception for EXFILE, I'm
> > simply going to move the exit status setting for EXERROR out of
> > main.c and into error.c which should let you get what you want.
> 
> Something like this:

And here is the final patch that I applied for this:

commit 34f60a3781ea8f17f3d2a1a743a9aab9b31a296f
Author: Gerrit Pape <p...@smarden.org>
Date:   Sun Nov 28 20:32:00 2010 +0800

    [INPUT] Use exit status 127 when the script to run does not exist
    
    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 (or a directory), 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 and Jari Aalto through
     http://bugs.debian.org/548743
     http://bugs.debian.org/548687
    
    Signed-off-by: Gerrit Pape <p...@smarden.org>
    Signed-off-by: Herbert Xu <herb...@gondor.apana.org.au>

diff --git a/ChangeLog b/ChangeLog
index e5479a8..a18838c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-11-28  Gerrit Pape <p...@smarden.org>
+
+       * Use exit status 127 when the script to run does not exist.
+
 2010-11-28  Philipp Weis <pw...@pweis.com>
 
        * Document optional open parenthesis for case patterns.
diff --git a/src/input.c b/src/input.c
index e57ad76..bd3a9a2 100644
--- a/src/input.c
+++ b/src/input.c
@@ -42,6 +42,7 @@
  * This file implements the input routines used by the parser.
  */
 
+#include "eval.h"
 #include "shell.h"
 #include "redir.h"
 #include "syntax.h"
@@ -408,7 +409,8 @@ 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);
+               exitstatus = 127;
+               exerror(EXERROR, "Can't open %s", fname);
        }
        if (fd < 10)
                fd = savefd(fd, fd);

Thanks,
-- 
Email: Herbert Xu <herb...@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to