1
2
3
4
5
6
7 #ifndef MC__VFS_SHELL_DEF_H
8 #define MC__VFS_SHELL_DEF_H
9
10
11
12
13 #define VFS_SHELL_LS_DEF_CONTENT \
14 "" \
15 "export LC_TIME=C\n" \
16 "ls -Qlan \"/${SHELL_FILENAME}\" 2>/dev/null | grep '^[^cbt]' | (\n" \
17 "while read p l u g s m d y n; do\n" \
18 " echo \"P$p $u.$g\"\n" \
19 " echo \"S$s\"\n" \
20 " echo \"d$m $d $y\"\n" \
21 " echo \":$n\"\n" \
22 " echo\n" \
23 "done\n" \
24 ")\n" \
25 "ls -Qlan \"/${SHELL_FILENAME}\" 2>/dev/null | grep '^[cb]' | (\n" \
26 "while read p l u g a i m d y n; do\n" \
27 " echo \"P$p $u.$g\"\n" \
28 " echo \"E$a$i\"\n" \
29 " echo \"d$m $d $y\"\n" \
30 " echo \":$n\"\n" \
31 " echo\n" \
32 "done\n" \
33 ")\n" \
34 "echo \"### 200\"\n"
35
36
37 #define VFS_SHELL_EXISTS_DEF_CONTENT \
38 "" \
39 "ls -l \"/${SHELL_FILENAME}\" >/dev/null 2>/dev/null\n" \
40 "echo '### '$?\n"
41
42
43 #define VFS_SHELL_MKDIR_DEF_CONTENT \
44 "" \
45 "if mkdir \"/${SHELL_FILENAME}\" 2>/dev/null; then\n" \
46 " echo \"### 000\"\n" \
47 "else\n" \
48 " echo \"### 500\"\n" \
49 "fi\n"
50
51
52 #define VFS_SHELL_UNLINK_DEF_CONTENT \
53 "" \
54 "if rm -f \"/${SHELL_FILENAME}\" 2>/dev/null; then\n" \
55 " echo \"### 000\"\n" \
56 "else\n" \
57 " echo \"### 500\"\n" \
58 "fi\n"
59
60
61 #define VFS_SHELL_CHOWN_DEF_CONTENT \
62 "" \
63 "if chown ${SHELL_FILEOWNER}:${SHELL_FILEGROUP} \"/${SHELL_FILENAME}\"; then\n" \
64 " echo \"### 000\"\n" \
65 "else\n" \
66 " echo \"### 500\"\n" \
67 "fi\n"
68
69
70 #define VFS_SHELL_CHMOD_DEF_CONTENT \
71 "" \
72 "if chmod ${SHELL_FILEMODE} \"/${SHELL_FILENAME}\" 2>/dev/null; then\n" \
73 " echo \"### 000\"\n" \
74 "else\n" \
75 " echo \"### 500\"\n" \
76 "fi\n"
77
78
79 #define VFS_SHELL_UTIME_DEF_CONTENT \
80 "" \
81 "#UTIME \"$SHELL_TOUCHATIME_W_NSEC\" \"$SHELL_TOUCHMTIME_W_NSEC\" $SHELL_FILENAME\n" \
82 "if TZ=UTC touch -h -m -d \"$SHELL_TOUCHMTIME_W_NSEC\" \"/${SHELL_FILENAME}\" 2>/dev/null && " \
83 "\\\n" \
84 " TZ=UTC touch -h -a -d \"$SHELL_TOUCHATIME_W_NSEC\" \"/${SHELL_FILENAME}\" 2>/dev/null; " \
85 "then\n" \
86 " echo \"### 000\"\n" \
87 "elif TZ=UTC touch -h -m -t $SHELL_TOUCHMTIME \"/${SHELL_FILENAME}\" 2>/dev/null && \\\n" \
88 " TZ=UTC touch -h -a -t $SHELL_TOUCHATIME \"/${SHELL_FILENAME}\" 2>/dev/null; then\n" \
89 " echo \"### 000\"\n" \
90 "elif [ -n \"$SHELL_HAVE_PERL\" ] && \\\n" \
91 " perl -e 'utime '$SHELL_FILEATIME','$SHELL_FILEMTIME',@ARGV;' \"/${SHELL_FILENAME}\" " \
92 "2>/dev/null; then\n" \
93 " echo \"### 000\"\n" \
94 "else\n" \
95 " echo \"### 500\"\n" \
96 "fi\n"
97
98
99 #define VFS_SHELL_RMDIR_DEF_CONTENT \
100 "" \
101 "if rmdir \"/${SHELL_FILENAME}\" 2>/dev/null; then\n" \
102 " echo \"### 000\"\n" \
103 "else\n" \
104 " echo \"### 500\"\n" \
105 "fi\n"
106
107
108 #define VFS_SHELL_LN_DEF_CONTENT \
109 "" \
110 "if ln -s \"/${SHELL_FILEFROM}\" \"/${SHELL_FILETO}\" 2>/dev/null; then\n" \
111 " echo \"### 000\"\n" \
112 "else\n" \
113 " echo \"### 500\"\n" \
114 "fi\n"
115
116
117 #define VFS_SHELL_MV_DEF_CONTENT \
118 "" \
119 "if mv \"/${SHELL_FILEFROM}\" \"/${SHELL_FILETO}\" 2>/dev/null; then\n" \
120 " echo \"### 000\"\n" \
121 "else\n" \
122 " echo \"### 500\"\n" \
123 "fi\n"
124
125
126 #define VFS_SHELL_HARDLINK_DEF_CONTENT \
127 "" \
128 "if ln \"/${SHELL_FILEFROM}\" \"/${SHELL_FILETO}\" 2>/dev/null; then\n" \
129 " echo \"### 000\"\n" \
130 "else\n" \
131 " echo \"### 500\"\n" \
132 "fi\n"
133
134
135 #define VFS_SHELL_GET_DEF_CONTENT \
136 "" \
137 "export LC_TIME=C\n" \
138 "if dd if=\"/${SHELL_FILENAME}\" of=/dev/null bs=1 count=1 2>/dev/null ; then\n" \
139 " ls -ln \"/${SHELL_FILENAME}\" 2>/dev/null | (\n" \
140 " read p l u g s r\n" \
141 " echo $s\n" \
142 " )\n" \
143 " echo \"### 100\"\n" \
144 " cat \"/${SHELL_FILENAME}\"\n" \
145 " echo \"### 200\"\n" \
146 "else\n" \
147 " echo \"### 500\"\n" \
148 "fi\n"
149
150
151 #define VFS_SHELL_SEND_DEF_CONTENT \
152 "" \
153 "FILENAME=\"/${SHELL_FILENAME}\"\n" \
154 "FILESIZE=${SHELL_FILESIZE}\n" \
155 "echo \"### 001\"\n" \
156 "{\n" \
157 " while [ $FILESIZE -gt 0 ]; do\n" \
158 " cnt=`expr \\( $FILESIZE + 255 \\) / 256`\n" \
159 " n=`dd bs=256 count=$cnt | tee -a \"${FILENAME}\" | wc -c`\n" \
160 " FILESIZE=`expr $FILESIZE - $n`\n" \
161 " done\n" \
162 "}; echo \"### 200\"\n"
163
164
165 #define VFS_SHELL_APPEND_DEF_CONTENT \
166 "" \
167 "FILENAME=\"/${SHELL_FILENAME}\"\n" \
168 "FILESIZE=${SHELL_FILESIZE}\n" \
169 "echo \"### 001\"\n" \
170 "res=`exec 3>&1\n" \
171 "(\n" \
172 " head -c $FILESIZE -q - || echo DD >&3\n" \
173 ") 2>/dev/null | (\n" \
174 " cat > \"${FILENAME}\"\n" \
175 " cat > /dev/null\n" \
176 ")`; [ \"$res\" = DD ] && {\n" \
177 " > \"${FILENAME}\"\n" \
178 " while [ $FILESIZE -gt 0 ]\n" \
179 " do\n" \
180 " cnt=`expr \\( $FILESIZE + 255 \\) / 256`\n" \
181 " n=`dd bs=256 count=$cnt | tee -a \"${FILENAME}\" | wc -c`\n" \
182 " FILESIZE=`expr $FILESIZE - $n`\n" \
183 " done\n" \
184 "}; echo \"### 200\"\n"
185
186
187 #define VFS_SHELL_INFO_DEF_CONTENT \
188 "" \
189 "export LC_TIME=C\n" \
190 "#SHELL_HAVE_HEAD 1\n" \
191 "#SHELL_HAVE_SED 2\n" \
192 "#SHELL_HAVE_AWK 4\n" \
193 "#SHELL_HAVE_PERL 8\n" \
194 "#SHELL_HAVE_LSQ 16\n" \
195 "#SHELL_HAVE_DATE_MDYT 32\n" \
196 "#SHELL_HAVE_TAIL 64\n" \
197 "res=0\n" \
198 "if `echo yes| head -c 1 > /dev/null 2>&1` ; then\n" \
199 " res=`expr $res + 1`\n" \
200 "fi\n" \
201 "if `sed --version >/dev/null 2>&1` ; then\n" \
202 " res=`expr $res + 2`\n" \
203 "fi\n" \
204 "if `awk --version > /dev/null 2>&1` ; then\n" \
205 " res=`expr $res + 4`\n" \
206 "fi\n" \
207 "if `perl -v > /dev/null 2>&1` ; then\n" \
208 " res=`expr $res + 8`\n" \
209 "fi\n" \
210 "if `ls -Q / >/dev/null 2>&1` ; then\n" \
211 " res=`expr $res + 16`\n" \
212 "fi\n" \
213 "dat=`ls -lan / 2>/dev/null | head -n 3 | tail -1 | (\n" \
214 " while read p l u g s rec; do\n" \
215 " if [ -n \"$g\" ]; then\n" \
216 " if [ -n \"$l\" ]; then\n" \
217 " echo \"$rec\"\n" \
218 " fi\n" \
219 " fi\n" \
220 " done\n" \
221 ") | cut -c1 2>/dev/null`\n" \
222 "r=`echo \"0123456789\"| grep \"$dat\"`\n" \
223 "if [ -z \"$r\" ]; then\n" \
224 " res=`expr $res + 32`\n" \
225 "fi\n" \
226 "if `echo yes| tail -c +1 - > /dev/null 2>&1` ; then\n" \
227 " res=`expr $res + 64`\n" \
228 "fi\n" \
229 "echo $res\n" \
230 "echo \"### 200\"\n"
231
232
233
234
235
236
237
238
239
240
241
242 #endif