• [^] # Re: Oué bon

    Posté par (courriel, site web personnel) . En réponse au journal Virus Multiplateformes. Évalué à 3.

    diff -urp coreutils-5.2.1/lib/filemode.c coreutils-5.2.1.new/lib/filemode.c
    --- coreutils-5.2.1/lib/filemode.c 2000年04月15日 23:54:46.000000000 +0200
    +++ coreutils-5.2.1.new/lib/filemode.c 2006年04月10日 16:14:02.000000000 +0200
    @@ -239,13 +239,13 @@ mode_string (mode_t mode, char *str)
    {
    str[0] = ftypelet (mode);
    str[1] = mode & S_IRUSR ? 'r' : '-';
    - str[2] = mode & S_IWUSR ? 'w' : '-';
    + str[2] = (mode & S_IWUSR) && !(mode & S_IFLNK) ? 'w' : '-';
    str[3] = mode & S_IXUSR ? 'x' : '-';
    str[4] = mode & S_IRGRP ? 'r' : '-';
    - str[5] = mode & S_IWGRP ? 'w' : '-';
    + str[5] = (mode & S_IWGRP) && !(mode & S_IFLNK) ? 'w' : '-';
    str[6] = mode & S_IXGRP ? 'x' : '-';
    str[7] = mode & S_IROTH ? 'r' : '-';
    - str[8] = mode & S_IWOTH ? 'w' : '-';
    + str[8] = (mode & S_IWOTH) && !(mode & S_IFLNK) ? 'w' : '-';
    str[9] = mode & S_IXOTH ? 'x' : '-';
    setst (mode, str);
    }

    Et une fois qu'on a recompilé coreutils:
    $ touch foo
    $ ln -s foo bar
    $ /tmp/coreutils-5.94/_inst/bin/ls -l
    total 0
    lr-xr-xr-x 1 krunch krunch 3 2006年04月10日 16:26 bar -> foo
    -r--r--r-- 1 krunch krunch 0 2006年04月10日 16:26 foo

    Sinon doit y avoir moyen de le faire au niveau du noyau.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.