X-Git-Url: https://mattmccutchen.net/utils/utils.git/blobdiff_plain/35d3e321c44f7044f53a95d8cf7615c8bcf3e5e9..0b522019a1ca445805d15166d17cb9f47f6077d3:/setexec diff --git a/setexec b/setexec deleted file mode 100755 index 6f071eb..0000000 --- a/setexec +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/perl -# setexec: turns a file's executability on or off, same semantics as rsync's --executability -# usage: setexec { + | - | --reference= } [...] - -$cmd = $ARGV[0]; -shift @ARGV; - -if ($cmd =~ /^--reference=(.*)$/) { - $ref_file = $1; - @stbuf = stat($ref_file); - if (@stbuf == 0) { - die "setexec: stat($ref_file): $!\n"; - } - $ref_perms = $stbuf[2] & 07777; - if (($ref_perms & 0111) == 0) { - $cmd = '-'; - } else { - $cmd = '+'; - } -} elsif ($cmd ne '+' && $cmd ne '-') { - die "usage: setexec { + | - | --reference= } [...]\n"; -} - -sub docmd($$) { - my ($cmd, $perms) = @_; - if ($cmd eq '+') { - return $perms | ($perms & 0444) >> 2; - } elsif ($cmd eq '-') { - return $perms & ~0111; - } -} - -file: foreach $file (@ARGV) { - @stbuf = stat($file); - if (@stbuf == 0) { - warn "setexec: stat($file): $!, skipping file\n"; - next file; - } - $perms = $stbuf[2] & 07777; - $perms = docmd($cmd, $perms); - chmod($perms, $file) or warn "setexec: chmod($perms, $file): $!, skipping file\n"; -}