mc/lib/vfs/mc-vfs/fishdef.h
Ilia Maslakov 36d59acf97 Ticket #2242 (improved FISH)
fixed configure.ac
    added lib/vfs/mc-vfs/fish/Makefile.am lib/vfs/mc-vfs/fishdef.h
    moved lib/vfs/mc-vfs/fish/README.fish
    fixed lib/vfs/mc-vfs/Makefile.am
    added external scripts in lib/vfs/mc-vfs/fish/
        * ls - get gile list
        * mkdir - make directory
        * rmdir - remove directory
        * unlink - delete file
        * chown - change owner/group of file
        * chmod - change mode of file
        * mv - move file
        * ln - make symlink
        * hardlink - make hardlink
        * send - copy file to target host
        * append - append file to target host (if exists)
        * get - copy file from target host
        * info - return resalts of scan remote host (have: perl, sed, awk, etc)

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>

fish.c: optimization and code cleanup
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>

optimization of FISH environment variables.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
2010-07-05 15:35:42 +00:00

237 lines
14 KiB
C

/**
* \file
* \brief Header: FISH script defaults
*/
#ifndef MC_FISH_DEF_H
#define MC_FISH_DEF_H
/* default 'ls' script */
#define FISH_LS_DEF_CONTENT "" \
"#LIST /${FISH_DIR}\n" \
"export LC_TIME=C\n" \
"FISH_DIR=\"/${FISH_PARAM1}\"\n" \
"ls -lan \"${FISH_DIR}\" 2>/dev/null | grep '^[^cbt]' | (\n" \
"while read p l u g s m d y n n2 n3; do\n" \
" if [ -n \"$g\" ]; then\n" \
" if [ \"$m\" = \"0\" ]; then\n" \
" s=$d; m=$y; d=$n; y=$n2; n=$n3\n" \
" else\n" \
" n=$n\" \"$n2\" \"$n3\n" \
" fi\n" \
" echo \"P$p $u $g\"\n" \
" echo \"S$s\"\n" \
" echo \"d$m $d $y\"\n" \
" echo \":\"$n\n" \
" echo\n" \
" fi\n" \
"done\n" \
")\n" \
"ls -lan \"${FISH_DIR}\" 2>/dev/null | grep '^[cb]' | (\n" \
"while read p l u g a i m d y n n2 n3; do\n" \
" if [ -n \"$g\" ]; then\n" \
" if [ \"$a\" = \"0\" ]; then\n" \
" a=$m; i=$d; m=$y; d=$n; y=$n2; n=$n3\n" \
" else\n" \
" n=$n\" \"$n2\" \"$n3\n" \
" fi\n" \
" echo \"P$p $u $g\"\n" \
" echo \"S$s\"\n" \
" echo \"d$m $d $y\"\n" \
" echo \":\"$n\n" \
" echo\n" \
" fi\n" \
"done\n" \
")\n" \
"echo \"### 200\"\n"
/* default file exisits script */
#define FISH_EXISTS_DEF_CONTENT "" \
"FILENAME=\"/${FISH_PARAM1}\"\n" \
"#ISEXISTS $FILENAME\n" \
"ls -l \"${FILENAME}\" >/dev/null 2>/dev/null\n" \
"echo '### '$?\n"
/* default 'mkdir' script */
#define FISH_MKDIR_DEF_CONTENT "" \
"FILENAME=/${FISH_PARAM1}\n" \
"#MKD $FILENAME\n" \
"if mkdir \"$FILENAME\" 2>/dev/null; then\n" \
" echo \"### 000\"\n" \
"else\n" \
" echo \"### 500\"\n" \
"fi\n"
/* default 'unlink' script */
#define FISH_UNLINK_DEF_CONTENT "" \
"FILENAME=\"/${FISH_PARAM1}\"\n" \
"#DELE $FILENAME\n" \
"if rm -f \"${FILENAME}\" 2>/dev/null; then\n" \
" echo \"### 000\"\n" \
"else\n" \
" echo \"### 500\"\n" \
"fi\n"
/* default 'chown' script */
#define FISH_CHOWN_DEF_CONTENT "" \
"FILENAME=\"/${FISH_PARAM1}\"\n" \
"NEWUSER=\"${FISH_PARAM2}\"\n" \
"NEWGROUP=\"${FISH_PARAM3}\"\n" \
"#CHOWN $NEWUSER:$NEWGROUP $FILENAME\n" \
"if chown ${NEWUSER}:${NEWGROUP} \"${FILENAME}\" ; then\n" \
" echo \"### 000\"\n" \
"else\n" \
" echo \"### 500\"\n" \
"fi\n"
/* default 'chmod' script */
#define FISH_CHMOD_DEF_CONTENT "" \
"FISH_FILENAME=\"/${FISH_PARAM1}\"\n" \
"FISH_MODE=\"${FISH_PARAM2}\"\n" \
"#CHMOD $FISH_MODE $FISH_FILENAME\n" \
"if chmod ${FISH_MODE} \"${FISH_FILENAME} 2>/dev/null; then\n" \
" echo \"### 000\"\n" \
"else\n" \
" echo \"### 500\"\n" \
"fi\n"
/* default 'rmdir' script */
#define FISH_RMDIR_DEF_CONTENT "" \
"FILENAME=\"/${FISH_PARAM1}\"\n" \
"#RMD $FILENAME\n" \
"if rmdir \"${FILENAME}\" 2>/dev/null; then\n" \
" echo \"### 000\"\n" \
"else\n" \
" echo \"### 500\"\n" \
"fi\n"
/* default 'ln -s' symlink script */
#define FISH_LN_DEF_CONTENT "" \
"FILEFROM=\"${FISH_PARAM1}\"\n" \
"FILETO=\"/${FISH_PARAM2}\"\n" \
"#SYMLINK $FILEFROM $FILETO\n" \
"if ln -s \"${FILEFROM}\" \"${FILETO}\" 2>/dev/null; then\n" \
" echo \"### 000\"\n" \
"else\n" \
" echo \"### 500\"\n" \
"fi\n"
/* default 'mv' script */
#define FISH_MV_DEF_CONTENT "" \
"FILEFROM=\"/${FISH_PARAM1}\"\n" \
"FILETO=\"/${FISH_PARAM2}\"\n" \
"#RENAME $FILEFROM $FILETO\n" \
"if mv \"${FILEFROM}\" \"${FILETO}\" 2>/dev/null; then\n" \
" echo \"### 000\"\n" \
"else\n" \
" echo \"### 500\"\n" \
"fi\n"
/* default 'ln' hardlink script */
#define FISH_HARDLINK_DEF_CONTENT "" \
"FILEFROM=\"/${FISH_PARAM1}\"\n" \
"FILETO=\"/${FISH_PARAM2}\"\n" \
"#LINK $FILEFROM $FILETO\n" \
"if ln \"${FILEFROM}\" \"${FILETO}\" 2>/dev/null; then\n" \
" echo \"### 000\"\n" \
"else\n" \
" echo \"### 500\"\n" \
"fi\n"
/* default 'retr' script */
#define FISH_GET_DEF_CONTENT "" \
"FILENAME=\"/${FISH_PARAM1}\"\n" \
"export LC_TIME=C\n" \
"#RETR $FILENAME\n" \
"if dd if=\"${FILENAME}\" of=/dev/null bs=1 count=1 2>/dev/null ; then\n" \
" ls -ln \"${FILENAME}\" 2>/dev/null | (\n" \
" read p l u g s r\n" \
" echo $s\n" \
" )\n" \
" echo \"### 100\"\n" \
" cat \"${FILENAME}\"\n" \
" echo \"### 200\"\n" \
"else\n" \
" echo \"### 500\"\n" \
"fi\n"
/* default 'stor' script */
#define FISH_SEND_DEF_CONTENT "" \
"FILENAME=\"/${FISH_PARAM1}\"\n" \
"FILESIZE=${FISH_PARAM2}\n" \
"#STOR $FILESIZE $FILENAME\n" \
"echo \"### 001\"\n" \
"{\n" \
" while [ $FILESIZE -gt 0 ]; do\n" \
" cnt=`expr \\( $FILESIZE + 255 \\) / 256`\n" \
" n=`dd bs=256 count=$cnt | tee -a \"${FILENAME}\" | wc -c`\n" \
" FILESIZE=`expr $FILESIZE - $n`\n" \
" done\n" \
"}; echo \"### 200\"\n"
/* default 'appe' script */
#define FISH_APPEND_DEF_CONTENT "" \
"FILENAME=\"/${FISH_PARAM1}\"\n" \
"FILESIZE=${FISH_PARAM2}\n" \
"#APPE $FILESIZE $FILENAME\n" \
"echo \"### 001\"\n" \
"res=`exec 3>&1\n" \
"(\n" \
" head -c $FILESIZE -q - || echo DD >&3\n" \
") 2>/dev/null | (\n" \
" cat > \"${FILENAME}\"\n" \
" cat > /dev/null\n" \
")`; [ \"$res\" = DD ] && {\n" \
" > \"${FILENAME}\"\n" \
" while [ $FILESIZE -gt 0 ]\n" \
" do\n" \
" cnt=`expr \\( $FILESIZE + 255 \\) / 256`\n" \
" n=`dd bs=256 count=$cnt | tee -a \"${FILENAME}\" | wc -c`\n" \
" FILESIZE=`expr $FILESIZE - $n`\n" \
" done\n" \
"}; echo \"### 200\"\n"
/* default 'info' script */
#define FISH_INFO_DEF_CONTENT "" \
"export LC_TIME=C\n" \
"#FISH_HAVE_HEAD 1\n" \
"#FISH_HAVE_SED 2\n" \
"#FISH_HAVE_AWK 4\n" \
"#FISH_HAVE_PERL 8\n" \
"#FISH_HAVE_LSQ 16\n" \
"#FISH_HAVE_DATE_MDYT 32\n" \
"res=0\n" \
"if `echo yes| head -c 1 > /dev/null 2>&1` ; then\n" \
" res=`expr $res + 1`\n" \
"fi\n" \
"if `sed --version >/dev/null 2>&1` ; then\n" \
" res=`expr $res + 2`\n" \
"fi\n" \
"if `awk --version > /dev/null 2>&1` ; then\n" \
" res=`expr $res + 4`\n" \
"fi\n" \
"if `perl -v > /dev/null 2>&1` ; then\n" \
" res=`expr $res + 8`\n" \
"fi\n" \
"if `ls -Q / >/dev/null 2>&1` ; then\n" \
" res=`expr $res + 16`\n" \
"fi\n" \
"dat=`ls -lan / 2>/dev/null | head -n 3|tail -n 1 | (\n" \
" while read p l u g s rec; do\n" \
" if [ -n \"$g\" ]; then\n" \
" if [ -n \"$l\" ]; then\n" \
" echo \"$rec\"\n" \
" fi\n" \
" fi\n" \
" done\n" \
") |head -c 1`\n" \
"r=`echo \"0123456789\"| grep \"$dat\"`\n" \
"if [ -z \"$r\" ]; then\n" \
" res=`expr $res + 32`\n" \
"fi\n" \
"echo $res\n" \
"echo \"### 200\"\n"
#endif