Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

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

by jbert (Priest)
on Nov 30, 2006 at 16:41 UTC ( [id://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).

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?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2024-03-29 09:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found