public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Jan Nieuwenhuizen <janneke@gnu.org>
To: Pavel Machek <pavel@suse.cz>
Cc: Erik Hensema <erik@hensema.xs4all.nl>,
	linux-kernel@vger.kernel.org, bug-bash@gnu.org
Subject: Re: binfmt_script and ^M
Date: 05 Mar 2001 14:20:23 +0100	[thread overview]
Message-ID: <m3k8648i94.fsf@appel.lilypond.org> (raw)
In-Reply-To: <20010227140333.C20415@cistron.nl> <E14XkQG-0003R7-00@the-village.bc.nu> <20010228211043.A4579@hensema.xs4all.nl> <20010301120446.A34@(none)>
In-Reply-To: Pavel Machek's message of "Thu, 1 Mar 2001 12:04:47 +0000"

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


  reply	other threads:[~2001-03-05 13:20 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-02-27 13:03 binfmt_script and ^M Ivo Timmermans
2001-02-27 13:44 ` Alan Cox
2001-02-27 13:47   ` Ivo Timmermans
2001-02-27 13:54     ` Alan Cox
2001-02-27 14:36       ` Rogier Wolff
2001-02-28 20:10   ` Erik Hensema
2001-03-01 12:04     ` Pavel Machek
2001-03-05 13:20       ` Jan Nieuwenhuizen [this message]
2001-03-05 13:37         ` Andreas Schwab
2001-03-05 13:40         ` Richard B. Johnson
2001-03-05 14:55           ` John Kodis
2001-03-05 15:25             ` Rik van Riel
2001-03-05 15:59               ` Jeff Mcadams
2001-03-05 16:18                 ` Paul Flinders
2001-03-05 17:12                   ` Andreas Schwab
2001-03-05 19:54                     ` Paul Flinders
2001-03-05 20:09                       ` Paul Flinders
2001-03-06 10:41                       ` Andreas Schwab
2001-03-06 12:33                         ` Paul Flinders
2001-03-06 14:45                           ` Laramie Leavitt
2001-03-06 15:12                             ` Sean Hunter
2001-03-06 15:37                               ` David Weinehall
2001-03-06 21:10                                 ` Thorsten Glaser Geuer
     [not found]                                   ` <20010308130145.O20737@dev.sportingbet.com>
2001-03-09 16:52                                     ` Thorsten Glaser Geuer
2001-03-06 15:53                               ` James A. Sutherland
2001-03-06 16:59                               ` Xavier Bestel
2001-03-07  8:29                               ` Ondrej Sury
2001-03-06 18:17                           ` binfmt_script and ^M (historical note) Don Dugger
2001-03-05 18:58                   ` binfmt_script and ^M Pozsar Balazs
2001-03-05 20:39                     ` Robert Read
2001-03-05 21:05                       ` Pozsar Balazs
2001-03-05 22:34                         ` Robert Read
2001-03-06 15:14                           ` Jeff Coy
2001-03-06 18:15                             ` Peter Samuelson
2001-03-06 18:36                               ` Jeff Coy
2001-03-06 20:26                                 ` John Kodis
2001-03-06 20:43                                   ` Andreas Schwab
2001-03-06  2:18                       ` Richard B. Johnson
2001-03-05 15:50             ` Richard B. Johnson
2001-03-05 16:53               ` H. Peter Anvin
2001-03-05 21:48             ` Dr. Kelsey Hudson
2001-03-06 18:19               ` Peter Samuelson
2001-03-06 21:04                 ` Dr. Kelsey Hudson
2001-03-05 14:56           ` [PATCH]: print missing interpreter name [Was: Re: binfmt_script and ^M] Jan Nieuwenhuizen
2001-03-05 15:59             ` Richard B. Johnson
2001-03-05 20:18               ` [PATCH #3]: " Jan Nieuwenhuizen
2001-03-05 16:37           ` binfmt_script and ^M Erik Hensema
2001-03-05 22:13             ` Pavel Machek
  -- strict thread matches above, loose matches on Subject: below --
2001-02-27 13:42 Heusden, Folkert van
2001-02-27 13:38 ` Ivo Timmermans
2001-02-27 14:01   ` Bruce Harada
2001-02-27 19:20   ` Jamie Lokier
2001-02-27 19:59     ` Don Dugger
2001-02-27 21:35   ` Rogier Wolff
2001-02-27 13:53 Heusden, Folkert van
2001-02-27 14:26 ` Alistair Riddell
2001-02-27 23:22   ` David
2001-02-28 14:07     ` Jamie Lokier
2001-02-28 22:23       ` H. Peter Anvin
2001-03-05 19:14 Jesse Pollard
2001-03-06 20:54 ` Thorsten Glaser Geuer
2001-03-05 21:15 Andries.Brouwer
2001-03-06 13:55 Jesse Pollard
2001-03-06 14:54 ` Andreas Schwab
2001-03-06 15:56 Jesse Pollard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=m3k8648i94.fsf@appel.lilypond.org \
    --to=janneke@gnu.org \
    --cc=bug-bash@gnu.org \
    --cc=erik@hensema.xs4all.nl \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pavel@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox