/usr/share/avfs/extfs/a is in avfs 1.0.1-2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | #! /usr/bin/perl -w
#
# External filesystem for mc, using mtools
# Written Ludek Brukner <lubr@barco.cz>, 1997
# Much improved by Tom Perkins <968794022@noid.net>, 2000
#
# WARNING - This software is ALPHA - Absolutely NO WARRANTY
#
# These mtools components must be in PATH for this to work
sub quote {
$_ = shift(@_);
s/([^\w\/.+-])/\\$1/g;
return($_);
}
$mmd = "mmd";
$mrd = "mrd";
$mdel = "mdel";
$mdir = "mdir -a";
$mcopy = "mcopy -noQ";
$0 =~ s|.*/||;
$qdisk = quote($0);
$ENV{MTOOLS_DATE_STRING} = "mm-dd-yyyy";
$ENV{MTOOLS_TWENTY_FOUR_HOUR_CLOCK} = "1";
SWITCH: for ( $ARGV[0] ) {
/list/ && do {
@dirs = get_dirs("");
while ($dir = shift(@dirs)) {
push @dirs, get_dirs("$dir/");
} exit 0; };
/mkdir/ && do {
shift; shift;
exit 1 if scalar(@ARGV) != 1;
$qname = quote($ARGV[0]);
system("$mmd $qdisk:/$qname >/dev/null");
exit 0; };
/rmdir/ && do {
shift; shift;
exit 1 if scalar(@ARGV) != 1;
$qname = quote($ARGV[0]);
system("$mrd $qdisk:/$qname >/dev/null");
exit 0; };
/rm/ && do {
shift; shift;
exit 1 if scalar(@ARGV) != 1;
$qname = quote($ARGV[0]);
system("$mdel $qdisk:/$qname >/dev/null");
exit 0; };
/copyout/ && do {
shift; shift;
exit 1 if scalar(@ARGV) != 2;
( $qsrc, $qdest ) = @ARGV;
$qsrc = quote($qsrc);
$qdest = quote($qdest);
system("$mcopy $qdisk:/$qsrc $qdest >/dev/null");
exit 0; };
/copyin/ && do {
shift; shift;
exit 1 if scalar(@ARGV) != 2;
( $qdest, $qsrc ) = @ARGV;
$qsrc = quote($qsrc);
$qdest = quote($qdest);
system("$mcopy $qsrc $qdisk:/$qdest >/dev/null");
exit 0; };
/.*/ && do { # an unfamiliar command
exit 1; };
}
sub get_dirs {
my ($path, $name, $size, $date, $time, $longname, @lst, @rv);
$path = shift(@_);
my $qpath = quote($path);
@rv = ();
open(FILE,"$mdir $qdisk:/$qpath |");
while ( <FILE> ) {
chomp();
/^ / && next; # ignore `non-file' lines
m{^Directory for $0:/}i && next; # ignore `non-file' lines
/^$/ && next; # ignore empty lines
/^\.\.?/ && next; # ignore `.' and `..'
$name = substr($_,0,12);
$name =~ s/^([^ ]*) +([^ ]+)[ \t]*$/$1.$2/;
$name =~ s/[ .]+$//;
$_ = substr($_,12);
s/^[ ]+//;
($size,$date,$time,$longname) = split(/[ \t]+/, $_, 4);
defined $time || next;
# process "am" and "pm". Should not be needed if
# MTOOLS_TWENTY_FOUR_HOUR_CLOCK is respected.
@lst = split(/([:ap])/, $time);
$lst[0] += 12 if (defined $lst[3] && $lst[3] eq "p");
$time = sprintf("%02d:%02d", $lst[0], $lst[2]);
@lst = split(/-/, $date);
$lst[2] %= 100 if ($lst[2] > 100);
$date = sprintf ("%02d-%02d-%02d", @lst);
$name = $path . lc(($longname) ? $longname : $name);
if ($size =~ /DIR/) {
printf("drwxr-xr-x 1 %-8d %-8d %8d %s %s %s\n",
0, 0, 0, $date, $time, $name);
push @rv, $name;
} else {
printf("-rw-r--r-- 1 %-8d %-8d %8d %s %s %s\n",
0, 0, $size, $date, $time, $name);
}
}
close(FILE);
return @rv;
}
1;
|