Ticket #3610: remove executable bit from FISH helper scripts
[midnight-commander.git] / src / vfs / fish / helpers / ls
blob909a77d7228e494aafab8d8acf777977357ef5da
1 #LIST /${FISH_DIR}
2 LC_TIME=C
3 export LC_TIME
4 perl_res="1"
5 fish_list_lsq ()
7 FISH_DIR="$1"
8 ls -Qlan "${FISH_DIR}" 2>/dev/null | grep '^[^cbt]' | (
9 while read p l u g s m d y n; do
10     echo "P$p $u.$g"
11     echo "S$s"
12     echo "d$m $d $y"
13     echo ":$n"
14     echo
15 done
18 ls -Qlan "${FISH_DIR}" 2>/dev/null | grep '^[cb]' | (
19 while read p l u g a i m d y n; do
20     echo "P$p $u.$g"
21     echo "E$a$i"
22     echo "d$m $d $y"
23     echo ":$n"
24     echo
25 done
27 echo '### 200'
30 fish_list_sed ()
32 FISH_DIR="$1"
33 ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[^cbt]' | (
34 while read p l u g s rec; do
35     if [ -n "$g" ]; then
36         if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
37             filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+ //'`
38             filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
39         else
40             filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ //'`
41             filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
42         fi
43         pfile=\"`echo "$filename" | sed -e 's#^\(.*\) -> \(.*\)#\1" -> "\2#'`\"
44         echo "P$p $u.$g"
45         echo "S$s"
46         if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
47             echo "d$filedate"
48         else
49             echo "D$filedate"
50         fi
51         echo ":$pfile"
52         echo
53     fi
54 done
56 ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[cb]' | (
57 while read p l u g a i rec; do
58     if [ -n "$g" ]; then
59         if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
60             filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+ //'`
61             filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
62         else
63             filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ //'`
64             filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
65         fi
66         pfile=\"`echo "$filename" | sed -e 's#^\(.*\) -> \(.*\)#\1" -> "\2#'`\"
67         echo "P$p $u.$g"
68         echo "E$a$i"
69         if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
70             echo "d$filedate"
71         else
72             echo "D$filedate"
73         fi
74         echo ":$pfile"
75         echo
76     fi
77 done
79 echo '### 200'
82 fish_list_poor_ls ()
84 FISH_DIR="$1"
85 ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[^cbt]' | (
86 while read p l u g s m d y n n2 n3; do
87     if [ -n "$g" ]; then
88         if [ "$m" = "0" ]; then
89             s=$d; m=$y; d=$n; y=$n2; n=$n3
90         else
91             n=$n" "$n2" "$n3
92         fi
93         echo "P$p $u $g"
94         echo "S$s"
95         echo "d$m $d $y"
96         echo ":"$n
97         echo
98     fi
99 done
101 ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[cb]' | (
102 while read p l u g a i m d y n n2 n3; do
103     if [ -n "$g" ]; then
104         if [ "$a" = "0" ]; then
105             a=$m; i=$d; m=$y; d=$n; y=$n2; n=$n3
106         else
107             n=$n" "$n2" "$n3
108         fi
109         echo "P$p $u $g"
110         echo "E$a$i"
111         echo "d$m $d $y"
112         echo ":"$n
113         echo
114     fi
115 done
117 echo '### 200'
120 fish_list_perl ()
122 FISH_DIR=$1
123 perl -e '
124 use strict;
125 use POSIX;
126 use Fcntl;
127 use POSIX ":fcntl_h"; #S_ISLNK was here until 5.6
128 import Fcntl ":mode" unless defined &S_ISLNK; #and is now here
129 my $dirname = $ARGV[0];
130 if (opendir (DIR, $dirname)) {
131 while((my $filename = readdir (DIR))){
132     my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = lstat("$dirname/$filename");
133     my $mloctime= strftime("%%m-%%d-%%Y %%H:%%M", localtime $mtime);
134     my $strutils_shell_escape_regex = s/([;<>\*\|`&\$!#\(\)\[\]\{\}:'\''"\ \\])/\\$1/g;
135     my $e_filename = $filename;
136     $e_filename =~ $strutils_shell_escape_regex;
137     if (S_ISLNK ($mode)) {
138         my $linkname = readlink ("$dirname/$filename");
139         $linkname =~ $strutils_shell_escape_regex;
140         printf("R%%o %%o $uid.$gid\nS$size\nd$mloctime\n:\"%%s\" -> \"%%s\"\n\n", S_IMODE($mode), S_IFMT($mode), $e_filename, $linkname);
141     } elsif (S_ISCHR ($mode) || S_ISBLK ($mode)) {
142         my $minor = $rdev %% 256;
143         my $major = int( $rdev / 256 );
144         printf("R%%o %%o $uid.$gid\nE$major,$minor\nd$mloctime\n:\"%%s\"\n\n", S_IMODE($mode), S_IFMT($mode), $e_filename);
145     } else {
146         printf("R%%o %%o $uid.$gid\nS$size\nd$mloctime\n:\"%%s\"\n\n", S_IMODE($mode), S_IFMT($mode), $e_filename);
147     }
149     printf("### 200\n");
150     closedir(DIR);
151 } else {
152     printf("### 500\n");
154 exit 0
155 ' "/${FISH_DIR}"
156 perl_res=$?
159 if [ -n "${FISH_HAVE_PERL}" ]; then
160     fish_list_perl "/${FISH_FILENAME}"
162 if [ "${perl_res}" != "0" ]; then
163     if [ -n "${FISH_HAVE_LSQ}" ]; then
164         fish_list_lsq "/${FISH_FILENAME}"
165     elif [ -n "${FISH_HAVE_SED}" ]; then
166         fish_list_sed "/${FISH_FILENAME}"
167     else
168         fish_list_poor_ls "/${FISH_FILENAME}"
169     fi