123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- #LIST /${FISH_DIR}
- LC_TIME=C
- export LC_TIME
- perl_res="1"
- fish_list_lsq ()
- {
- FISH_DIR="$1"
- ls -Qlan "${FISH_DIR}" 2>/dev/null | grep '^[^cbt]' | (
- while read p l u g s m d y n; do
- echo "P$p $u.$g"
- echo "S$s"
- echo "d$m $d $y"
- echo ":$n"
- echo
- done
- )
- ls -Qlan "${FISH_DIR}" 2>/dev/null | grep '^[cb]' | (
- while read p l u g a i m d y n; do
- echo "P$p $u.$g"
- echo "E$a$i"
- echo "d$m $d $y"
- echo ":$n"
- echo
- done
- )
- echo '### 200'
- }
- fish_list_sed ()
- {
- FISH_DIR="$1"
- ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[^cbt]' | (
- while read p l u g s rec; do
- if [ -n "$g" ]; then
- if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
- filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+ //'`
- filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
- else
- filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ //'`
- filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
- fi
- pfile=\"`echo "$filename" | sed -e 's#^\(.*\) -> \(.*\)#\1" -> "\2#'`\"
- echo "P$p $u.$g"
- echo "S$s"
- if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
- echo "d$filedate"
- else
- echo "D$filedate"
- fi
- echo ":$pfile"
- echo
- fi
- done
- )
- ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[cb]' | (
- while read p l u g a i rec; do
- if [ -n "$g" ]; then
- if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
- filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+ //'`
- filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
- else
- filename=`echo "$rec"| sed 's/[^[:space:]]\+ \+[^[:space:]]\+ //'`
- filedate=`echo "$rec"| sed 's/\([^[:space:]]\+ \+[^[:space:]]\+\) .*/\1/'`
- fi
- pfile=\"`echo "$filename" | sed -e 's#^\(.*\) -> \(.*\)#\1" -> "\2#'`\"
- echo "P$p $u.$g"
- echo "E$a$i"
- if [ -n "$FISH_HAVE_DATE_MDYT" ]; then
- echo "d$filedate"
- else
- echo "D$filedate"
- fi
- echo ":$pfile"
- echo
- fi
- done
- )
- echo '### 200'
- }
- fish_list_poor_ls ()
- {
- FISH_DIR="$1"
- ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[^cbt]' | (
- while read p l u g s m d y n n2 n3; do
- if [ -n "$g" ]; then
- if [ "$m" = "0" ]; then
- s=$d; m=$y; d=$n; y=$n2; n=$n3
- else
- n=$n" "$n2" "$n3
- fi
- echo "P$p $u $g"
- echo "S$s"
- echo "d$m $d $y"
- echo ":"$n
- echo
- fi
- done
- )
- ls -lan "${FISH_DIR}" 2>/dev/null | grep '^[cb]' | (
- while read p l u g a i m d y n n2 n3; do
- if [ -n "$g" ]; then
- if [ "$a" = "0" ]; then
- a=$m; i=$d; m=$y; d=$n; y=$n2; n=$n3
- else
- n=$n" "$n2" "$n3
- fi
- echo "P$p $u $g"
- echo "S$s"
- echo "d$m $d $y"
- echo ":"$n
- echo
- fi
- done
- )
- echo '### 200'
- }
- fish_list_perl ()
- {
- FISH_DIR=$1
- perl -e '
- use strict;
- use POSIX;
- use Fcntl;
- use POSIX ":fcntl_h"; #S_ISLNK was here until 5.6
- import Fcntl ":mode" unless defined &S_ISLNK; #and is now here
- my $dirname = $ARGV[0];
- if (opendir (DIR, $dirname)) {
- while((my $filename = readdir (DIR))){
- my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = lstat("$dirname/$filename");
- my $mloctime= strftime("%%m-%%d-%%Y %%H:%%M", localtime $mtime);
- my $strutils_shell_escape_regex = s/([;<>\*\|`&\$!#\(\)\[\]\{\}:'\''"\ \\])/\\$1/g;
- my $e_filename = $filename;
- $e_filename =~ $strutils_shell_escape_regex;
- if (S_ISLNK ($mode)) {
- my $linkname = readlink ("$dirname/$filename");
- $linkname =~ $strutils_shell_escape_regex;
- printf("R%%o %%o $uid.$gid\nS$size\nd$mloctime\n:\"$e_filename\" -> \"$linkname\"\n\n", S_IMODE($mode), S_IFMT($mode));
- } else {
- printf("R%%o %%o $uid.$gid\nS$size\nd$mloctime\n:\"$e_filename\"\n\n", S_IMODE($mode), S_IFMT($mode));
- }
- }
- printf("### 200\n");
- closedir(DIR);
- } else {
- printf("### 500\n");
- }
- exit 0
- ' "/${FISH_DIR}"
- perl_res=$?
- }
- if [ -n "${FISH_HAVE_PERL}" ]; then
- fish_list_perl "/${FISH_FILENAME}"
- fi
- if [ "${perl_res}" != "0" ]; then
- if [ -n "${FISH_HAVE_LSQ}" ]; then
- fish_list_lsq "/${FISH_FILENAME}"
- elif [ -n "${FISH_HAVE_SED}" ]; then
- fish_list_sed "/${FISH_FILENAME}"
- else
- fish_list_poor_ls "/${FISH_FILENAME}"
- fi
- fi
|