summaryrefslogtreecommitdiff
path: root/tests/rm/fail-eperm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/rm/fail-eperm')
-rwxr-xr-xtests/rm/fail-eperm28
1 files changed, 9 insertions, 19 deletions
diff --git a/tests/rm/fail-eperm b/tests/rm/fail-eperm
index 57b33e8f7..889831163 100755
--- a/tests/rm/fail-eperm
+++ b/tests/rm/fail-eperm
@@ -1,5 +1,4 @@
-#!/bin/sh
-# -*- perl -*-
+#!/usr/bin/perl -Tw
# Ensure that rm gives the expected diagnostic when failing to remove a file
# owned by some other user in a directory with the sticky bit set.
@@ -18,23 +17,9 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-if test "$VERBOSE" = yes; then
- set -x
- rm --version
-fi
-
-# FIXME-someday: when run as root we don't need all of the
-# searching below. root can simply create the required
-# dir/files and run the test as someone else.
-
-ARGV_0=$0
-export ARGV_0
-
-exec $PERL -Tw -- - << \EOP
-require 5.003;
use strict;
-(my $ME = $ENV{ARGV_0}) =~ s|.*/||;
+(my $ME = $0) =~ s|.*/||;
my $uid = $<;
# skip if root
@@ -51,7 +36,13 @@ delete @ENV{qw(BASH_ENV CDPATH ENV PATH)};
$ENV{IFS} = '';
my @dir_list = qw(/tmp /var/tmp /usr/tmp);
-my $rm = '../src/rm';
+my $rm = "$ENV{abs_top_builddir}/src/rm";
+
+# Untaint for upcoming popen.
+$rm =~ m!^([-+\@\w./]+)$!
+ or (warn "$ME: unusual absolute builddir name; skipping this test\n"),
+ exit 77;
+$rm = $1;
# Find a directory with the sticky bit set.
my $found_dir;
@@ -160,4 +151,3 @@ if ( ! $found_file)
. "...so, skipping this test\n";
exit 77;
}
-EOP