lkml.org 
[lkml]   [2005]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [Patch] Support UTF-8 scripts
    D. Hazelton wrote:
    >>I would need to write a compiled C program to do all
    >>sorts of fragile hackish things like calling a script
    >>/sbin/init.sh.
    >
    >
    > Problem is, the program
    > would not be fragile or hackish - it'd be almost as simple as a
    > "hello world" program.
    >
    > #include <unistd.h>
    >
    > int main() {
    > /* if this fails the system is busted anyway */
    > return execve( "/bin/sh", "/sbin/init.sh", 0 );
    > };

    This attempt nicely illustrates Kyle's point. This program *is*
    fragile and hackish. It is fragile because, even though it is only
    five lines, contains two major bugs:
    1. execve takes an argv array, not a null-terminated list of
    strings. So this compiles with a warning about incompatible
    pointer types; you meant to use execl(3).
    2. In the exec family, the path to the program is different from
    argv[0]. So the correct line would be

    return execl("/bin/sh", "sh", /sbin/init.sh", 0);

    It is hackisch, because it also lacks a feature commonly
    found in such wrappers:
    3. arguments passed to the wrapper are not forwarded to the
    executable. In particular, init takes several arguments
    (e.g. the runlevel), which should be forwarded to the
    final executable.

    Just try completing the wrapper on your own.

    Regards,
    Martin
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-09-19 06:43    [W:2.912 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site