[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: binfmt_script and ^M
From: |
Jan Nieuwenhuizen |
Subject: |
Re: binfmt_script and ^M |
Date: |
05 Mar 2001 14:20:23 +0100 |
User-agent: |
Gnus/5.0807 (Gnus v5.8.7) Emacs/20.7 |
Pavel Machek <pavel@suse.cz> writes:
> > $ head -1 testscript
> > #!/bin/sh
> > $ ./testscript
> > bash: ./testscript: No such file or directory
>
> What kernel wants to say is "/usr/bin/perl\r: no such file". Saying ENOEXEC
> would be even more confusing.
So, why don't we make bash say that, then? As I guess that we've all
been bitten by this before.
What are the chances for something like this to be included?
Greetings,
Jan.
--- ../bash-2.04/execute_cmd.c Tue Jan 25 17:29:11 2000
+++ ./execute_cmd.c Mon Mar 5 13:50:23 2001
@@ -3035,6 +3035,42 @@
}
}
+/* Look for #!INTERPRETER in file COMMAND, and return INTERPRETER . */
+static char *
+extract_hash_bang_interpreter (char *command, char buf[80])
+{
+ int fd;
+ char *interpreter;
+
+ interpreter = "";
+ fd = open (command, O_RDONLY);
+ if (fd >= 0)
+ {
+ int len;
+
+ len = read (fd, (char *)buf, 80);
+ close (fd);
+
+ if (len > 0
+ && buf[0] == '#' && buf[1] == '!')
+ {
+ int i;
+ int start;
+
+ for (i = 2; whitespace (buf[i]) && i < len; i++)
+ ;
+
+ for (start = i;
+ !whitespace (buf[i]) && buf[i] != '\n' && i < len;
+ i++)
+ ;
+
+ interpreter = substring ((char *)buf, start, i);
+ }
+ }
+ return interpreter;
+}
+
/* Execute a simple command that is hopefully defined in a disk file
somewhere.
@@ -3155,7 +3191,12 @@
if (command == 0)
{
- internal_error ("%s: command not found", pathname);
+ char buf[80];
+ char *interpreter = extract_hash_bang_interpreter (pathname, buf);
+
+ internal_error ("%s: command not found: `%s'", pathname,
+ interpreter);
+
exit (EX_NOTFOUND); /* Posix.2 says the exit status is 127 */
}
--
Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond - The music typesetter
http://www.xs4all.nl/~jantien | http://www.lilypond.org
- Re: binfmt_script and ^M,
Jan Nieuwenhuizen <=
- Re: binfmt_script and ^M, Alan Cox, 2001/03/05
- Re: binfmt_script and ^M, Andreas Schwab, 2001/03/05
- Re: binfmt_script and ^M, Richard B. Johnson, 2001/03/05
- Re: binfmt_script and ^M, John Kodis, 2001/03/05
- Re: binfmt_script and ^M, Rik van Riel, 2001/03/05
- Re: binfmt_script and ^M, Jeff Mcadams, 2001/03/05
- Re: binfmt_script and ^M, Paul Flinders, 2001/03/05
- Re: binfmt_script and ^M, Andreas Schwab, 2001/03/05
- Re: binfmt_script and ^M, Paul Flinders, 2001/03/05
- Re: binfmt_script and ^M, Paul Flinders, 2001/03/05