fishdef.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. /**
  2. * \file
  3. * \brief Header: FISH script defaults
  4. */
  5. #ifndef MC__FISH_DEF_H
  6. #define MC__FISH_DEF_H
  7. /*** typedefs(not structures) and defined constants **********************************************/
  8. /* default 'ls' script */
  9. #define FISH_LS_DEF_CONTENT "" \
  10. "#LIST /${FISH_FILENAME}\n" \
  11. "export LC_TIME=C\n" \
  12. "ls -Qlan \"/${FISH_FILENAME}\" 2>/dev/null | grep '^[^cbt]' | (\n" \
  13. "while read p l u g s m d y n; do\n" \
  14. " echo \"P$p $u.$g\"\n" \
  15. " echo \"S$s\"\n" \
  16. " echo \"d$m $d $y\"\n" \
  17. " echo \":$n\"\n" \
  18. " echo\n" \
  19. "done\n" \
  20. ")\n" \
  21. "ls -Qlan \"/${FISH_FILENAME}\" 2>/dev/null | grep '^[cb]' | (\n" \
  22. "while read p l u g a i m d y n; do\n" \
  23. " echo \"P$p $u.$g\"\n" \
  24. " echo \"E$a$i\"\n" \
  25. " echo \"d$m $d $y\"\n" \
  26. " echo \":$n\"\n" \
  27. " echo\n" \
  28. "done\n" \
  29. ")\n" \
  30. "echo \"### 200\"\n"
  31. /* default file exisits script */
  32. #define FISH_EXISTS_DEF_CONTENT "" \
  33. "#ISEXISTS $FISH_FILENAME\n" \
  34. "ls -l \"/${FISH_FILENAME}\" >/dev/null 2>/dev/null\n" \
  35. "echo '### '$?\n"
  36. /* default 'mkdir' script */
  37. #define FISH_MKDIR_DEF_CONTENT "" \
  38. "#MKD $FISH_FILENAME\n" \
  39. "if mkdir \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
  40. " echo \"### 000\"\n" \
  41. "else\n" \
  42. " echo \"### 500\"\n" \
  43. "fi\n"
  44. /* default 'unlink' script */
  45. #define FISH_UNLINK_DEF_CONTENT "" \
  46. "#DELE $FISH_FILENAME\n" \
  47. "if rm -f \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
  48. " echo \"### 000\"\n" \
  49. "else\n" \
  50. " echo \"### 500\"\n" \
  51. "fi\n"
  52. /* default 'chown' script */
  53. #define FISH_CHOWN_DEF_CONTENT "" \
  54. "#CHOWN $FISH_FILEOWNER:$FISH_FILEGROUP $FISH_FILENAME\n" \
  55. "if chown ${FISH_FILEOWNER}:${FISH_FILEGROUP} \"/${FISH_FILENAME}\"; then\n"\
  56. " echo \"### 000\"\n" \
  57. "else\n" \
  58. " echo \"### 500\"\n" \
  59. "fi\n"
  60. /* default 'chmod' script */
  61. #define FISH_CHMOD_DEF_CONTENT "" \
  62. "#CHMOD $FISH_FILEMODE $FISH_FILENAME\n" \
  63. "if chmod ${FISH_FILEMODE} \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
  64. " echo \"### 000\"\n" \
  65. "else\n" \
  66. " echo \"### 500\"\n" \
  67. "fi\n"
  68. /* default 'utime' script */
  69. #define FISH_UTIME_DEF_CONTENT "" \
  70. "#UTIME $FISH_FILEATIME $FISH_FILEMTIME $FISH_FILENAME\n" \
  71. "if [ -n \"$FISH_HAVE_PERL\" ] && \\\n" \
  72. " perl -e 'utime '$FISH_FILEATIME','$FISH_FILEMTIME',@ARGV;' \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
  73. " echo \"### 000\"\n" \
  74. "elif TZ=UTC touch -m -t $FISH_TOUCHMTIME \"/${FISH_FILENAME}\" 2>/dev/null && \\\n" \
  75. " TZ=UTC touch -a -t $FISH_TOUCHATIME \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
  76. " echo \"### 000\"\n" \
  77. "else\n" \
  78. " echo \"### 500\"\n" \
  79. "fi\n"
  80. /* default 'rmdir' script */
  81. #define FISH_RMDIR_DEF_CONTENT "" \
  82. "#RMD $FISH_FILENAME\n" \
  83. "if rmdir \"/${FISH_FILENAME}\" 2>/dev/null; then\n" \
  84. " echo \"### 000\"\n" \
  85. "else\n" \
  86. " echo \"### 500\"\n" \
  87. "fi\n"
  88. /* default 'ln -s' symlink script */
  89. #define FISH_LN_DEF_CONTENT "" \
  90. "#SYMLINK $FISH_FILEFROM $FISH_FILETO\n" \
  91. "if ln -s \"/${FISH_FILEFROM}\" \"/${FISH_FILETO}\" 2>/dev/null; then\n" \
  92. " echo \"### 000\"\n" \
  93. "else\n" \
  94. " echo \"### 500\"\n" \
  95. "fi\n"
  96. /* default 'mv' script */
  97. #define FISH_MV_DEF_CONTENT "" \
  98. "#RENAME $FISH_FILEFROM $FISH_FILETO\n" \
  99. "if mv \"/${FISH_FILEFROM}\" \"/${FISH_FILETO}\" 2>/dev/null; then\n" \
  100. " echo \"### 000\"\n" \
  101. "else\n" \
  102. " echo \"### 500\"\n" \
  103. "fi\n"
  104. /* default 'ln' hardlink script */
  105. #define FISH_HARDLINK_DEF_CONTENT "" \
  106. "#LINK $FISH_FILEFROM $FISH_FILETO\n" \
  107. "if ln \"/${FISH_FILEFROM}\" \"/${FISH_FILETO}\" 2>/dev/null; then\n" \
  108. " echo \"### 000\"\n" \
  109. "else\n" \
  110. " echo \"### 500\"\n" \
  111. "fi\n"
  112. /* default 'retr' script */
  113. #define FISH_GET_DEF_CONTENT "" \
  114. "export LC_TIME=C\n" \
  115. "#RETR $FISH_FILENAME\n" \
  116. "if dd if=\"/${FISH_FILENAME}\" of=/dev/null bs=1 count=1 2>/dev/null ; then\n" \
  117. " ls -ln \"/${FISH_FILENAME}\" 2>/dev/null | (\n" \
  118. " read p l u g s r\n" \
  119. " echo $s\n" \
  120. " )\n" \
  121. " echo \"### 100\"\n" \
  122. " cat \"/${FISH_FILENAME}\"\n" \
  123. " echo \"### 200\"\n" \
  124. "else\n" \
  125. " echo \"### 500\"\n" \
  126. "fi\n"
  127. /* default 'stor' script */
  128. #define FISH_SEND_DEF_CONTENT "" \
  129. "FILENAME=\"/${FISH_FILENAME}\"\n" \
  130. "FILESIZE=${FISH_FILESIZE}\n" \
  131. "#STOR $FILESIZE $FILENAME\n" \
  132. "echo \"### 001\"\n" \
  133. "{\n" \
  134. " while [ $FILESIZE -gt 0 ]; do\n" \
  135. " cnt=`expr \\( $FILESIZE + 255 \\) / 256`\n" \
  136. " n=`dd bs=256 count=$cnt | tee -a \"${FILENAME}\" | wc -c`\n" \
  137. " FILESIZE=`expr $FILESIZE - $n`\n" \
  138. " done\n" \
  139. "}; echo \"### 200\"\n"
  140. /* default 'appe' script */
  141. #define FISH_APPEND_DEF_CONTENT "" \
  142. "FILENAME=\"/${FISH_FILENAME}\"\n" \
  143. "FILESIZE=${FISH_FILESIZE}\n" \
  144. "#APPE $FILESIZE $FILENAME\n" \
  145. "echo \"### 001\"\n" \
  146. "res=`exec 3>&1\n" \
  147. "(\n" \
  148. " head -c $FILESIZE -q - || echo DD >&3\n" \
  149. ") 2>/dev/null | (\n" \
  150. " cat > \"${FILENAME}\"\n" \
  151. " cat > /dev/null\n" \
  152. ")`; [ \"$res\" = DD ] && {\n" \
  153. " > \"${FILENAME}\"\n" \
  154. " while [ $FILESIZE -gt 0 ]\n" \
  155. " do\n" \
  156. " cnt=`expr \\( $FILESIZE + 255 \\) / 256`\n" \
  157. " n=`dd bs=256 count=$cnt | tee -a \"${FILENAME}\" | wc -c`\n" \
  158. " FILESIZE=`expr $FILESIZE - $n`\n" \
  159. " done\n" \
  160. "}; echo \"### 200\"\n"
  161. /* default 'info' script */
  162. #define FISH_INFO_DEF_CONTENT "" \
  163. "export LC_TIME=C\n" \
  164. "#FISH_HAVE_HEAD 1\n" \
  165. "#FISH_HAVE_SED 2\n" \
  166. "#FISH_HAVE_AWK 4\n" \
  167. "#FISH_HAVE_PERL 8\n" \
  168. "#FISH_HAVE_LSQ 16\n" \
  169. "#FISH_HAVE_DATE_MDYT 32\n" \
  170. "#FISH_HAVE_TAIL 64\n" \
  171. "res=0\n" \
  172. "if `echo yes| head -c 1 > /dev/null 2>&1` ; then\n" \
  173. " res=`expr $res + 1`\n" \
  174. "fi\n" \
  175. "if `sed --version >/dev/null 2>&1` ; then\n" \
  176. " res=`expr $res + 2`\n" \
  177. "fi\n" \
  178. "if `awk --version > /dev/null 2>&1` ; then\n" \
  179. " res=`expr $res + 4`\n" \
  180. "fi\n" \
  181. "if `perl -v > /dev/null 2>&1` ; then\n" \
  182. " res=`expr $res + 8`\n" \
  183. "fi\n" \
  184. "if `ls -Q / >/dev/null 2>&1` ; then\n" \
  185. " res=`expr $res + 16`\n" \
  186. "fi\n" \
  187. "dat=`ls -lan / 2>/dev/null | head -n 3 | tail -n 1 | (\n" \
  188. " while read p l u g s rec; do\n" \
  189. " if [ -n \"$g\" ]; then\n" \
  190. " if [ -n \"$l\" ]; then\n" \
  191. " echo \"$rec\"\n" \
  192. " fi\n" \
  193. " fi\n" \
  194. " done\n" \
  195. ") | cut -c1 2>/dev/null`\n" \
  196. "r=`echo \"0123456789\"| grep \"$dat\"`\n" \
  197. "if [ -z \"$r\" ]; then\n" \
  198. " res=`expr $res + 32`\n" \
  199. "fi\n" \
  200. "if `echo yes| tail -c +1 - > /dev/null 2>&1` ; then\n" \
  201. " res=`expr $res + 64`\n" \
  202. "fi\n" \
  203. "echo $res\n" \
  204. "echo \"### 200\"\n"
  205. /*** enums ***************************************************************************************/
  206. /*** structures declarations (and typedefs of structures)*****************************************/
  207. /*** global variables defined in .c file *********************************************************/
  208. /*** declarations of public functions ************************************************************/
  209. /*** inline functions ****************************************************************************/
  210. #endif