• Greg Price's avatar
    Mark files as executable that are meant as scripts. (GH-15354) · fa3a38d8
    Greg Price authored
    This is the converse of GH-15353 -- in addition to plenty of
    scripts in the tree that are marked with the executable bit
    (and so can be directly executed), there are a few that have
    a leading `#!` which could let them be executed, but it doesn't
    do anything because they don't have the executable bit set.
    
    Here's a command which finds such files and marks them.  The
    first line finds files in the tree with a `#!` line *anywhere*;
    the next-to-last step checks that the *first* line is actually of
    that form.  In between we filter out files that already have the
    bit set, and some files that are meant as fragments to be
    consumed by one or another kind of preprocessor.
    
        $ git grep -l '^#!' \
          | grep -vxFf <( \
              git ls-files --stage \
              | perl -lane 'print $F[3] if (!/^100644/)' \
            ) \
          | grep -ve '\.in$' -e '^Doc/includes/' \
          | while read f; do
              head -c2 "$f" | grep -qxF '#!' \
              && chmod a+x "$f"; \
            done
    fa3a38d8
asdl_c.py 43.5 KB