public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "\"Martin v. Löwis\"" <martin@v.loewis.de>
To: "D. Hazelton" <dhazelton@enter.net>
Cc: 7eggert@gmx.de, "H. Peter Anvin" <hpa@zytor.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [Patch] Support UTF-8 scripts
Date: Sun, 18 Sep 2005 08:58:59 +0200	[thread overview]
Message-ID: <432D1033.6040801@v.loewis.de> (raw)
In-Reply-To: <200509172231.33872.dhazelton@enter.net>

D. Hazelton wrote:
> This is news to me. The last time I handed execve() a script as a 
> paramter I had errors returned from execve() -- I must admit that 
> this was not on my current system and I had assumed that the behavior 
> would be consistent.

The kernel checks for #!<path>, and that <path> is an existing
executable. If not, execve fails.

> You are correct. It is fairly trivial. However my point still is valid 
> that the Kernel has the whole binfmt_misc system -- I will admit that 
> I have recently been shown numbers that show a noticeable difference 
> in the speed of a binary executed using the binfmt_misc system and 
> the binfmt_script system, but the fact remains that offering handling 
> for UTF8 and ASCII scripts directly in the kernel will likely lead to 
> at least one more patch in which the the full Unicode standard is 
> implemented.

The problem with the binfmt_misc approach is that you need *another*
execve call: with binfmt_misc, you register <utf8sig>#!, and a
generic binary. Then, this generic binary will interpret the #!
signature *again*, and invoke the proper interpreter. This will
intepret the first line *yet again* (finding that it is a comment),
and continue processing the file.

However, this is not the real problem. The real problem is that
the specific binfmt_misc "backend" would not be universally
available, and then the same script would start on some systems,
and break on others. This may be acceptable for large or specific
applications (e.g. you have to setup the ibcs2 module to run
SCO applications); it is not for scripts.

Now, the "universally available" part would not apply right now,
as only the most recent kernels would provide the feature. However,
within a few years, the feature would be part of "Linux" - then
people can start using it extensively.

> That, and my point remains that the kernel should know absolutely 
> nothing about how to execute a text file - the kernel should return 
> an error to the extent of "I don't know what to do with this file" to 
> the shell that tries to execute it, and the shell can then check for 
> the sh_bang. I do admit that this change would break a lot of 
> existing code, so I'll leave the argument to the experts.

The point is that it is not necessarily the shell which starts
programs - the shell is but one creator of new processes. It is
very common today that, say, httpd starts new programs - this
mechanism is called CGI. Your approach was in use until 1985 or
so, when Unix implementations started to support #! natively.
This was done both for convenience and for performance: if
programs would always use system(3) to start new processes,
there would always be a shell that execs the eventual
interpreter.

I'm not sure, but I believe that most current shells have "forgotten"
how to do the #! magic, since, by now, "traditionally" this is
a kernel responsibility.

