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
|
#!/usr/bin/perl
#
# External filesystem for Windows CE, using SynCE, version 0.1.1,
# patched for new 'pls' output and mc by Aleksey Korenkov <akorenkov@yahoo.com> March 2010
# by Michael Lashkevich <lashkevi@landau.ac.ru> on 10.06.2003
#
# In contrast to #synce it opens the root ("\") directory and, therefore,
# 'cd #synceroot' works slower than 'cd #synce'.
# You have to establish SynCE connection before changin directory
# to #synceroot.
#
$ENV{LANG}="C";
$ENV{LC_ALL}="C";
# These mtools components must be in PATH for this to work
$pls = "pls";
$pcp = "pcp";
$prm = "prm";
$pmkdir = "pmkdir";
$prmdir = "prmdir";
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;
`echo \"$ARGV[0]\" >>/tmp/log.mc`;
system("$pmkdir \"/$ARGV[0]\" >/dev/null");
exit 0; };
/rmdir/ && do {
shift; shift;
exit 1 if scalar(@ARGV) != 1;
system("$prmdir \"/$ARGV[0]\" >/dev/null");
exit 0; };
/rm/ && do {
shift; shift;
exit 1 if scalar(@ARGV) != 1;
system("$prm \"/$ARGV[0]\" >/dev/null");
exit 0; };
/copyout/ && do {
shift; shift;
exit 1 if scalar(@ARGV) != 2;
( $src, $dest ) = @ARGV;
system("rm -f $dest");
system("$pcp \":/$src\" $dest >/dev/null");
exit 0; };
/copyin/ && do {
shift; shift;
exit 1 if scalar(@ARGV) != 2;
( $dest, $src ) = @ARGV;
system("$pcp $src \":/$dest\" >/dev/null");
exit 0; };
/.*/ && do { # an unfamiliar command
exit 1; };
}
sub get_dirs {
my ($path, $name, $pathname, $type0, $type2, $size, $datetime, @lst, @rv);
$path = shift(@_);
@rv = ();
open(FILE,"$pls -a \"/$path\" 2>/dev/null |");
while ( <FILE> ) {
chomp();
/^ / && next; # ignore `non-file' lines
/^$/ && next; # ignore empty lines
/^\.\.?/ && next; # ignore `.' and `..'
if ( ! /^([^\s]+)[ ]+(\d*)-(\d*)-(\d*)[ ]*(\d*:\d*:\d*)*[ ]*(.*)$/ ){
if ( ! /^([^\s]+)[ ]+([\d]*)[ ]*(\d*)-(\d*)-(\d*)[ ]*(\d*:\d*:\d*)[ ]*(.*)/ ){
print "ERR: $_\n";
next;
}
$size=$2;
$year=$3;
$month=$4;
$day=$5;
$time=$6;
$fname=$7;
my $pathname = $path.$fname;
print "-rw-r--r-- 1 root root $size\t $day/$month/$year $time $pathname\n";
next;
}
my $perm = $1;
$year=$2;
$month=$3;
$day=$4;
$time=$5;
$fname=$6;
my $pathname = $path.$fname;
if ($pathname =~ /\/\//){
next;
}
print "drwxr-xr-x 1 root root 0\t $day/$month/$year $time $pathname\n";
push @rv, $pathname;
}
close(FILE);
return @rv;
};
|