Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re^2: (OT) Fixing Line Endings - patch the shell

by jbert (Priest)
on Nov 30, 2006 at 16:41 UTC ( #586996=note: print w/replies, xml ) Need Help??

in reply to Re: (OT) Fixing Line Endings - patch the shell
in thread (OT) Fixing Line Endings

Because it's not the shell. It's the kernel, really. (I think this has been on PM recently...ah, here we are).

I suggested (and outlined) a patch for the kernel above. There might be a more clever way of doing it with a loadable kernel module to avoid rebuilding your kernel, but that would probably be quite a bit more work (but allow you to use your vendor kernel).

  • Comment on Re^2: (OT) Fixing Line Endings - patch the shell

Replies are listed 'Best First'.
Re^3: (OT) Fixing Line Endings - patch the shell (kernel)
by tye (Sage) on Nov 30, 2006 at 17:18 UTC

    Yes, there's no good excuse for the kernel failing to ignore what is clearly whitespace. Someone please fix Linux already. This bug has existed for way too long.

    ( And how come it seems that there aren't any Linux users that know that she-bang lines are handled by the kernel? I think that change even predates Linux so there never was a Linux where the shell had to do the #!-handling. How many decades does it take for people to catch on? :)

    - tye        

      Interestingly, the kernel code in question (C, not perl I'm afraid :-) already does this:
      while (cp > bprm->buf) { cp--; if ((*cp == ' ') || (*cp == '\t')) *cp = '\0'; else break; }
      i.e. it finished the executable name at the first space or tab. I guess a better patch would be to change that if test to also null out '\r' (hmm...and probably form-feed and others whilst we're at it).

      I wonder how loudly people would scream if this were proposed as a kosher kernel patch. It breaks backwards compatability quite badly, but perhaps only for people who deserve it...

        Just change that to:

        if (isspace(*cp)) *cp = '\0';
        Don't forget to #include <linux/ctype.h> up top, though, to get this macro...

      When I first started with openbsd and freebsd 6 years ago I assumed the shell was responsible for the shebang, and never revisited the topic to challenge that assumption. It was never quite important enough for me to research it.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://586996]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (9)
As of 2021-05-11 10:32 GMT
Find Nodes?
    Voting Booth?
    Perl 7 will be out ...

    Results (116 votes). Check out past polls.