Regards,
Martin

  parent reply	other threads:[~2005-09-18  6:59 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4N6EL-4Hq-3@gated-at.bofh.it>
     [not found] ` <4N6EL-4Hq-5@gated-at.bofh.it>
     [not found]   ` <4N6EK-4Hq-1@gated-at.bofh.it>
     [not found]     ` <4N6EX-4Hq-27@gated-at.bofh.it>
     [not found]       ` <4N6Ox-4Ts-33@gated-at.bofh.it>
     [not found]         ` <4N7AS-67L-3@gated-at.bofh.it>
2005-09-16 18:02           ` [Patch] Support UTF-8 scripts Bodo Eggert
2005-09-16 18:09             ` H. Peter Anvin
2005-09-16 18:57               ` Bodo Eggert
2005-09-16 19:08                 ` Martin Mares
2005-09-16 19:25                 ` H. Peter Anvin
2005-09-16 19:57                 ` Horst von Brand
     [not found]             ` <200509170028.59973.dhazelton@enter.net>
2005-09-17  6:28               ` "Martin v. Löwis"
2005-09-17 22:31                 ` D. Hazelton
2005-09-18  3:45                   ` Kyle Moffett
2005-09-19  0:14                     ` D. Hazelton
2005-09-18  6:58                   ` "Martin v. Löwis" [this message]
2005-09-19  0:31                     ` D. Hazelton
2005-09-17 17:16               ` Bodo Eggert
     [not found] <4NVHm-3yE-13@gated-at.bofh.it>
     [not found] ` <4NVHm-3yE-15@gated-at.bofh.it>
     [not found]   ` <4NVHm-3yE-17@gated-at.bofh.it>
     [not found]     ` <4NVHm-3yE-19@gated-at.bofh.it>
     [not found]       ` <4NVHm-3yE-21@gated-at.bofh.it>
     [not found]         ` <4NVHm-3yE-23@gated-at.bofh.it>
     [not found]           ` <4NVHm-3yE-25@gated-at.bofh.it>
     [not found]             ` <4NVHm-3yE-27@gated-at.bofh.it>
     [not found]               ` <4NVHm-3yE-29@gated-at.bofh.it>
     [not found]                 ` <4NVHm-3yE-31@gated-at.bofh.it>
     [not found]                   ` <4NVHn-3yE-33@gated-at.bofh.it>
     [not found]                     ` <4NVHn-3yE-35@gated-at.bofh.it>
     [not found]                       ` <4NVHn-3yE-37@gated-at.bofh.it>
     [not found]                         ` <4NVHn-3yE-39@gated-at.bofh.it>
     [not found]                           ` <4Od1x-3e3-5@gated-at.bofh.it>
     [not found]                             ` <4Od1x-3e3-7@gated-at.bofh.it>
     [not found]                               ` <4Od1w-3e3-3@gated-at.bofh.it>
     [not found]                                 ` <4OfZo-7AG-21@gated-at.bofh.it>
2005-09-19  5:11                                   ` "Martin v. Löwis"
     [not found] <4NsP0-3YF-11@gated-at.bofh.it>
     [not found] ` <4NsP0-3YF-13@gated-at.bofh.it>
     [not found]   ` <4NsP0-3YF-15@gated-at.bofh.it>
     [not found]     ` <4NsP0-3YF-17@gated-at.bofh.it>
     [not found]       ` <4NsP1-3YF-19@gated-at.bofh.it>
     [not found]         ` <4NsP1-3YF-21@gated-at.bofh.it>
     [not found]           ` <4NsOZ-3YF-9@gated-at.bofh.it>
     [not found]             ` <4NsYH-4bv-27@gated-at.bofh.it>
     [not found]               ` <4NtBr-4WU-3@gated-at.bofh.it>
     [not found]                 ` <4NtL0-5lQ-13@gated-at.bofh.it>
2005-09-16 20:34                   ` "Martin v. Löwis"
2005-09-17 12:01                     ` Martin Mares
2005-09-17 12:25                       ` "Martin v. Löwis"
2005-09-17 12:28                         ` Martin Mares
2005-09-17 12:53                           ` "Martin v. Löwis"
2005-09-17 13:05                             ` Martin Mares
2005-09-17 13:33                               ` "Martin v. Löwis"
2005-09-19  7:08                         ` Pavel Machek
2005-09-19  7:18                           ` "Martin v. Löwis"
2005-09-19  7:24                             ` Pavel Machek
2005-09-19  7:46                               ` "Martin v. Löwis"
2005-09-19  7:50                                 ` Pavel Machek
2005-09-19 10:48                               ` Alan Cox
2005-09-19 23:49                             ` Horst von Brand
     [not found]                 ` <4Nu4p-5Js-3@gated-at.bofh.it>
2005-09-16 20:41                   ` "Martin v. Löwis"
2005-09-16 22:08                     ` H. Peter Anvin
2005-09-17  6:05                       ` "Martin v. Löwis"
2005-09-16 22:45                     ` Bernd Petrovitsch
2005-09-17  6:20                       ` "Martin v. Löwis"
2005-09-17 22:28                         ` Bernd Petrovitsch
2005-09-18  7:23                           ` "Martin v. Löwis"
2005-09-18 14:50                             ` Bernd Petrovitsch
2005-09-17  6:45             ` "Martin v. Löwis"
     [not found] ` <4NXfZ-5P0-1@gated-at.bofh.it>
     [not found]   ` <4NYlM-7i0-5@gated-at.bofh.it>
     [not found]     ` <4Olip-6HH-13@gated-at.bofh.it>
2005-09-19  4:41       ` "Martin v. Löwis"
     [not found] <4Nvab-7o5-11@gated-at.bofh.it>
     [not found] ` <4Nvab-7o5-13@gated-at.bofh.it>
     [not found]   ` <4Nvab-7o5-15@gated-at.bofh.it>
     [not found]     ` <4Nvab-7o5-17@gated-at.bofh.it>
     [not found]       ` <4Nvab-7o5-19@gated-at.bofh.it>
     [not found]         ` <4Nvab-7o5-21@gated-at.bofh.it>
     [not found]           ` <4Nvab-7o5-23@gated-at.bofh.it>
     [not found]             ` <4Nvab-7o5-25@gated-at.bofh.it>
     [not found]               ` <4Nvab-7o5-27@gated-at.bofh.it>
     [not found]                 ` <4NvjM-7CU-7@gated-at.bofh.it>
     [not found]                   ` <4NvjM-7CU-5@gated-at.bofh.it>
     [not found]                     ` <4NxbR-20S-1@gated-at.bofh.it>
     [not found]                       ` <4NEn7-3M5-7@gated-at.bofh.it>
     [not found]                         ` <4NTvO-yJ-13@gated-at.bofh.it>
2005-09-18  0:53                           ` Bodo Eggert
2005-09-18 16:53                             ` Bernd Petrovitsch
     [not found]                           ` <4O1MJ-3Hf-5@gated-at.bofh.it>
     [not found]                             ` <4O8Oh-5jp-7@gated-at.bofh.it>
2005-09-18 19:23                               ` Bodo Eggert
2005-09-18 21:03                                 ` Bernd Petrovitsch
2005-09-19 19:37                                   ` Bodo Eggert
2005-09-18 22:29                                 ` Valdis.Kletnieks
2005-09-19  6:03                                 ` H. Peter Anvin
2005-09-19  4:54                               ` "Martin v. Löwis"
2005-09-19  8:26                                 ` Bernd Petrovitsch
2005-09-19  9:00                                   ` Valdis.Kletnieks
2005-09-19  9:41                                     ` Bernd Petrovitsch
2005-09-19 21:40                                   ` "Martin v. Löwis"
     [not found] <4B2ZV-2dl-7@gated-at.bofh.it>
     [not found] ` <4HKbZ-Cx-37@gated-at.bofh.it>
2005-09-15 18:24   ` "Martin v. Löwis"
2005-09-15 18:25     ` H. Peter Anvin
2005-09-15 18:39       ` "Martin v. Löwis"
2005-09-15 19:20         ` H. Peter Anvin
2005-09-16  8:13         ` Bernd Petrovitsch
2005-08-13 12:07 "Martin v. Löwis"
2005-08-13 16:35 ` Stephen Pollei
2005-08-13 18:42   ` Lee Revell
2005-08-13 18:49     ` Hugo Mills
2005-08-13 18:53       ` Lee Revell
2005-08-14  0:57         ` Alan Cox
2005-08-14  1:19           ` Kyle Moffett
2005-08-14  1:40             ` Lee Revell
2005-08-14 10:40               ` Wichert Akkerman
2005-08-13 19:20       ` Lee Revell
2005-08-16  9:46       ` Jan Engelhardt
2005-08-14  0:53     ` Alan Cox
2005-08-14  4:10       ` James Cloos
2005-08-14  6:18     ` Jason L Tibbitts III
     [not found]       ` <feed8cdd050814125845fe4e2e@mail.gmail.com>
2005-08-14 19:59         ` Lee Revell
2005-08-14 20:13           ` Stephen Pollei
2005-08-14 20:22             ` Lee Revell
2005-08-14 22:10               ` "Martin v. Löwis"
2005-08-14 23:55           ` Alan Cox
2005-08-16 13:56           ` David Madore
     [not found]           ` <mailman.1124063520.13257.linux-kernel2news@redhat.com>
2005-08-16 20:17             ` Pete Zaitcev
2005-08-14 21:52       ` Kyle Moffett
2005-08-14 22:12         ` Valdis.Kletnieks
2005-08-15  8:01     ` Helge Hafting
2005-08-31 23:27 ` H. Peter Anvin

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=432D1033.6040801@v.loewis.de \
    --to=martin@v.loewis.de \
    --cc=7eggert@gmx.de \
    --cc=dhazelton@enter.net \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    /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