summaryrefslogtreecommitdiff
path: root/busybox/include
diff options
context:
space:
mode:
authornobody <nobody@localhost>2004-10-13 09:42:10 +0000
committernobody <nobody@localhost>2004-10-13 09:42:10 +0000
commit8c59a0bf0e9e2d87b0ff273ea3f0bf05bbbf6373 (patch)
tree1826706cd4fd009fcd14f4f8021005ec8ec0fa59 /busybox/include
downloadbusybox-w32-8c59a0bf0e9e2d87b0ff273ea3f0bf05bbbf6373.tar.gz
busybox-w32-8c59a0bf0e9e2d87b0ff273ea3f0bf05bbbf6373.tar.bz2
busybox-w32-8c59a0bf0e9e2d87b0ff273ea3f0bf05bbbf6373.zip
This commit was manufactured by cvs2svn to create tag 'busybox_1_00'.
Diffstat (limited to 'busybox/include')
-rw-r--r--busybox/include/.cvsignore2
-rw-r--r--busybox/include/applets.h678
-rw-r--r--busybox/include/busybox.h121
-rw-r--r--busybox/include/dump.h49
-rw-r--r--busybox/include/grp_.h116
-rw-r--r--busybox/include/inet_common.h33
-rw-r--r--busybox/include/libbb.h487
-rw-r--r--busybox/include/pwd_.h106
-rw-r--r--busybox/include/shadow_.h98
-rw-r--r--busybox/include/unarchive.h107
-rw-r--r--busybox/include/usage.h2885
11 files changed, 4682 insertions, 0 deletions
diff --git a/busybox/include/.cvsignore b/busybox/include/.cvsignore
new file mode 100644
index 000000000..9c68c9576
--- /dev/null
+++ b/busybox/include/.cvsignore
@@ -0,0 +1,2 @@
1config
2config.h
diff --git a/busybox/include/applets.h b/busybox/include/applets.h
new file mode 100644
index 000000000..90d4195cc
--- /dev/null
+++ b/busybox/include/applets.h
@@ -0,0 +1,678 @@
1/*
2 * applets.h - a listing of all busybox applets.
3 *
4 * If you write a new applet, you need to add an entry to this list to make
5 * busybox aware of it.
6 *
7 * It is CRUCIAL that this listing be kept in ascii order, otherwise the binary
8 * search lookup contributed by Gaute B Strokkenes stops working. If you value
9 * your kneecaps, you'll be sure to *make sure* that any changes made to this
10 * file result in the listing remaining in ascii order. You have been warned.
11 */
12
13#undef APPLET
14#undef APPLET_ODDNAME
15#undef APPLET_NOUSAGE
16
17
18#if defined(PROTOTYPES)
19 #define APPLET(a,b,c,d) extern int b(int argc, char **argv);
20 #define APPLET_NOUSAGE(a,b,c,d) extern int b(int argc, char **argv);
21 #define APPLET_ODDNAME(a,b,c,d,e) extern int b(int argc, char **argv);
22 extern const char usage_messages[];
23#elif defined(MAKE_USAGE)
24 #ifdef CONFIG_FEATURE_VERBOSE_USAGE
25 #define APPLET(a,b,c,d) a##_trivial_usage "\n\n" a##_full_usage "\0"
26 #define APPLET_NOUSAGE(a,b,c,d) "\b\0"
27 #define APPLET_ODDNAME(a,b,c,d,e) e##_trivial_usage "\n\n" e##_full_usage "\0"
28 #else
29 #define APPLET(a,b,c,d) a##_trivial_usage "\0"
30 #define APPLET_NOUSAGE(a,b,c,d) "\b\0"
31 #define APPLET_ODDNAME(a,b,c,d,e) e##_trivial_usage "\0"
32 #endif
33#elif defined(MAKE_LINKS)
34# define APPLET(a,b,c,d) LINK c a
35# define APPLET_NOUSAGE(a,b,c,d) LINK c a
36# define APPLET_ODDNAME(a,b,c,d,e) LINK c a
37#else
38 const struct BB_applet applets[] = {
39 #define APPLET(a,b,c,d) {#a,b,c,d},
40 #define APPLET_NOUSAGE(a,b,c,d) {a,b,c,d},
41 #define APPLET_ODDNAME(a,b,c,d,e) {a,b,c,d},
42#endif
43
44#ifdef CONFIG_INSTALL_NO_USR
45#define _BB_DIR_USR_BIN _BB_DIR_BIN
46#define _BB_DIR_USR_SBIN _BB_DIR_SBIN
47#endif
48
49
50
51#ifdef CONFIG_TEST
52 APPLET_NOUSAGE("[", test_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
53#endif
54#ifdef CONFIG_ADDGROUP
55 APPLET(addgroup, addgroup_main, _BB_DIR_BIN, _BB_SUID_NEVER)
56#endif
57#ifdef CONFIG_ADDUSER
58 APPLET(adduser, adduser_main, _BB_DIR_BIN, _BB_SUID_NEVER)
59#endif
60#ifdef CONFIG_ADJTIMEX
61 APPLET(adjtimex, adjtimex_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
62#endif
63#ifdef CONFIG_AR
64 APPLET(ar, ar_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
65#endif
66#ifdef CONFIG_ARPING
67 APPLET(arping, arping_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
68#endif
69#ifdef CONFIG_ASH
70 APPLET_NOUSAGE("ash", ash_main, _BB_DIR_BIN, _BB_SUID_NEVER)
71#endif
72#ifdef CONFIG_AWK
73 APPLET(awk, awk_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
74#endif
75#ifdef CONFIG_BASENAME
76 APPLET(basename, basename_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
77#endif
78#ifdef CONFIG_BUNZIP2
79 APPLET(bunzip2, bunzip2_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
80#endif
81 APPLET_NOUSAGE("busybox", busybox_main, _BB_DIR_BIN, _BB_SUID_MAYBE)
82#ifdef CONFIG_BUNZIP2
83 APPLET(bzcat, bunzip2_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
84#endif
85#ifdef CONFIG_CAL
86 APPLET(cal, cal_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
87#endif
88#ifdef CONFIG_CAT
89 APPLET(cat, cat_main, _BB_DIR_BIN, _BB_SUID_NEVER)
90#endif
91#ifdef CONFIG_CHGRP
92 APPLET(chgrp, chgrp_main, _BB_DIR_BIN, _BB_SUID_NEVER)
93#endif
94#ifdef CONFIG_CHMOD
95 APPLET(chmod, chmod_main, _BB_DIR_BIN, _BB_SUID_NEVER)
96#endif
97#ifdef CONFIG_CHOWN
98 APPLET(chown, chown_main, _BB_DIR_BIN, _BB_SUID_NEVER)
99#endif
100#ifdef CONFIG_CHROOT
101 APPLET(chroot, chroot_main, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)
102#endif
103#ifdef CONFIG_CHVT
104 APPLET(chvt, chvt_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
105#endif
106#ifdef CONFIG_CLEAR
107 APPLET(clear, clear_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
108#endif
109#ifdef CONFIG_CMP
110 APPLET(cmp, cmp_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
111#endif
112#ifdef CONFIG_CP
113 APPLET(cp, cp_main, _BB_DIR_BIN, _BB_SUID_NEVER)
114#endif
115#ifdef CONFIG_CPIO
116 APPLET(cpio, cpio_main, _BB_DIR_BIN, _BB_SUID_NEVER)
117#endif
118#ifdef CONFIG_CROND
119 APPLET(crond, crond_main, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)
120#endif
121#ifdef CONFIG_CRONTAB
122 APPLET(crontab, crontab_main, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS)
123#endif
124#ifdef CONFIG_CUT
125 APPLET(cut, cut_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
126#endif
127#ifdef CONFIG_DATE
128 APPLET(date, date_main, _BB_DIR_BIN, _BB_SUID_NEVER)
129#endif
130#ifdef CONFIG_DC
131 APPLET(dc, dc_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
132#endif
133#ifdef CONFIG_DD
134 APPLET(dd, dd_main, _BB_DIR_BIN, _BB_SUID_NEVER)
135#endif
136#ifdef CONFIG_DEALLOCVT
137 APPLET(deallocvt, deallocvt_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
138#endif
139#ifdef CONFIG_DELGROUP
140 APPLET(delgroup, delgroup_main, _BB_DIR_BIN, _BB_SUID_NEVER)
141#endif
142#ifdef CONFIG_DELUSER
143 APPLET(deluser, deluser_main, _BB_DIR_BIN, _BB_SUID_NEVER)
144#endif
145#ifdef CONFIG_DEVFSD
146 APPLET(devfsd, devfsd_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
147#endif
148#ifdef CONFIG_DF
149 APPLET(df, df_main, _BB_DIR_BIN, _BB_SUID_NEVER)
150#endif
151#ifdef CONFIG_DIRNAME
152 APPLET(dirname, dirname_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
153#endif
154#ifdef CONFIG_DMESG
155 APPLET(dmesg, dmesg_main, _BB_DIR_BIN, _BB_SUID_NEVER)
156#endif
157#ifdef CONFIG_DOS2UNIX
158 APPLET(dos2unix, dos2unix_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
159#endif
160#ifdef CONFIG_DPKG
161 APPLET(dpkg, dpkg_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
162#endif
163#ifdef CONFIG_DPKG_DEB
164 APPLET_ODDNAME("dpkg-deb", dpkg_deb_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER, dpkg_deb)
165#endif
166#ifdef CONFIG_DU
167 APPLET(du, du_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
168#endif
169#ifdef CONFIG_DUMPKMAP
170 APPLET(dumpkmap, dumpkmap_main, _BB_DIR_BIN, _BB_SUID_NEVER)
171#endif
172#ifdef CONFIG_DUMPLEASES
173 APPLET(dumpleases, dumpleases_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
174#endif
175#ifdef CONFIG_ECHO
176 APPLET(echo, echo_main, _BB_DIR_BIN, _BB_SUID_NEVER)
177#endif
178#if defined(CONFIG_FEATURE_GREP_EGREP_ALIAS)
179 APPLET_NOUSAGE("egrep", grep_main, _BB_DIR_BIN, _BB_SUID_NEVER)
180#endif
181#ifdef CONFIG_ENV
182 APPLET(env, env_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
183#endif
184#ifdef CONFIG_EXPR
185 APPLET(expr, expr_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
186#endif
187#ifdef CONFIG_FALSE
188 APPLET(false, false_main, _BB_DIR_BIN, _BB_SUID_NEVER)
189#endif
190#ifdef CONFIG_FBSET
191 APPLET(fbset, fbset_main, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)
192#endif
193#ifdef CONFIG_FDFLUSH
194 APPLET(fdflush, fdflush_main, _BB_DIR_BIN, _BB_SUID_NEVER)
195#endif
196#ifdef CONFIG_FDFORMAT
197 APPLET(fdformat, fdformat_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
198#endif
199#ifdef CONFIG_FDISK
200 APPLET(fdisk, fdisk_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
201#endif
202#if defined(CONFIG_FEATURE_GREP_FGREP_ALIAS)
203 APPLET_NOUSAGE("fgrep", grep_main, _BB_DIR_BIN, _BB_SUID_NEVER)
204#endif
205#ifdef CONFIG_FIND
206 APPLET(find, find_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
207#endif
208#ifdef CONFIG_FOLD
209 APPLET(fold, fold_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
210#endif
211#ifdef CONFIG_FREE
212 APPLET(free, free_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
213#endif
214#ifdef CONFIG_FREERAMDISK
215 APPLET(freeramdisk, freeramdisk_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
216#endif
217#ifdef CONFIG_FSCK_MINIX
218 APPLET_ODDNAME("fsck.minix", fsck_minix_main, _BB_DIR_SBIN, _BB_SUID_NEVER, fsck_minix)
219#endif
220#ifdef CONFIG_FTPGET
221 APPLET(ftpget, ftpgetput_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
222#endif
223#ifdef CONFIG_FTPPUT
224 APPLET(ftpput, ftpgetput_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
225#endif
226#ifdef CONFIG_GETOPT
227 APPLET(getopt, getopt_main, _BB_DIR_BIN, _BB_SUID_NEVER)
228#endif
229#ifdef CONFIG_GETTY
230 APPLET(getty, getty_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
231#endif
232#ifdef CONFIG_GREP
233 APPLET(grep, grep_main, _BB_DIR_BIN, _BB_SUID_NEVER)
234#endif
235#ifdef CONFIG_GUNZIP
236 APPLET(gunzip, gunzip_main, _BB_DIR_BIN, _BB_SUID_NEVER)
237#endif
238#ifdef CONFIG_GZIP
239 APPLET(gzip, gzip_main, _BB_DIR_BIN, _BB_SUID_NEVER)
240#endif
241#ifdef CONFIG_HALT
242 APPLET(halt, halt_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
243#endif
244#ifdef CONFIG_HDPARM
245 APPLET(hdparm, hdparm_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
246#endif
247#ifdef CONFIG_HEAD
248 APPLET(head, head_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
249#endif
250#ifdef CONFIG_HEXDUMP
251 APPLET(hexdump, hexdump_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
252#endif
253#ifdef CONFIG_HOSTID
254 APPLET(hostid, hostid_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
255#endif
256#ifdef CONFIG_HOSTNAME
257 APPLET(hostname, hostname_main, _BB_DIR_BIN, _BB_SUID_NEVER)
258#endif
259#ifdef CONFIG_HTTPD
260 APPLET(httpd, httpd_main, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)
261#endif
262#ifdef CONFIG_HUSH
263 APPLET_NOUSAGE("hush", hush_main, _BB_DIR_BIN, _BB_SUID_NEVER)
264#endif
265#ifdef CONFIG_HWCLOCK
266 APPLET(hwclock, hwclock_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
267#endif
268#ifdef CONFIG_ID
269 APPLET(id, id_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
270#endif
271#ifdef CONFIG_IFCONFIG
272 APPLET(ifconfig, ifconfig_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
273#endif
274#ifdef CONFIG_IFUPDOWN
275 APPLET(ifdown, ifupdown_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
276#endif
277#ifdef CONFIG_IFUPDOWN
278 APPLET(ifup, ifupdown_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
279#endif
280#ifdef CONFIG_INETD
281 APPLET(inetd, inetd_main, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)
282#endif
283#ifdef CONFIG_INIT
284 APPLET(init, init_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
285#endif
286#ifdef CONFIG_INSMOD
287 APPLET(insmod, insmod_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
288#endif
289#ifdef CONFIG_INSTALL
290 APPLET(install, install_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
291#endif
292#ifdef CONFIG_IP
293 APPLET(ip, ip_main, _BB_DIR_BIN, _BB_SUID_NEVER)
294#endif
295#ifdef CONFIG_IPADDR
296 APPLET(ipaddr, ipaddr_main, _BB_DIR_BIN, _BB_SUID_NEVER)
297#endif
298#ifdef CONFIG_IPCALC
299 APPLET(ipcalc, ipcalc_main, _BB_DIR_BIN, _BB_SUID_NEVER)
300#endif
301#ifdef CONFIG_IPLINK
302 APPLET(iplink, iplink_main, _BB_DIR_BIN, _BB_SUID_NEVER)
303#endif
304#ifdef CONFIG_IPROUTE
305 APPLET(iproute, iproute_main, _BB_DIR_BIN, _BB_SUID_NEVER)
306#endif
307#ifdef CONFIG_IPTUNNEL
308 APPLET(iptunnel, iptunnel_main, _BB_DIR_BIN, _BB_SUID_NEVER)
309#endif
310#ifdef CONFIG_KILL
311 APPLET(kill, kill_main, _BB_DIR_BIN, _BB_SUID_NEVER)
312#endif
313#ifdef CONFIG_KILLALL
314 APPLET(killall, kill_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
315#endif
316#ifdef CONFIG_KLOGD
317 APPLET(klogd, klogd_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
318#endif
319#ifdef CONFIG_LASH
320 APPLET(lash, lash_main, _BB_DIR_BIN, _BB_SUID_NEVER)
321#endif
322#ifdef CONFIG_LAST
323 APPLET(last, last_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
324#endif
325#ifdef CONFIG_LENGTH
326 APPLET(length, length_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
327#endif
328#ifdef CONFIG_FEATURE_INITRD
329 APPLET_NOUSAGE("linuxrc", init_main, _BB_DIR_ROOT, _BB_SUID_NEVER)
330#endif
331#ifdef CONFIG_LN
332 APPLET(ln, ln_main, _BB_DIR_BIN, _BB_SUID_NEVER)
333#endif
334#ifdef CONFIG_LOADFONT
335 APPLET(loadfont, loadfont_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
336#endif
337#ifdef CONFIG_LOADKMAP
338 APPLET(loadkmap, loadkmap_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
339#endif
340#ifdef CONFIG_LOGGER
341 APPLET(logger, logger_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
342#endif
343#ifdef CONFIG_LOGIN
344 APPLET(login, login_main, _BB_DIR_BIN, _BB_SUID_ALWAYS)
345#endif
346#ifdef CONFIG_LOGNAME
347 APPLET(logname, logname_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
348#endif
349#ifdef CONFIG_LOGREAD
350 APPLET(logread, logread_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
351#endif
352#ifdef CONFIG_LOSETUP
353 APPLET(losetup, losetup_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
354#endif
355#ifdef CONFIG_LS
356 APPLET(ls, ls_main, _BB_DIR_BIN, _BB_SUID_NEVER)
357#endif
358#ifdef CONFIG_LSMOD
359 APPLET(lsmod, lsmod_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
360#endif
361#ifdef CONFIG_MAKEDEVS
362 APPLET(makedevs, makedevs_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
363#endif
364#ifdef CONFIG_MD5SUM
365 APPLET(md5sum, md5sum_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
366#endif
367#ifdef CONFIG_MESG
368 APPLET(mesg, mesg_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
369#endif
370#ifdef CONFIG_MKDIR
371 APPLET(mkdir, mkdir_main, _BB_DIR_BIN, _BB_SUID_NEVER)
372#endif
373#ifdef CONFIG_MKFIFO
374 APPLET(mkfifo, mkfifo_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
375#endif
376#ifdef CONFIG_MKFS_MINIX
377 APPLET_ODDNAME("mkfs.minix", mkfs_minix_main, _BB_DIR_SBIN, _BB_SUID_NEVER, mkfs_minix)
378#endif
379#ifdef CONFIG_MKNOD
380 APPLET(mknod, mknod_main, _BB_DIR_BIN, _BB_SUID_NEVER)
381#endif
382#ifdef CONFIG_MKSWAP
383 APPLET(mkswap, mkswap_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
384#endif
385#ifdef CONFIG_MKTEMP
386 APPLET(mktemp, mktemp_main, _BB_DIR_BIN, _BB_SUID_NEVER)
387#endif
388#ifdef CONFIG_MODPROBE
389 APPLET(modprobe, modprobe_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
390#endif
391#ifdef CONFIG_MORE
392 APPLET(more, more_main, _BB_DIR_BIN, _BB_SUID_NEVER)
393#endif
394#ifdef CONFIG_MOUNT
395 APPLET(mount, mount_main, _BB_DIR_BIN, _BB_SUID_NEVER)
396#endif
397#ifdef CONFIG_MSH
398 APPLET_NOUSAGE("msh", msh_main, _BB_DIR_BIN, _BB_SUID_NEVER)
399#endif
400#ifdef CONFIG_MT
401 APPLET(mt, mt_main, _BB_DIR_BIN, _BB_SUID_NEVER)
402#endif
403#ifdef CONFIG_MV
404 APPLET(mv, mv_main, _BB_DIR_BIN, _BB_SUID_NEVER)
405#endif
406#ifdef CONFIG_NAMEIF
407 APPLET(nameif, nameif_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
408#endif
409#ifdef CONFIG_NC
410 APPLET(nc, nc_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
411#endif
412#ifdef CONFIG_NETSTAT
413 APPLET(netstat, netstat_main, _BB_DIR_BIN, _BB_SUID_NEVER)
414#endif
415#ifdef CONFIG_NSLOOKUP
416 APPLET(nslookup, nslookup_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
417#endif
418#ifdef CONFIG_OD
419 APPLET(od, od_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
420#endif
421#ifdef CONFIG_OPENVT
422 APPLET(openvt, openvt_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
423#endif
424#ifdef CONFIG_PASSWD
425 APPLET(passwd, passwd_main, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS)
426#endif
427#ifdef CONFIG_PATCH
428 APPLET(patch, patch_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
429#endif
430#ifdef CONFIG_PIDOF
431 APPLET(pidof, pidof_main, _BB_DIR_BIN, _BB_SUID_NEVER)
432#endif
433#ifdef CONFIG_PING
434 APPLET(ping, ping_main, _BB_DIR_BIN, _BB_SUID_MAYBE)
435#endif
436#ifdef CONFIG_PING6
437 APPLET(ping6, ping6_main, _BB_DIR_BIN, _BB_SUID_NEVER)
438#endif
439#ifdef CONFIG_PIPE_PROGRESS
440 APPLET_NOUSAGE("pipe_progress", pipe_progress_main, _BB_DIR_BIN, _BB_SUID_NEVER)
441#endif
442#ifdef CONFIG_PIVOT_ROOT
443 APPLET(pivot_root, pivot_root_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
444#endif
445#ifdef CONFIG_POWEROFF
446 APPLET(poweroff, poweroff_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
447#endif
448#ifdef CONFIG_PRINTF
449 APPLET(printf, printf_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
450#endif
451#ifdef CONFIG_PS
452 APPLET(ps, ps_main, _BB_DIR_BIN, _BB_SUID_NEVER)
453#endif
454#ifdef CONFIG_PWD
455 APPLET(pwd, pwd_main, _BB_DIR_BIN, _BB_SUID_NEVER)
456#endif
457#ifdef CONFIG_RDATE
458 APPLET(rdate, rdate_main, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)
459#endif
460#ifdef CONFIG_READLINK
461 APPLET(readlink, readlink_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
462#endif
463#ifdef CONFIG_REALPATH
464 APPLET(realpath, realpath_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
465#endif
466#ifdef CONFIG_REBOOT
467 APPLET(reboot, reboot_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
468#endif
469#ifdef CONFIG_RENICE
470 APPLET(renice, renice_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
471#endif
472#ifdef CONFIG_RESET
473 APPLET(reset, reset_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
474#endif
475#ifdef CONFIG_RM
476 APPLET(rm, rm_main, _BB_DIR_BIN, _BB_SUID_NEVER)
477#endif
478#ifdef CONFIG_RMDIR
479 APPLET(rmdir, rmdir_main, _BB_DIR_BIN, _BB_SUID_NEVER)
480#endif
481#ifdef CONFIG_RMMOD
482 APPLET(rmmod, rmmod_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
483#endif
484#ifdef CONFIG_ROUTE
485 APPLET(route, route_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
486#endif
487#ifdef CONFIG_RPM
488 APPLET(rpm, rpm_main, _BB_DIR_BIN, _BB_SUID_NEVER)
489#endif
490#ifdef CONFIG_RPM2CPIO
491 APPLET(rpm2cpio, rpm2cpio_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
492#endif
493#ifdef CONFIG_RUN_PARTS
494 APPLET_ODDNAME("run-parts", run_parts_main, _BB_DIR_BIN, _BB_SUID_NEVER, run_parts)
495#endif
496#ifdef CONFIG_RX
497 APPLET(rx, rx_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
498#endif
499#ifdef CONFIG_SED
500 APPLET(sed, sed_main, _BB_DIR_BIN, _BB_SUID_NEVER)
501#endif
502#ifdef CONFIG_SEQ
503 APPLET(seq, seq_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
504#endif
505#ifdef CONFIG_SETKEYCODES
506 APPLET(setkeycodes, setkeycodes_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
507#endif
508#if defined(CONFIG_FEATURE_SH_IS_ASH) && defined(CONFIG_ASH)
509 APPLET_NOUSAGE("sh", ash_main, _BB_DIR_BIN, _BB_SUID_NEVER)
510#elif defined(CONFIG_FEATURE_SH_IS_HUSH) && defined(CONFIG_HUSH)
511 APPLET_NOUSAGE("sh", hush_main, _BB_DIR_BIN, _BB_SUID_NEVER)
512#elif defined(CONFIG_FEATURE_SH_IS_LASH) && defined(CONFIG_LASH)
513 APPLET_NOUSAGE("sh", lash_main, _BB_DIR_BIN, _BB_SUID_NEVER)
514#elif defined(CONFIG_FEATURE_SH_IS_MSH) && defined(CONFIG_MSH)
515 APPLET_NOUSAGE("sh", msh_main, _BB_DIR_BIN, _BB_SUID_NEVER)
516#endif
517#ifdef CONFIG_SHA1SUM
518 APPLET(sha1sum, sha1sum_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
519#endif
520#ifdef CONFIG_SLEEP
521 APPLET(sleep, sleep_main, _BB_DIR_BIN, _BB_SUID_NEVER)
522#endif
523#ifdef CONFIG_SORT
524 APPLET(sort, sort_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
525#endif
526#ifdef CONFIG_START_STOP_DAEMON
527 APPLET_ODDNAME("start-stop-daemon", start_stop_daemon_main, _BB_DIR_SBIN, _BB_SUID_NEVER, start_stop_daemon)
528#endif
529#ifdef CONFIG_STRINGS
530 APPLET(strings, strings_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
531#endif
532#ifdef CONFIG_STTY
533 APPLET(stty, stty_main, _BB_DIR_BIN, _BB_SUID_NEVER)
534#endif
535#ifdef CONFIG_SU
536 APPLET(su, su_main, _BB_DIR_BIN, _BB_SUID_ALWAYS)
537#endif
538#ifdef CONFIG_SULOGIN
539 APPLET(sulogin, sulogin_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
540#endif
541#ifdef CONFIG_SWAPONOFF
542 APPLET(swapoff, swap_on_off_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
543#endif
544#ifdef CONFIG_SWAPONOFF
545 APPLET(swapon, swap_on_off_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
546#endif
547#ifdef CONFIG_SYNC
548 APPLET(sync, sync_main, _BB_DIR_BIN, _BB_SUID_NEVER)
549#endif
550#ifdef CONFIG_SYSCTL
551 APPLET(sysctl, sysctl_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
552#endif
553#ifdef CONFIG_SYSLOGD
554 APPLET(syslogd, syslogd_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
555#endif
556#ifdef CONFIG_TAIL
557 APPLET(tail, tail_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
558#endif
559#ifdef CONFIG_TAR
560 APPLET(tar, tar_main, _BB_DIR_BIN, _BB_SUID_NEVER)
561#endif
562#ifdef CONFIG_TEE
563 APPLET(tee, tee_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
564#endif
565#ifdef CONFIG_TELNET
566 APPLET(telnet, telnet_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
567#endif
568#ifdef CONFIG_TELNETD
569 APPLET(telnetd, telnetd_main, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)
570#endif
571#ifdef CONFIG_TEST
572 APPLET(test, test_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
573#endif
574#ifdef CONFIG_TFTP
575 APPLET(tftp, tftp_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
576#endif
577#ifdef CONFIG_TIME
578 APPLET(time, time_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
579#endif
580#ifdef CONFIG_TOP
581 APPLET(top, top_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
582#endif
583#ifdef CONFIG_TOUCH
584 APPLET(touch, touch_main, _BB_DIR_BIN, _BB_SUID_NEVER)
585#endif
586#ifdef CONFIG_TR
587 APPLET(tr, tr_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
588#endif
589#ifdef CONFIG_TRACEROUTE
590 APPLET(traceroute, traceroute_main, _BB_DIR_USR_BIN, _BB_SUID_MAYBE)
591#endif
592#ifdef CONFIG_TRUE
593 APPLET(true, true_main, _BB_DIR_BIN, _BB_SUID_NEVER)
594#endif
595#ifdef CONFIG_TTY
596 APPLET(tty, tty_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
597#endif
598#ifdef CONFIG_UDHCPC
599 APPLET(udhcpc, udhcpc_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
600#endif
601#ifdef CONFIG_UDHCPD
602 APPLET(udhcpd, udhcpd_main, _BB_DIR_USR_SBIN, _BB_SUID_NEVER)
603#endif
604#ifdef CONFIG_UMOUNT
605 APPLET(umount, umount_main, _BB_DIR_BIN, _BB_SUID_NEVER)
606#endif
607#ifdef CONFIG_UNAME
608 APPLET(uname, uname_main, _BB_DIR_BIN, _BB_SUID_NEVER)
609#endif
610#ifdef CONFIG_UNCOMPRESS
611 APPLET(uncompress, uncompress_main, _BB_DIR_BIN, _BB_SUID_NEVER)
612#endif
613#ifdef CONFIG_UNIQ
614 APPLET(uniq, uniq_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
615#endif
616#ifdef CONFIG_UNIX2DOS
617 APPLET(unix2dos, dos2unix_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
618#endif
619#ifdef CONFIG_UNZIP
620 APPLET(unzip, unzip_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
621#endif
622#ifdef CONFIG_UPTIME
623 APPLET(uptime, uptime_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
624#endif
625#ifdef CONFIG_USLEEP
626 APPLET(usleep, usleep_main, _BB_DIR_BIN, _BB_SUID_NEVER)
627#endif
628#ifdef CONFIG_UUDECODE
629 APPLET(uudecode, uudecode_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
630#endif
631#ifdef CONFIG_UUENCODE
632 APPLET(uuencode, uuencode_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
633#endif
634#ifdef CONFIG_VCONFIG
635 APPLET(vconfig, vconfig_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
636#endif
637#ifdef CONFIG_VI
638 APPLET(vi, vi_main, _BB_DIR_BIN, _BB_SUID_NEVER)
639#endif
640#ifdef CONFIG_VLOCK
641 APPLET(vlock, vlock_main, _BB_DIR_USR_BIN, _BB_SUID_ALWAYS)
642#endif
643#ifdef CONFIG_WATCH
644 APPLET(watch, watch_main, _BB_DIR_BIN, _BB_SUID_NEVER)
645#endif
646#ifdef CONFIG_WATCHDOG
647 APPLET(watchdog, watchdog_main, _BB_DIR_SBIN, _BB_SUID_NEVER)
648#endif
649#ifdef CONFIG_WC
650 APPLET(wc, wc_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
651#endif
652#ifdef CONFIG_WGET
653 APPLET(wget, wget_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
654#endif
655#ifdef CONFIG_WHICH
656 APPLET(which, which_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
657#endif
658#ifdef CONFIG_WHO
659 APPLET(who, who_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
660#endif
661#ifdef CONFIG_WHOAMI
662 APPLET(whoami, whoami_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
663#endif
664#ifdef CONFIG_XARGS
665 APPLET(xargs, xargs_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
666#endif
667#ifdef CONFIG_YES
668 APPLET(yes, yes_main, _BB_DIR_USR_BIN, _BB_SUID_NEVER)
669#endif
670#ifdef CONFIG_GUNZIP
671 APPLET(zcat, gunzip_main, _BB_DIR_BIN, _BB_SUID_NEVER)
672#endif
673
674#if !defined(PROTOTYPES) && !defined(MAKE_USAGE)
675 { 0,NULL,0 }
676};
677
678#endif
diff --git a/busybox/include/busybox.h b/busybox/include/busybox.h
new file mode 100644
index 000000000..f6f575957
--- /dev/null
+++ b/busybox/include/busybox.h
@@ -0,0 +1,121 @@
1/* vi: set sw=4 ts=4: */
2/*
3 * Busybox main internal header file
4 *
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 *
20 * Based in part on code from sash, Copyright (c) 1999 by David I. Bell
21 * Permission has been granted to redistribute this code under the GPL.
22 *
23 */
24#ifndef _BB_INTERNAL_H_
25#define _BB_INTERNAL_H_ 1
26
27#include "config.h"
28
29#include <stdio.h>
30#include <stdlib.h>
31#include <stdarg.h>
32#include <sys/stat.h>
33#include <sys/types.h>
34
35#if __GNU_LIBRARY__ < 5
36#ifndef __dietlibc__
37#error "Sorry, libc5 is not supported"
38#endif
39#endif
40
41#ifndef BB_EXTRA_VERSION
42#define BB_BANNER "BusyBox v" BB_VER " (" BB_BT ")"
43#else
44#define BB_BANNER "BusyBox v" BB_VER " (" BB_EXTRA_VERSION ")"
45#endif
46
47#ifdef DMALLOC
48#include <dmalloc.h>
49#endif
50
51#include <features.h>
52
53/* Pull in the utility routines from libbb */
54#include "libbb.h"
55
56enum Location {
57 _BB_DIR_ROOT = 0,
58 _BB_DIR_BIN,
59 _BB_DIR_SBIN,
60 _BB_DIR_USR_BIN,
61 _BB_DIR_USR_SBIN
62};
63
64enum SUIDRoot {
65 _BB_SUID_NEVER = 0,
66 _BB_SUID_MAYBE,
67 _BB_SUID_ALWAYS
68};
69
70struct BB_applet {
71 const char *name;
72 int (*main) (int argc, char **argv);
73 enum Location location:4;
74 enum SUIDRoot need_suid:4;
75};
76
77/* From busybox.c */
78extern const struct BB_applet applets[];
79
80/* Automagically pull in all the applet function prototypes and
81 * applet usage strings. These are all of the form:
82 * extern int foo_main(int argc, char **argv);
83 * extern const char foo_usage[];
84 * These are all autogenerated from the set of currently defined applets.
85 */
86#define PROTOTYPES
87#include "applets.h"
88#undef PROTOTYPES
89
90#ifdef CONFIG_FEATURE_BUFFERS_GO_ON_STACK
91#define RESERVE_CONFIG_BUFFER(buffer,len) char buffer[len]
92#define RESERVE_CONFIG_UBUFFER(buffer,len) unsigned char buffer[len]
93#define RELEASE_CONFIG_BUFFER(buffer) ((void)0)
94#else
95#ifdef CONFIG_FEATURE_BUFFERS_GO_IN_BSS
96#define RESERVE_CONFIG_BUFFER(buffer,len) static char buffer[len]
97#define RESERVE_CONFIG_UBUFFER(buffer,len) static unsigned char buffer[len]
98#define RELEASE_CONFIG_BUFFER(buffer) ((void)0)
99#else
100#define RESERVE_CONFIG_BUFFER(buffer,len) char *buffer=xmalloc(len)
101#define RESERVE_CONFIG_UBUFFER(buffer,len) unsigned char *buffer=xmalloc(len)
102#define RELEASE_CONFIG_BUFFER(buffer) free (buffer)
103#endif
104#endif
105
106
107#ifndef RB_POWER_OFF
108/* Stop system and switch power off if possible. */
109#define RB_POWER_OFF 0x4321fedc
110#endif
111
112/* Try to pull in PATH_MAX */
113#include <limits.h>
114
115/* for PATH_MAX on systems that don't have it in limits.h */
116#include <sys/param.h>
117#ifndef PATH_MAX
118#define PATH_MAX 256
119#endif
120
121#endif /* _BB_INTERNAL_H_ */
diff --git a/busybox/include/dump.h b/busybox/include/dump.h
new file mode 100644
index 000000000..3f4b480b2
--- /dev/null
+++ b/busybox/include/dump.h
@@ -0,0 +1,49 @@
1#define F_IGNORE 0x01 /* %_A */
2#define F_SETREP 0x02 /* rep count set, not default */
3#define F_ADDRESS 0x001 /* print offset */
4#define F_BPAD 0x002 /* blank pad */
5#define F_C 0x004 /* %_c */
6#define F_CHAR 0x008 /* %c */
7#define F_DBL 0x010 /* %[EefGf] */
8#define F_INT 0x020 /* %[di] */
9#define F_P 0x040 /* %_p */
10#define F_STR 0x080 /* %s */
11#define F_U 0x100 /* %_u */
12#define F_UINT 0x200 /* %[ouXx] */
13#define F_TEXT 0x400 /* no conversions */
14
15enum _vflag { ALL, DUP, FIRST, WAIT }; /* -v values */
16
17typedef struct _pr {
18 struct _pr *nextpr; /* next print unit */
19 unsigned int flags; /* flag values */
20 int bcnt; /* byte count */
21 char *cchar; /* conversion character */
22 char *fmt; /* printf format */
23 char *nospace; /* no whitespace version */
24} PR;
25
26typedef struct _fu {
27 struct _fu *nextfu; /* next format unit */
28 struct _pr *nextpr; /* next print unit */
29 unsigned int flags; /* flag values */
30 int reps; /* repetition count */
31 int bcnt; /* byte count */
32 char *fmt; /* format string */
33} FU;
34
35typedef struct _fs { /* format strings */
36 struct _fs *nextfs; /* linked list of format strings */
37 struct _fu *nextfu; /* linked list of format units */
38 int bcnt;
39} FS;
40
41extern void bb_dump_add(const char *fmt);
42extern int bb_dump_dump (char **argv);
43extern int bb_dump_size(FS * fs);
44
45extern FS *bb_dump_fshead; /* head of format strings */
46extern int bb_dump_blocksize; /* data block size */
47extern int bb_dump_length; /* max bytes to read */
48extern enum _vflag bb_dump_vflag;
49extern off_t bb_dump_skip; /* bytes to skip */
diff --git a/busybox/include/grp_.h b/busybox/include/grp_.h
new file mode 100644
index 000000000..b212b0b4a
--- /dev/null
+++ b/busybox/include/grp_.h
@@ -0,0 +1,116 @@
1/* Copyright (C) 1991,92,95,96,97,98,99,2000,01 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17 02111-1307 USA. */
18
19/*
20 * POSIX Standard: 9.2.1 Group Database Access <grp.h>
21 */
22
23
24#if !defined CONFIG_USE_BB_PWD_GRP
25#include <grp.h>
26
27#else
28
29#ifndef _GRP_H
30#define _GRP_H 1
31
32
33#include <sys/types.h>
34#include <features.h>
35#include <stdio.h>
36
37
38/* The group structure. */
39struct group
40{
41 char *gr_name; /* Group name. */
42 char *gr_passwd; /* Password. */
43 gid_t gr_gid; /* Group ID. */
44 char **gr_mem; /* Member list. */
45};
46
47
48/* Rewind the group-file stream. */
49extern void setgrent (void);
50
51/* Close the group-file stream. */
52extern void endgrent (void);
53
54/* Read an entry from the group-file stream, opening it if necessary. */
55extern struct group *getgrent (void);
56
57/* Read a group entry from STREAM. */
58extern struct group *fgetgrent (FILE *__stream);
59
60/* Write the given entry onto the given stream. */
61extern int putgrent (__const struct group *__restrict __p,
62 FILE *__restrict __f);
63
64/* Search for an entry with a matching group ID. */
65extern struct group *getgrgid (gid_t __gid);
66
67/* Search for an entry with a matching group name. */
68extern struct group *getgrnam (__const char *__name);
69
70/* Reentrant versions of some of the functions above.
71
72 PLEASE NOTE: the `getgrent_r' function is not (yet) standardized.
73 The interface may change in later versions of this library. But
74 the interface is designed following the principals used for the
75 other reentrant functions so the chances are good this is what the
76 POSIX people would choose. */
77
78extern int getgrent_r (struct group *__restrict __resultbuf,
79 char *__restrict __buffer, size_t __buflen,
80 struct group **__restrict __result);
81
82/* Search for an entry with a matching group ID. */
83extern int getgrgid_r (gid_t __gid, struct group *__restrict __resultbuf,
84 char *__restrict __buffer, size_t __buflen,
85 struct group **__restrict __result);
86
87/* Search for an entry with a matching group name. */
88extern int getgrnam_r (__const char *__restrict __name,
89 struct group *__restrict __resultbuf,
90 char *__restrict __buffer, size_t __buflen,
91 struct group **__restrict __result);
92
93/* Read a group entry from STREAM. This function is not standardized
94 an probably never will. */
95extern int fgetgrent_r (FILE *__restrict __stream,
96 struct group *__restrict __resultbuf,
97 char *__restrict __buffer, size_t __buflen,
98 struct group **__restrict __result);
99
100/* Set the group set for the current user to GROUPS (N of them). */
101extern int setgroups (size_t __n, __const gid_t *__groups);
102
103/* Store at most *NGROUPS members of the group set for USER into
104 *GROUPS. Also include GROUP. The actual number of groups found is
105 returned in *NGROUPS. Return -1 if the if *NGROUPS is too small. */
106extern int getgrouplist (__const char *__user, gid_t __group,
107 gid_t *__groups, int *__ngroups);
108
109/* Initialize the group set for the current user
110 by reading the group database and using all groups
111 of which USER is a member. Also include GROUP. */
112extern int initgroups (__const char *__user, gid_t __group);
113
114
115#endif /* grp.h */
116#endif
diff --git a/busybox/include/inet_common.h b/busybox/include/inet_common.h
new file mode 100644
index 000000000..afea5deaa
--- /dev/null
+++ b/busybox/include/inet_common.h
@@ -0,0 +1,33 @@
1/*
2 * stolen from net-tools-1.59 and stripped down for busybox by
3 * Erik Andersen <andersen@codepoet.org>
4 *
5 * Heavily modified by Manuel Novoa III Mar 12, 2001
6 *
7 * Version: $Id: inet_common.h,v 1.4 2004/03/10 07:42:37 mjn3 Exp $
8 *
9 */
10
11#include <features.h>
12#include <sys/types.h>
13#include <sys/socket.h>
14#include <arpa/inet.h>
15
16
17extern const char bb_INET_default[]; /* = "default" */
18
19/* hostfirst!=0 If we expect this to be a hostname,
20 try hostname database first
21 */
22extern int INET_resolve(const char *name, struct sockaddr_in *s_in, int hostfirst);
23
24
25/* numeric: & 0x8000: default instead of *,
26 * & 0x4000: host instead of net,
27 * & 0x0fff: don't resolve
28 */
29extern int INET_rresolve(char *name, size_t len, struct sockaddr_in *s_in,
30 int numeric, unsigned int netmask);
31
32extern int INET6_resolve(const char *name, struct sockaddr_in6 *sin6);
33extern int INET6_rresolve(char *name, size_t len, struct sockaddr_in6 *sin6, int numeric);
diff --git a/busybox/include/libbb.h b/busybox/include/libbb.h
new file mode 100644
index 000000000..93ab5375c
--- /dev/null
+++ b/busybox/include/libbb.h
@@ -0,0 +1,487 @@
1/* vi: set sw=4 ts=4: */
2/*
3 * Busybox main internal header file
4 *
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 *
20 * Based in part on code from sash, Copyright (c) 1999 by David I. Bell
21 * Permission has been granted to redistribute this code under the GPL.
22 *
23 */
24#ifndef __LIBCONFIG_H__
25#define __LIBCONFIG_H__ 1
26
27#include <stdio.h>
28#include <stdlib.h>
29#include <stdarg.h>
30#include <sys/stat.h>
31#include <sys/types.h>
32#include <regex.h>
33#include <termios.h>
34#include <stdint.h>
35
36#include <netdb.h>
37
38#ifdef DMALLOC
39#include <dmalloc.h>
40#endif
41
42#include <features.h>
43
44#include "config.h"
45#ifdef CONFIG_SELINUX
46#include <proc_secure.h>
47#endif
48
49#include "pwd_.h"
50#include "grp_.h"
51#ifdef CONFIG_FEATURE_SHADOWPASSWDS
52#include "shadow_.h"
53#endif
54#ifdef CONFIG_FEATURE_SHA1_PASSWORDS
55# include "sha1.h"
56#endif
57
58/* Convenience macros to test the version of gcc. */
59#if defined __GNUC__ && defined __GNUC_MINOR__
60# define __GNUC_PREREQ(maj, min) \
61 ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
62#else
63# define __GNUC_PREREQ(maj, min) 0
64#endif
65
66/* __restrict is known in EGCS 1.2 and above. */
67#if !__GNUC_PREREQ (2,92)
68# define __restrict /* Ignore */
69#endif
70
71/* Some useful definitions */
72#define FALSE ((int) 0)
73#define TRUE ((int) 1)
74#define SKIP ((int) 2)
75
76/* for mtab.c */
77#define MTAB_GETMOUNTPT '1'
78#define MTAB_GETDEVICE '2'
79
80#define BUF_SIZE 8192
81#define EXPAND_ALLOC 1024
82
83/* Macros for min/max. */
84#ifndef MIN
85#define MIN(a,b) (((a)<(b))?(a):(b))
86#endif
87
88#ifndef MAX
89#define MAX(a,b) (((a)>(b))?(a):(b))
90#endif
91
92extern void bb_show_usage(void) __attribute__ ((noreturn));
93extern void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
94extern void bb_error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
95extern void bb_perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
96extern void bb_perror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
97extern void bb_vherror_msg(const char *s, va_list p);
98extern void bb_herror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
99extern void bb_herror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
100
101extern void bb_perror_nomsg_and_die(void) __attribute__ ((noreturn));
102extern void bb_perror_nomsg(void);
103
104/* These two are used internally -- you shouldn't need to use them */
105extern void bb_verror_msg(const char *s, va_list p) __attribute__ ((format (printf, 1, 0)));
106extern void bb_vperror_msg(const char *s, va_list p) __attribute__ ((format (printf, 1, 0)));
107
108extern const char *bb_mode_string(int mode);
109extern int is_directory(const char *name, int followLinks, struct stat *statBuf);
110
111extern int remove_file(const char *path, int flags);
112extern int copy_file(const char *source, const char *dest, int flags);
113extern ssize_t safe_read(int fd, void *buf, size_t count);
114extern ssize_t bb_full_read(int fd, void *buf, size_t len);
115extern ssize_t safe_write(int fd, const void *buf, size_t count);
116extern ssize_t bb_full_write(int fd, const void *buf, size_t len);
117extern int recursive_action(const char *fileName, int recurse,
118 int followLinks, int depthFirst,
119 int (*fileAction) (const char *fileName, struct stat* statbuf, void* userData),
120 int (*dirAction) (const char *fileName, struct stat* statbuf, void* userData),
121 void* userData);
122
123extern int bb_parse_mode( const char* s, mode_t* theMode);
124extern long bb_xgetlarg(const char *arg, int base, long lower, long upper);
125
126extern unsigned long bb_baud_to_value(speed_t speed);
127extern speed_t bb_value_to_baud(unsigned long value);
128
129extern int get_kernel_revision(void);
130
131extern int get_console_fd(void);
132extern struct mntent *find_mount_point(const char *name, const char *table);
133extern void write_mtab(char* blockDevice, char* directory,
134 char* filesystemType, long flags, char* string_flags);
135extern void erase_mtab(const char * name);
136extern long *find_pid_by_name( const char* pidName);
137extern char *find_real_root_device_name(void);
138extern char *bb_get_line_from_file(FILE *file);
139extern char *bb_get_chomped_line_from_file(FILE *file);
140extern int bb_copyfd_size(int fd1, int fd2, const off_t size);
141extern int bb_copyfd_eof(int fd1, int fd2);
142extern void bb_xprint_and_close_file(FILE *file);
143extern int bb_xprint_file_by_name(const char *filename);
144extern char bb_process_escape_sequence(const char **ptr);
145extern char *bb_get_last_path_component(char *path);
146extern FILE *bb_wfopen(const char *path, const char *mode);
147extern FILE *bb_xfopen(const char *path, const char *mode);
148
149//#warning rename?
150extern int bb_fclose_nonstdin(FILE *f);
151extern void bb_fflush_stdout_and_exit(int retval) __attribute__ ((noreturn));
152
153extern const char *bb_opt_complementaly;
154extern const struct option *bb_applet_long_options;
155extern unsigned long bb_getopt_ulflags(int argc, char **argv, const char *applet_opts, ...);
156
157//#warning rename?
158extern FILE *bb_wfopen_input(const char *filename);
159
160extern int bb_vfprintf(FILE * __restrict stream, const char * __restrict format,
161 va_list arg) __attribute__ ((format (printf, 2, 0)));
162extern int bb_vprintf(const char * __restrict format, va_list arg)
163 __attribute__ ((format (printf, 1, 0)));
164extern int bb_fprintf(FILE * __restrict stream, const char * __restrict format, ...)
165 __attribute__ ((format (printf, 2, 3)));
166extern int bb_printf(const char * __restrict format, ...)
167 __attribute__ ((format (printf, 1, 2)));
168
169//#warning rename to xferror_filename?
170extern void bb_xferror(FILE *fp, const char *fn);
171extern void bb_xferror_stdout(void);
172extern void bb_xfflush_stdout(void);
173
174extern void bb_warn_ignoring_args(int n);
175
176extern void chomp(char *s);
177extern void trim(char *s);
178extern const char *bb_skip_whitespace(const char *);
179
180extern struct BB_applet *find_applet_by_name(const char *name);
181void run_applet_by_name(const char *name, int argc, char **argv);
182
183//#warning is this needed anymore?
184#ifndef DMALLOC
185extern void *xmalloc (size_t size);
186extern void *xrealloc(void *old, size_t size);
187extern void *xcalloc(size_t nmemb, size_t size);
188#endif
189extern char *bb_xstrdup (const char *s);
190extern char *bb_xstrndup (const char *s, int n);
191extern char *safe_strncpy(char *dst, const char *src, size_t size);
192extern int safe_strtoi(char *arg, int* value);
193extern int safe_strtod(char *arg, double* value);
194extern int safe_strtol(char *arg, long* value);
195extern int safe_strtoul(char *arg, unsigned long* value);
196
197struct suffix_mult {
198 const char *suffix;
199 unsigned int mult;
200};
201
202extern unsigned long bb_xgetularg_bnd_sfx(const char *arg, int base,
203 unsigned long lower,
204 unsigned long upper,
205 const struct suffix_mult *suffixes);
206extern unsigned long bb_xgetularg_bnd(const char *arg, int base,
207 unsigned long lower,
208 unsigned long upper);
209extern unsigned long bb_xgetularg10_bnd(const char *arg,
210 unsigned long lower,
211 unsigned long upper);
212extern unsigned long bb_xgetularg10(const char *arg);
213
214extern long bb_xgetlarg_bnd_sfx(const char *arg, int base,
215 long lower,
216 long upper,
217 const struct suffix_mult *suffixes);
218extern long bb_xgetlarg10_sfx(const char *arg, const struct suffix_mult *suffixes);
219
220
221//#warning pitchable now?
222extern unsigned long bb_xparse_number(const char *numstr,
223 const struct suffix_mult *suffixes);
224
225
226//#warning change names?
227
228/* These parse entries in /etc/passwd and /etc/group. This is desirable
229 * for BusyBox since we want to avoid using the glibc NSS stuff, which
230 * increases target size and is often not needed embedded systems. */
231extern long my_getpwnam(const char *name);
232extern long my_getgrnam(const char *name);
233extern char * my_getug(char *buffer, char *idname, long id, int bufsize, char prefix);
234extern char * my_getpwuid(char *name, long uid, int bufsize);
235extern char * my_getgrgid(char *group, long gid, int bufsize);
236extern char *bb_askpass(int timeout, const char * prompt);
237
238extern int device_open(const char *device, int mode);
239
240extern int del_loop(const char *device);
241extern int set_loop(const char *device, const char *file, int offset, int *loopro);
242extern char *find_unused_loop_device (void);
243
244
245#if (__GLIBC__ < 2)
246extern int vdprintf(int d, const char *format, va_list ap);
247#endif
248
249int nfsmount(const char *spec, const char *node, int *flags,
250 char **extra_opts, char **mount_opts, int running_bg);
251
252/* Include our own copy of struct sysinfo to avoid binary compatability
253 * problems with Linux 2.4, which changed things. Grumble, grumble. */
254struct sysinfo {
255 long uptime; /* Seconds since boot */
256 unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
257 unsigned long totalram; /* Total usable main memory size */
258 unsigned long freeram; /* Available memory size */
259 unsigned long sharedram; /* Amount of shared memory */
260 unsigned long bufferram; /* Memory used by buffers */
261 unsigned long totalswap; /* Total swap space size */
262 unsigned long freeswap; /* swap space still available */
263 unsigned short procs; /* Number of current processes */
264 unsigned short pad; /* Padding needed for m68k */
265 unsigned long totalhigh; /* Total high memory size */
266 unsigned long freehigh; /* Available high memory size */
267 unsigned int mem_unit; /* Memory unit size in bytes */
268 char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
269};
270extern int sysinfo (struct sysinfo* info);
271
272enum {
273 KILOBYTE = 1024,
274 MEGABYTE = (KILOBYTE*1024),
275 GIGABYTE = (MEGABYTE*1024)
276};
277const char *make_human_readable_str(unsigned long long size,
278 unsigned long block_size, unsigned long display_unit);
279
280int bb_ask_confirmation(void);
281int klogctl(int type, char * b, int len);
282
283char *xgetcwd(char *cwd);
284char *xreadlink(const char *path);
285char *concat_path_file(const char *path, const char *filename);
286char *concat_subpath_file(const char *path, const char *filename);
287char *last_char_is(const char *s, int c);
288
289int read_package_field(const char *package_buffer, char **field_name, char **field_value);
290//#warning yuk!
291char *fgets_str(FILE *file, const char *terminating_string);
292
293extern int uncompress(int fd_in, int fd_out);
294extern int inflate(int in, int out);
295
296extern struct hostent *xgethostbyname(const char *name);
297extern struct hostent *xgethostbyname2(const char *name, int af);
298extern int create_icmp_socket(void);
299extern int create_icmp6_socket(void);
300extern int xconnect(struct sockaddr_in *s_addr);
301extern unsigned short bb_lookup_port(const char *port, const char *protocol, unsigned short default_port);
302extern void bb_lookup_host(struct sockaddr_in *s_in, const char *host);
303
304//#warning wrap this?
305char *dirname (char *path);
306
307int bb_make_directory (char *path, long mode, int flags);
308
309const char *u_signal_names(const char *str_sig, int *signo, int startnum);
310char *bb_simplify_path(const char *path);
311
312enum { /* DO NOT CHANGE THESE VALUES! cp.c depends on them. */
313 FILEUTILS_PRESERVE_STATUS = 1,
314 FILEUTILS_DEREFERENCE = 2,
315 FILEUTILS_RECUR = 4,
316 FILEUTILS_FORCE = 8,
317 FILEUTILS_INTERACTIVE = 16
318};
319
320extern const char *bb_applet_name;
321
322extern const char * const bb_msg_full_version;
323extern const char * const bb_msg_memory_exhausted;
324extern const char * const bb_msg_invalid_date;
325extern const char * const bb_msg_io_error;
326extern const char * const bb_msg_write_error;
327extern const char * const bb_msg_name_longer_than_foo;
328extern const char * const bb_msg_unknown;
329extern const char * const bb_msg_can_not_create_raw_socket;
330extern const char * const bb_msg_perm_denied_are_you_root;
331extern const char * const bb_msg_standard_input;
332extern const char * const bb_msg_standard_output;
333
334extern const char * const bb_path_nologin_file;
335extern const char * const bb_path_passwd_file;
336extern const char * const bb_path_shadow_file;
337extern const char * const bb_path_gshadow_file;
338extern const char * const bb_path_group_file;
339extern const char * const bb_path_securetty_file;
340extern const char * const bb_path_motd_file;
341
342/*
343 * You can change LIBBB_DEFAULT_LOGIN_SHELL, but don`t use,
344 * use bb_default_login_shell and next defines,
345 * if you LIBBB_DEFAULT_LOGIN_SHELL change,
346 * don`t lose change increment constant!
347 */
348#define LIBBB_DEFAULT_LOGIN_SHELL "-/bin/sh"
349
350extern const char * const bb_default_login_shell;
351/* "/bin/sh" */
352#define DEFAULT_SHELL (bb_default_login_shell+1)
353/* "sh" */
354#define DEFAULT_SHELL_SHORT_NAME (bb_default_login_shell+6)
355
356
357extern const char bb_path_mtab_file[];
358
359extern int bb_default_error_retval;
360
361#ifdef CONFIG_FEATURE_DEVFS
362# define CURRENT_VC "/dev/vc/0"
363# define VC_1 "/dev/vc/1"
364# define VC_2 "/dev/vc/2"
365# define VC_3 "/dev/vc/3"
366# define VC_4 "/dev/vc/4"
367# define VC_5 "/dev/vc/5"
368#if defined(__sh__) || defined(__H8300H__) || defined(__H8300S__)
369/* Yes, this sucks, but both SH (including sh64) and H8 have a SCI(F) for their
370 respective serial ports .. as such, we can't use the common device paths for
371 these. -- PFM */
372# define SC_0 "/dev/ttsc/0"
373# define SC_1 "/dev/ttsc/1"
374# define SC_FORMAT "/dev/ttsc/%d"
375#else
376# define SC_0 "/dev/tts/0"
377# define SC_1 "/dev/tts/1"
378# define SC_FORMAT "/dev/tts/%d"
379#endif
380# define VC_FORMAT "/dev/vc/%d"
381# define LOOP_FORMAT "/dev/loop/%d"
382# define FB_0 "/dev/fb/0"
383#else
384# define CURRENT_VC "/dev/tty0"
385# define VC_1 "/dev/tty1"
386# define VC_2 "/dev/tty2"
387# define VC_3 "/dev/tty3"
388# define VC_4 "/dev/tty4"
389# define VC_5 "/dev/tty5"
390#if defined(__sh__) || defined(__H8300H__) || defined(__H8300S__)
391# define SC_0 "/dev/ttySC0"
392# define SC_1 "/dev/ttySC1"
393# define SC_FORMAT "/dev/ttySC%d"
394#else
395# define SC_0 "/dev/ttyS0"
396# define SC_1 "/dev/ttyS1"
397# define SC_FORMAT "/dev/ttyS%d"
398#endif
399# define VC_FORMAT "/dev/tty%d"
400# define LOOP_FORMAT "/dev/loop%d"
401# define FB_0 "/dev/fb0"
402#endif
403
404//#warning put these in .o files
405
406/* The following devices are the same on devfs and non-devfs systems. */
407#define CURRENT_TTY "/dev/tty"
408#define CONSOLE_DEV "/dev/console"
409
410int is_in_ino_dev_hashtable(const struct stat *statbuf, char **name);
411void add_to_ino_dev_hashtable(const struct stat *statbuf, const char *name);
412void reset_ino_dev_hashtable(void);
413
414/* Stupid gcc always includes its own builtin strlen()... */
415extern size_t bb_strlen(const char *string);
416#define strlen(x) bb_strlen(x)
417
418void bb_xasprintf(char **string_ptr, const char *format, ...) __attribute__ ((format (printf, 2, 3)));
419
420
421#define FAIL_DELAY 3
422extern void change_identity ( const struct passwd *pw );
423extern const char *change_identity_e2str ( const struct passwd *pw );
424extern void run_shell ( const char *shell, int loginshell, const char *command, const char **additional_args
425#ifdef CONFIG_SELINUX
426 , security_id_t sid
427#endif
428);
429extern int run_parts(char **args, const unsigned char test_mode, char **env);
430extern int restricted_shell ( const char *shell );
431extern void setup_environment ( const char *shell, int loginshell, int changeenv, const struct passwd *pw );
432extern int correct_password ( const struct passwd *pw );
433extern char *pw_encrypt(const char *clear, const char *salt);
434extern struct spwd *pwd_to_spwd(const struct passwd *pw);
435extern int obscure(const char *old, const char *newval, const struct passwd *pwdp);
436
437extern int bb_xopen(const char *pathname, int flags);
438extern ssize_t bb_xread(int fd, void *buf, size_t count);
439extern void bb_xread_all(int fd, void *buf, size_t count);
440extern unsigned char bb_xread_char(int fd);
441
442typedef struct {
443 int pid;
444 char user[9];
445 char state[4];
446 unsigned long rss;
447 int ppid;
448#ifdef FEATURE_CPU_USAGE_PERCENTAGE
449 unsigned pcpu;
450 unsigned long stime, utime;
451#endif
452 char *cmd;
453
454 /* basename of executable file in call to exec(2),
455 size from kernel headers */
456 char short_cmd[16];
457} procps_status_t;
458
459extern procps_status_t * procps_scan(int save_user_arg0
460#ifdef CONFIG_SELINUX
461 , int use_selinux, security_id_t *sid
462#endif
463);
464extern unsigned short compare_string_array(const char *string_array[], const char *key);
465
466extern int my_query_module(const char *name, int which, void **buf, size_t *bufsize, size_t *ret);
467
468typedef struct llist_s {
469 char *data;
470 struct llist_s *link;
471} llist_t;
472extern llist_t *llist_add_to(llist_t *old_head, char *new_item);
473
474extern void print_login_issue(const char *issue_file, const char *tty);
475extern void print_login_prompt(void);
476
477extern void vfork_daemon_rexec(int nochdir, int noclose,
478 int argc, char **argv, char *foreground_opt);
479extern void get_terminal_width_height(int fd, int *width, int *height);
480extern unsigned long get_ug_id(const char *s, long (*my_getxxnam)(const char *));
481extern void xregcomp(regex_t *preg, const char *regex, int cflags);
482
483#define HASH_SHA1 1
484#define HASH_MD5 2
485extern int hash_fd(int fd, const size_t size, const uint8_t hash_algo, uint8_t *hashval);
486
487#endif /* __LIBCONFIG_H__ */
diff --git a/busybox/include/pwd_.h b/busybox/include/pwd_.h
new file mode 100644
index 000000000..72151203e
--- /dev/null
+++ b/busybox/include/pwd_.h
@@ -0,0 +1,106 @@
1/* Copyright (C) 1991,92,95,96,97,98,99,2001 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17 02111-1307 USA. */
18
19/*
20 * POSIX Standard: 9.2.2 User Database Access <pwd.h>
21 */
22
23#if !defined CONFIG_USE_BB_PWD_GRP
24#include <pwd.h>
25
26#else
27
28#ifndef _PWD_H
29#define _PWD_H 1
30
31#include <sys/types.h>
32#include <features.h>
33#include <stdio.h>
34
35/* The passwd structure. */
36struct passwd
37{
38 char *pw_name; /* Username. */
39 char *pw_passwd; /* Password. */
40 uid_t pw_uid; /* User ID. */
41 gid_t pw_gid; /* Group ID. */
42 char *pw_gecos; /* Real name. */
43 char *pw_dir; /* Home directory. */
44 char *pw_shell; /* Shell program. */
45};
46
47
48/* Rewind the password-file stream. */
49extern void setpwent (void);
50
51/* Close the password-file stream. */
52extern void endpwent (void);
53
54/* Read an entry from the password-file stream, opening it if necessary. */
55extern struct passwd *getpwent (void);
56
57/* Read an entry from STREAM. */
58extern struct passwd *fgetpwent (FILE *__stream);
59
60/* Write the given entry onto the given stream. */
61extern int putpwent (__const struct passwd *__restrict __p,
62 FILE *__restrict __f);
63
64/* Search for an entry with a matching user ID. */
65extern struct passwd *getpwuid (uid_t __uid);
66
67/* Search for an entry with a matching username. */
68extern struct passwd *getpwnam (__const char *__name);
69
70/* Reentrant versions of some of the functions above.
71
72 PLEASE NOTE: the `getpwent_r' function is not (yet) standardized.
73 The interface may change in later versions of this library. But
74 the interface is designed following the principals used for the
75 other reentrant functions so the chances are good this is what the
76 POSIX people would choose. */
77
78extern int getpwent_r (struct passwd *__restrict __resultbuf,
79 char *__restrict __buffer, size_t __buflen,
80 struct passwd **__restrict __result);
81
82extern int getpwuid_r (uid_t __uid,
83 struct passwd *__restrict __resultbuf,
84 char *__restrict __buffer, size_t __buflen,
85 struct passwd **__restrict __result);
86
87extern int getpwnam_r (__const char *__restrict __name,
88 struct passwd *__restrict __resultbuf,
89 char *__restrict __buffer, size_t __buflen,
90 struct passwd **__restrict __result);
91
92
93/* Read an entry from STREAM. This function is not standardized and
94 probably never will. */
95extern int fgetpwent_r (FILE *__restrict __stream,
96 struct passwd *__restrict __resultbuf,
97 char *__restrict __buffer, size_t __buflen,
98 struct passwd **__restrict __result);
99
100/* Re-construct the password-file line for the given uid
101 in the given buffer. This knows the format that the caller
102 will expect, but this need not be the format of the password file. */
103extern int getpw (uid_t __uid, char *__buffer);
104
105#endif /* pwd.h */
106#endif
diff --git a/busybox/include/shadow_.h b/busybox/include/shadow_.h
new file mode 100644
index 000000000..1b14f0a7b
--- /dev/null
+++ b/busybox/include/shadow_.h
@@ -0,0 +1,98 @@
1/* Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, write to the Free
16 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17 02111-1307 USA. */
18
19/* Declaration of types and functions for shadow password suite. */
20
21#if !defined CONFIG_USE_BB_SHADOW
22#include <shadow.h>
23#else
24
25#ifndef _SHADOW_H
26#define _SHADOW_H 1
27
28#include <stdio.h>
29
30/* Paths to the user database files. */
31#ifndef _PATH_SHADOW
32#define _PATH_SHADOW "/etc/shadow"
33#endif
34#define SHADOW _PATH_SHADOW
35
36
37/* Structure of the password file. */
38struct spwd
39{
40 char *sp_namp; /* Login name. */
41 char *sp_pwdp; /* Encrypted password. */
42 long int sp_lstchg; /* Date of last change. */
43 long int sp_min; /* Minimum number of days between changes. */
44 long int sp_max; /* Maximum number of days between changes. */
45 long int sp_warn; /* Number of days to warn user to change
46 the password. */
47 long int sp_inact; /* Number of days the account may be
48 inactive. */
49 long int sp_expire; /* Number of days since 1970-01-01 until
50 account expires. */
51 unsigned long int sp_flag; /* Reserved. */
52};
53
54
55/* Open database for reading. */
56extern void setspent (void);
57
58/* Close database. */
59extern void endspent (void);
60
61/* Get next entry from database, perhaps after opening the file. */
62extern struct spwd *getspent (void);
63
64/* Get shadow entry matching NAME. */
65extern struct spwd *getspnam (__const char *__name);
66
67/* Read shadow entry from STRING. */
68extern struct spwd *sgetspent (__const char *__string);
69
70/* Read next shadow entry from STREAM. */
71extern struct spwd *fgetspent (FILE *__stream);
72
73/* Write line containing shadow password entry to stream. */
74extern int putspent (__const struct spwd *__p, FILE *__stream);
75
76/* Reentrant versions of some of the functions above. */
77extern int getspent_r (struct spwd *__result_buf, char *__buffer,
78 size_t __buflen, struct spwd **__result);
79
80extern int getspnam_r (__const char *__name, struct spwd *__result_buf,
81 char *__buffer, size_t __buflen,
82 struct spwd **__result)__THROW;
83
84extern int sgetspent_r (__const char *__string, struct spwd *__result_buf,
85 char *__buffer, size_t __buflen,
86 struct spwd **__result);
87
88extern int fgetspent_r (FILE *__stream, struct spwd *__result_buf,
89 char *__buffer, size_t __buflen,
90 struct spwd **__result);
91/* Protect password file against multi writers. */
92extern int lckpwdf (void);
93
94/* Unlock password file. */
95extern int ulckpwdf (void);
96
97#endif /* shadow.h */
98#endif
diff --git a/busybox/include/unarchive.h b/busybox/include/unarchive.h
new file mode 100644
index 000000000..1679b73ab
--- /dev/null
+++ b/busybox/include/unarchive.h
@@ -0,0 +1,107 @@
1#ifndef __UNARCHIVE_H__
2#define __UNARCHIVE_H__
3
4#define ARCHIVE_PRESERVE_DATE 1
5#define ARCHIVE_CREATE_LEADING_DIRS 2
6#define ARCHIVE_EXTRACT_UNCONDITIONAL 4
7#define ARCHIVE_EXTRACT_QUIET 8
8#define ARCHIVE_EXTRACT_NEWER 16
9
10#include <sys/types.h>
11#include <stdio.h>
12#include "libbb.h"
13
14typedef struct file_headers_s {
15 char *name;
16 char *link_name;
17 off_t size;
18 uid_t uid;
19 gid_t gid;
20 mode_t mode;
21 time_t mtime;
22 dev_t device;
23} file_header_t;
24
25typedef struct archive_handle_s {
26 /* define if the header and data compenent should processed */
27 char (*filter)(struct archive_handle_s *);
28 llist_t *accept;
29 llist_t *reject;
30 llist_t *passed; /* List of files that have successfully been worked on */
31
32 /* Contains the processed header entry */
33 file_header_t *file_header;
34
35 /* process the header component, e.g. tar -t */
36 void (*action_header)(const file_header_t *);
37
38 /* process the data component, e.g. extract to filesystem */
39 void (*action_data)(struct archive_handle_s *);
40
41 /* How to process any sub archive, e.g. get_header_tar_gz */
42 char (*action_data_subarchive)(struct archive_handle_s *);
43
44 /* Contains the handle to a sub archive */
45 struct archive_handle_s *sub_archive;
46
47 /* The raw stream as read from disk or stdin */
48 int src_fd;
49
50 /* Count the number of bytes processed */
51 off_t offset;
52
53 /* Function that skips data: read_by_char or read_by_skip */
54 void (*seek)(const struct archive_handle_s *archive_handle, const unsigned int amount);
55
56 /* Temporary storage */
57 char *buffer;
58
59 /* Misc. stuff */
60 unsigned char flags;
61
62} archive_handle_t;
63
64extern archive_handle_t *init_handle(void);
65
66extern char filter_accept_all(archive_handle_t *archive_handle);
67extern char filter_accept_list(archive_handle_t *archive_handle);
68extern char filter_accept_list_reassign(archive_handle_t *archive_handle);
69extern char filter_accept_reject_list(archive_handle_t *archive_handle);
70
71extern void unpack_ar_archive(archive_handle_t *ar_archive);
72
73extern void data_skip(archive_handle_t *archive_handle);
74extern void data_extract_all(archive_handle_t *archive_handle);
75extern void data_extract_to_stdout(archive_handle_t *archive_handle);
76extern void data_extract_to_buffer(archive_handle_t *archive_handle);
77
78extern void header_skip(const file_header_t *file_header);
79extern void header_list(const file_header_t *file_header);
80extern void header_verbose_list(const file_header_t *file_header);
81
82extern void check_header_gzip(int src_fd);
83
84extern char get_header_ar(archive_handle_t *archive_handle);
85extern char get_header_cpio(archive_handle_t *archive_handle);
86extern char get_header_tar(archive_handle_t *archive_handle);
87extern char get_header_tar_bz2(archive_handle_t *archive_handle);
88extern char get_header_tar_gz(archive_handle_t *archive_handle);
89
90extern void seek_by_jump(const archive_handle_t *archive_handle, const unsigned int amount);
91extern void seek_by_char(const archive_handle_t *archive_handle, const unsigned int amount);
92
93extern void archive_xread_all(const archive_handle_t *archive_handle, void *buf, const size_t count);
94extern ssize_t archive_xread_all_eof(archive_handle_t *archive_handle, unsigned char *buf, size_t count);
95
96extern void data_align(archive_handle_t *archive_handle, const unsigned short boundary);
97extern const llist_t *find_list_entry(const llist_t *list, const char *filename);
98
99extern int uncompressStream(int src_fd, int dst_fd);
100extern void inflate_init(unsigned int bufsize);
101extern int inflate_unzip(int in, int out);
102extern int inflate_gunzip(int in, int out);
103
104extern int open_transformer(int src_fd, int (*transformer)(int src_fd, int dst_fd));
105
106
107#endif
diff --git a/busybox/include/usage.h b/busybox/include/usage.h
new file mode 100644
index 000000000..377eb10e7
--- /dev/null
+++ b/busybox/include/usage.h
@@ -0,0 +1,2885 @@
1#ifndef __BB_USAGE_H__
2#define __BB_USAGE_H__
3
4#define addgroup_trivial_usage \
5 "[-g GID] group_name [user_name]"
6#define addgroup_full_usage \
7 "Adds a group to the system\n\n" \
8 "Options:\n" \
9 "\t-g GID\t\tspecify gid"
10
11#define adduser_trivial_usage \
12 "[OPTIONS] user_name"
13#define adduser_full_usage \
14 "Adds a user to the system\n\n" \
15 "Options:\n" \
16 "\t-h DIR\t\tAssign home directory DIR\n" \
17 "\t-g GECOS\tAssign gecos field GECOS\n" \
18 "\t-s SHELL\tAssign login shell SHELL\n" \
19 "\t-G\t\tAdd the user to existing group GROUP\n" \
20 "\t-S\t\tcreate a system user (ignored)\n" \
21 "\t-D\t\tDo not assign a password (logins still possible via ssh)\n" \
22 "\t-H\t\tDo not create the home directory"
23
24#define adjtimex_trivial_usage \
25 "[-q] [-o offset] [-f frequency] [-p timeconstant] [-t tick]"
26#define adjtimex_full_usage \
27 "Reads and optionally sets system timebase parameters.\n" \
28 "See adjtimex(2).\n\n" \
29 "Options:\n" \
30 "\t-q\t\tquiet mode - do not print\n" \
31 "\t-o offset\ttime offset, microseconds\n" \
32 "\t-f frequency\tfrequency adjust, integer kernel units (65536 is 1ppm)\n" \
33 "\t\t\t(positive values make the system clock run fast)\n" \
34 "\t-t tick\t\tmicroseconds per tick, usually 10000\n" \
35 "\t-p timeconstant"
36
37#define ar_trivial_usage \
38 "[-o] [-v] [-p] [-t] [-x] ARCHIVE FILES"
39#define ar_full_usage \
40 "Extract or list FILES from an ar archive.\n\n" \
41 "Options:\n" \
42 "\t-o\t\tpreserve original dates\n" \
43 "\t-p\t\textract to stdout\n" \
44 "\t-t\t\tlist\n" \
45 "\t-x\t\textract\n" \
46 "\t-v\t\tverbosely list files processed"
47
48#define arping_trivial_usage \
49 "[-fqbDUA] [-c count] [-w timeout] [-I device] [-s sender] target\n"
50#define arping_full_usage \
51 "Ping hosts by ARP requests/replies.\n\n" \
52 "Options:\n" \
53 "\t-f\t\tQuit on first ARP reply\n" \
54 "\t-q\t\tBe quiet\n" \
55 "\t-b\t\tKeep broadcasting, don't go unicast\n" \
56 "\t-D\t\tDuplicated address detection mode\n" \
57 "\t-U\t\tUnsolicited ARP mode, update your neighbours\n" \
58 "\t-A\t\tARP answer mode, update your neighbours\n" \
59 "\t-c count\tStop after sending count ARP request packets\n" \
60 "\t-w timeout\tTime to wait for ARP reply, in seconds\n" \
61 "\t-I device\tOutgoing interface name, default is eth0\n" \
62 "\t-s sender\tSet specific sender IP address\n" \
63 "\ttarget\t\tTarget IP address of ARP request"
64
65#define ash_trivial_usage \
66 "[FILE]...\n" \
67 "or: ash -c command [args]...\n"
68#define ash_full_usage \
69 "The ash shell (command interpreter)"
70
71#define awk_trivial_usage \
72 "[OPTION]... [program-text] [FILE ...]"
73#define awk_full_usage \
74 "Options:\n" \
75 "\t-v var=val\t\tassign value 'val' to variable 'var'\n" \
76 "\t-F sep\t\tuse 'sep' as field separator\n" \
77 "\t-f progname\t\tread program source from file 'progname'"
78
79#define basename_trivial_usage \
80 "FILE [SUFFIX]"
81#define basename_full_usage \
82 "Strips directory path and suffixes from FILE.\n" \
83 "If specified, also removes any trailing SUFFIX."
84#define basename_example_usage \
85 "$ basename /usr/local/bin/foo\n" \
86 "foo\n" \
87 "$ basename /usr/local/bin/\n" \
88 "bin\n" \
89 "$ basename /foo/bar.txt .txt\n" \
90 "bar"
91
92#define bunzip2_trivial_usage \
93 "[OPTION]... [FILE]"
94#define bunzip2_full_usage \
95 "Uncompress FILE (or standard input if FILE is '-' or omitted).\n\n" \
96 "Options:\n" \
97 "\t-c\tWrite output to standard output\n" \
98 "\t-f\tForce"
99
100#define bzcat_trivial_usage \
101 "FILE"
102#define bzcat_full_usage \
103 "Uncompress to stdout."
104
105#define cal_trivial_usage \
106 "[-jy] [[month] year]"
107#define cal_full_usage \
108 "Display a calendar.\n" \
109 "\nOptions:\n" \
110 "\t-j\tUse julian dates.\n" \
111 "\t-y\tDisplay the entire year."
112
113#define cat_trivial_usage \
114 "[-u] [FILE]..."
115#define cat_full_usage \
116 "Concatenates FILE(s) and prints them to stdout.\n\n" \
117 "Options:\n" \
118 "\t-u\tignored since unbuffered i/o is always used"
119#define cat_example_usage \
120 "$ cat /proc/uptime\n" \
121 "110716.72 17.67"
122
123#define chgrp_trivial_usage \
124 "[OPTION]... GROUP FILE..."
125#define chgrp_full_usage \
126 "Change the group membership of each FILE to GROUP.\n" \
127 "\nOptions:\n" \
128 "\t-R\tChanges files and directories recursively."
129#define chgrp_example_usage \
130 "$ ls -l /tmp/foo\n" \
131 "-r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo\n" \
132 "$ chgrp root /tmp/foo\n" \
133 "$ ls -l /tmp/foo\n" \
134 "-r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo\n"
135
136#define chmod_trivial_usage \
137 "[-R] MODE[,MODE]... FILE..."
138#define chmod_full_usage \
139 "Each MODE is one or more of the letters ugoa, one of the\n" \
140 "symbols +-= and one or more of the letters rwxst.\n\n" \
141 "Options:\n" \
142 "\t-R\tChanges files and directories recursively."
143#define chmod_example_usage \
144 "$ ls -l /tmp/foo\n" \
145 "-rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo\n" \
146 "$ chmod u+x /tmp/foo\n" \
147 "$ ls -l /tmp/foo\n" \
148 "-rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*\n" \
149 "$ chmod 444 /tmp/foo\n" \
150 "$ ls -l /tmp/foo\n" \
151 "-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo\n"
152
153#define chown_trivial_usage \
154 "[ -Rh ]... OWNER[<.|:>[GROUP]] FILE..."
155#define chown_full_usage \
156 "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n" \
157 "\nOptions:\n" \
158 "\t-R\tChanges files and directories recursively.\n" \
159 "\t-h\tDo not dereference symbolic links."
160#define chown_example_usage \
161 "$ ls -l /tmp/foo\n" \
162 "-r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo\n" \
163 "$ chown root /tmp/foo\n" \
164 "$ ls -l /tmp/foo\n" \
165 "-r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo\n" \
166 "$ chown root.root /tmp/foo\n" \
167 "ls -l /tmp/foo\n" \
168 "-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo\n"
169
170#define chroot_trivial_usage \
171 "NEWROOT [COMMAND...]"
172#define chroot_full_usage \
173 "Run COMMAND with root directory set to NEWROOT."
174#define chroot_example_usage \
175 "$ ls -l /bin/ls\n" \
176 "lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox\n" \
177 "# mount /dev/hdc1 /mnt -t minix\n" \
178 "# chroot /mnt\n" \
179 "# ls -l /bin/ls\n" \
180 "-rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*\n"
181
182#define chvt_trivial_usage \
183 "N"
184#define chvt_full_usage \
185 "Changes the foreground virtual terminal to /dev/ttyN"
186
187#define clear_trivial_usage \
188 ""
189#define clear_full_usage \
190 "Clear screen."
191
192#define cmp_trivial_usage \
193 "[-l] [-s] FILE1 [FILE2]"
194#define cmp_full_usage \
195 "Compare files. Compares FILE1 vs stdin if FILE2 is not specified.\n\n" \
196 "Options:\n" \
197 "\t-l\tWrite the byte numbers (decimal) and values (octal)\n" \
198 "\t\t for all differing bytes.\n" \
199 "\t-s\tquiet mode - do not print"
200
201#define cp_trivial_usage \
202 "[OPTION]... SOURCE DEST"
203#define cp_full_usage \
204 "Copies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n" \
205 "\n" \
206 "\t-a\tSame as -dpR\n" \
207 "\t-d\tPreserves links\n" \
208 "\t-p\tPreserves file attributes if possible\n" \
209 "\t-f\tforce (implied; ignored) - always set\n" \
210 "\t-i\tinteractive, prompt before overwrite\n" \
211 "\t-R,-r\tCopies directories recursively"
212
213#define cpio_trivial_usage \
214 "-[dimtuv][F cpiofile]"
215#define cpio_full_usage \
216 "Extract or list files from a cpio archive\n" \
217 "Main operation mode:\n" \
218 "\td\t\tmake leading directories\n" \
219 "\ti\t\textract\n" \
220 "\tm\t\tpreserve mtime\n" \
221 "\tt\t\tlist\n" \
222 "\tv\t\tverbose\n" \
223 "\tu\t\tunconditional overwrite\n" \
224 "\tF\t\tinput from file"
225
226#define crond_trivial_usage \
227 "-d[#] -c <crondir> -f -b"
228#define crond_full_usage \
229 "\t-d [#] -l [#] -S -L logfile -f -b -c dir\n" \
230 "\t-d num\tdebug level\n" \
231 "\t-l num\tlog level (8 - default)\n" \
232 "\t-S\tlog to syslogd (default)\n" \
233 "\t-L file\tlog to file\n" \
234 "\t-f\trun in fordeground\n" \
235 "\t-b\trun in background (default)\n" \
236 "\t-c dir\tworking dir"
237
238#define crontab_trivial_usage \
239 "[-c dir] {file|-}|[-u|-l|-e|-d user]"
240#define crontab_full_usage \
241 "\tfile <opts> replace crontab from file\n" \
242 "\t- <opts> replace crontab from stdin\n" \
243 "\t-u user specify user\n" \
244 "\t-l [user] list crontab for user\n" \
245 "\t-e [user] edit crontab for user\n" \
246 "\t-d [user] delete crontab for user\n" \
247 "\t-c dir specify crontab directory"
248
249
250#define cut_trivial_usage \
251 "[OPTION]... [FILE]..."
252#define cut_full_usage \
253 "Prints selected fields from each input FILE to standard output.\n\n" \
254 "Options:\n" \
255 "\t-b LIST\t\tOutput only bytes from LIST\n" \
256 "\t-c LIST\t\tOutput only characters from LIST\n" \
257 "\t-d CHAR\t\tUse CHAR instead of tab as the field delimiter\n" \
258 "\t-s\t\tOutput only the lines containing delimiter\n" \
259 "\t-f N\t\tPrint only these fields\n" \
260 "\t-n\t\tIgnored"
261#define cut_example_usage \
262 "$ echo "Hello world" | cut -f 1 -d ' '\n" \
263 "Hello\n" \
264 "$ echo "Hello world" | cut -f 2 -d ' '\n" \
265 "world\n"
266
267#ifdef CONFIG_FEATURE_DATE_ISOFMT
268#define USAGE_DATE_ISOFMT(a) a
269#else
270#define USAGE_DATE_ISOFMT(a)
271#endif
272
273#define date_trivial_usage \
274 "[OPTION]... [MMDDhhmm[[CC]YY][.ss]] [+FORMAT]"
275#define date_full_usage \
276 "Displays the current time in the given FORMAT, or sets the system date.\n" \
277 "\nOptions:\n" \
278 "\t-R\t\tOutputs RFC-822 compliant date string\n" \
279 "\t-d STRING\tDisplays time described by STRING, not `now'\n" \
280 USAGE_DATE_ISOFMT("\t-I[TIMESPEC]\tOutputs an ISO-8601 compliant date/time string.\n" \
281 "\t\t\tTIMESPEC=`date' (or missing) for date only,\n" \
282 "\t\t\t`hours', `minutes', or `seconds' for date and,\n" \
283 "\t\t\ttime to the indicated precision.\n") \
284 "\t-s\t\tSets time described by STRING\n" \
285 "\t-r FILE\t\tDisplays the last modification time of FILE\n" \
286 "\t-u\t\tPrints or sets Coordinated Universal Time"
287#define date_example_usage \
288 "$ date\n" \
289 "Wed Apr 12 18:52:41 MDT 2000\n"
290
291#define dc_trivial_usage \
292 "expression ..."
293#define dc_full_usage \
294 "This is a Tiny RPN calculator that understands the\n" \
295 "following operations: +, add, -, sub, *, mul, /, div, %, mod, "\
296 "**, exp, and, or, not, eor.\n" \
297 "For example: 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16.\n" \
298 "\nOptions:\n" \
299 "p - Prints the value on the top of the stack, without altering the stack.\n" \
300 "f - Prints the entire contents of the stack without altering anything.\n" \
301 "o - Pops the value off the top of the stack and uses it to set the output radix.\n" \
302 " Only 10 and 16 are supported."
303#define dc_example_usage \
304 "$ dc 2 2 + p\n" \
305 "4\n" \
306 "$ dc 8 8 \\* 2 2 + / p\n" \
307 "16\n" \
308 "$ dc 0 1 and p\n" \
309 "0\n" \
310 "$ dc 0 1 or p\n" \
311 "1\n" \
312 "$ echo 72 9 div 8 mul p | dc\n" \
313 "64\n"
314
315#define dd_trivial_usage \
316 "[if=FILE] [of=FILE] [bs=N] [count=N] [skip=N]\n" \
317 "\t [seek=N] [conv=notrunc|noerror|sync]"
318#define dd_full_usage \
319 "Copy a file, converting and formatting according to options\n\n" \
320 "\tif=FILE\t\tread from FILE instead of stdin\n" \
321 "\tof=FILE\t\twrite to FILE instead of stdout\n" \
322 "\tbs=N\t\tread and write N bytes at a time\n" \
323 "\tcount=N\t\tcopy only N input blocks\n" \
324 "\tskip=N\t\tskip N input blocks\n" \
325 "\tseek=N\t\tskip N output blocks\n" \
326 "\tconv=notrunc\tdon't truncate output file\n" \
327 "\tconv=noerror\tcontinue after read errors\n" \
328 "\tconv=sync\tpad blocks with zeros\n" \
329 "\n" \
330 "Numbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024),\n" \
331 "MD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824)."
332#define dd_example_usage \
333 "$ dd if=/dev/zero of=/dev/ram1 bs=1M count=4\n" \
334 "4+0 records in\n" \
335 "4+0 records out\n"
336
337#define deallocvt_trivial_usage \
338 "[N]"
339#define deallocvt_full_usage \
340 "Deallocate unused virtual terminal /dev/ttyN"
341
342#define delgroup_trivial_usage \
343 "GROUP"
344#define delgroup_full_usage \
345 "Deletes group GROUP from the system"
346
347#define deluser_trivial_usage \
348 "USER"
349#define deluser_full_usage \
350 "Deletes user USER from the system"
351
352#ifdef CONFIG_DEVFSD_FG_NP
353 #define USAGE_DEVFSD_FG_NP(a) a
354#else
355 #define USAGE_DEVFSD_FG_NP(a)
356#endif
357
358#define devfsd_trivial_usage \
359 "mntpnt [-v]"\
360 USAGE_DEVFSD_FG_NP("[-fg][-np]" )
361#define devfsd_full_usage \
362 "Optional daemon for managing devfs permissions and old device name symlinks.\n" \
363 "\nOptions:\n" \
364 "\tmntpnt\tThe mount point where devfs is mounted.\n\n" \
365 "\t-v\tPrint the protocol version numbers for devfsd\n" \
366 "\t\tand the kernel-side protocol version and exits." \
367 USAGE_DEVFSD_FG_NP( "\n\n\t-fg\tRun the daemon in the foreground.\n\n" \
368 "\t-np\tExit after parsing the configuration file\n" \
369 "\t\tand processing synthetic REGISTER events.\n" \
370 "\t\tDo not poll for events.")
371
372#ifdef CONFIG_FEATURE_HUMAN_READABLE
373 #define USAGE_HUMAN_READABLE(a) a
374 #define USAGE_NOT_HUMAN_READABLE(a)
375#else
376 #define USAGE_HUMAN_READABLE(a)
377 #define USAGE_NOT_HUMAN_READABLE(a) a
378#endif
379#define df_trivial_usage \
380 "[-" USAGE_HUMAN_READABLE("hm") USAGE_NOT_HUMAN_READABLE("") "k] [FILESYSTEM ...]"
381#define df_full_usage \
382 "Print the filesystem space used and space available.\n\n" \
383 "Options:\n" \
384 USAGE_HUMAN_READABLE( \
385 "\n\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \
386 "\t-m\tprint sizes in megabytes\n" \
387 "\t-k\tprint sizes in kilobytes(default)") USAGE_NOT_HUMAN_READABLE( \
388 "\n\t-k\tprint sizes in kilobytes(compatibility)")
389#define df_example_usage \
390 "$ df\n" \
391 "Filesystem 1k-blocks Used Available Use% Mounted on\n" \
392 "/dev/sda3 8690864 8553540 137324 98% /\n" \
393 "/dev/sda1 64216 36364 27852 57% /boot\n" \
394 "$ df /dev/sda3\n" \
395 "Filesystem 1k-blocks Used Available Use% Mounted on\n" \
396 "/dev/sda3 8690864 8553540 137324 98% /\n"
397
398#define dirname_trivial_usage \
399 "FILENAME"
400#define dirname_full_usage \
401 "Strips non-directory suffix from FILENAME"
402#define dirname_example_usage \
403 "$ dirname /tmp/foo\n" \
404 "/tmp\n" \
405 "$ dirname /tmp/foo/\n" \
406 "/tmp\n"
407
408#define dmesg_trivial_usage \
409 "[-c] [-n LEVEL] [-s SIZE]"
410#define dmesg_full_usage \
411 "Prints or controls the kernel ring buffer\n\n" \
412 "Options:\n" \
413 "\t-c\t\tClears the ring buffer's contents after printing\n" \
414 "\t-n LEVEL\tSets console logging level\n" \
415 "\t-s SIZE\t\tUse a buffer of size SIZE"
416
417#define dos2unix_trivial_usage \
418 "[option] [FILE]"
419#define dos2unix_full_usage \
420 "Converts FILE from dos format to unix format. When no option\n" \
421 "is given, the input is converted to the opposite output format.\n" \
422 "When no file is given, uses stdin for input and stdout for output.\n\n" \
423 "Options:\n" \
424 "\t-u\toutput will be in UNIX format\n" \
425 "\t-d\toutput will be in DOS format"
426
427#define dpkg_trivial_usage \
428 "[-ilCPru] [-F option] package_name"
429#define dpkg_full_usage \
430 "dpkg is a utility to install, remove and manage Debian packages.\n\n" \
431 "Options:\n" \
432 "\t-i\t\tInstall the package\n" \
433 "\t-l\t\tList of installed packages\n" \
434 "\t-C\t\tConfigure an unpackaged package\n" \
435 "\t-F depends\tIgnore depency problems\n" \
436 "\t-P\t\tPurge all files of a package\n" \
437 "\t-r\t\tRemove all but the configuration files for a package\n" \
438 "\t-u\t\tUnpack a package, but don't configure it"
439
440#define dpkg_deb_trivial_usage \
441 "[-cefxX] FILE [argument]"
442#define dpkg_deb_full_usage \
443 "Perform actions on Debian packages (.debs)\n\n" \
444 "Options:\n" \
445 "\t-c\tList contents of filesystem tree\n" \
446 "\t-e\tExtract control files to [argument] directory\n" \
447 "\t-f\tDisplay control field name starting with [argument]\n" \
448 "\t-x\tExtract packages filesystem tree to directory\n" \
449 "\t-X\tVerbose extract"
450#define dpkg_deb_example_usage \
451 "$ dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp\n"
452
453#ifdef CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K
454#define USAGE_DU_DEFALT_BLOCKSIZE_1k(a) a
455#define USAGE_NOT_DU_DEFALT_BLOCKSIZE_1k(a)
456#else
457#define USAGE_DU_DEFALT_BLOCKSIZE_1k(a)
458#define USAGE_NOT_DU_DEFALT_BLOCKSIZE_1k(a) a
459#endif
460
461#define du_trivial_usage \
462 "[-aHLdclsx" USAGE_HUMAN_READABLE("hm") "k] [FILE]..."
463#define du_full_usage \
464 "Summarizes disk space used for each FILE and/or directory.\n" \
465 "Disk space is printed in units of " \
466 USAGE_DU_DEFALT_BLOCKSIZE_1k("1024") USAGE_NOT_DU_DEFALT_BLOCKSIZE_1k("512") \
467 " bytes.\n\n" \
468 "Options:\n" \
469 "\t-a\tshow sizes of files in addition to directories\n" \
470 "\t-H\tfollow symbolic links that are FILE command line args\n" \
471 "\t-L\tfollow all symbolic links encountered\n" \
472 "\t-d N\tlimit output to directories (and files with -a) of depth < N\n" \
473 "\t-c\toutput a grand total\n" \
474 "\t-l\tcount sizes many times if hard linked\n" \
475 "\t-s\tdisplay only a total for each argument\n" \
476 "\t-x\tskip directories on different filesystems\n" \
477 USAGE_HUMAN_READABLE( \
478 "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \
479 "\t-m\tprint sizes in megabytes\n" ) \
480 "\t-k\tprint sizes in kilobytes" USAGE_DU_DEFALT_BLOCKSIZE_1k("(default)")
481#define du_example_usage \
482 "$ du\n" \
483 "16 ./CVS\n" \
484 "12 ./kernel-patches/CVS\n" \
485 "80 ./kernel-patches\n" \
486 "12 ./tests/CVS\n" \
487 "36 ./tests\n" \
488 "12 ./scripts/CVS\n" \
489 "16 ./scripts\n" \
490 "12 ./docs/CVS\n" \
491 "104 ./docs\n" \
492 "2417 .\n"
493
494#define dumpkmap_trivial_usage \
495 "> keymap"
496#define dumpkmap_full_usage \
497 "Prints out a binary keyboard translation table to standard output."
498#define dumpkmap_example_usage \
499 "$ dumpkmap > keymap\n"
500
501#define dumpleases_trivial_usage \
502 "[-r|-a] [-f LEASEFILE]"
503#define dumpleases_full_usage \
504 "Displays the DHCP leases granted by udhcpd.\n\n" \
505 "Options:\n" \
506 "\t-f,\t--file=FILENAME\tLeases file to load\n" \
507 "\t-r,\t--remaining\tInterpret lease times as time remaing\n" \
508 "\t-a,\t--absolute\tInterpret lease times as expire time"
509
510#ifdef CONFIG_FEATURE_FANCY_ECHO
511 #define USAGE_FANCY_ECHO(a) a
512#else
513 #define USAGE_FANCY_ECHO(a)
514#endif
515
516#define echo_trivial_usage \
517 USAGE_FANCY_ECHO("[-neE] ") "[ARG ...]"
518#define echo_full_usage \
519 "Prints the specified ARGs to stdout\n\n" \
520 USAGE_FANCY_ECHO("Options:\n" \
521 "\t-n\tsuppress trailing newline\n" \
522 "\t-e\tinterpret backslash-escaped characters (i.e., \\t=tab)\n" \
523 "\t-E\tdisable interpretation of backslash-escaped characters")
524#define echo_example_usage \
525 "$ echo "Erik is cool"\n" \
526 "Erik is cool\n" \
527 USAGE_FANCY_ECHO("$ echo -e "Erik\\nis\\ncool"\n" \
528 "Erik\n" \
529 "is\n" \
530 "cool\n" \
531 "$ echo "Erik\\nis\\ncool"\n" \
532 "Erik\\nis\\ncool\n")
533
534#define env_trivial_usage \
535 "[-iu] [-] [name=value]... [command]"
536#define env_full_usage \
537 "Prints the current environment or runs a program after setting\n" \
538 "up the specified environment.\n\n" \
539 "Options:\n" \
540 "\t-, -i\tstart with an empty environment\n" \
541 "\t-u\tremove variable from the environment"
542
543#define expr_trivial_usage \
544 "EXPRESSION"
545#define expr_full_usage \
546 "Prints the value of EXPRESSION to standard output.\n\n" \
547 "EXPRESSION may be:\n" \
548 "\tARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n" \
549 "\tARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n" \
550 "\tARG1 < ARG2 ARG1 is less than ARG2\n" \
551 "\tARG1 <= ARG2 ARG1 is less than or equal to ARG2\n" \
552 "\tARG1 = ARG2 ARG1 is equal to ARG2\n" \
553 "\tARG1 != ARG2 ARG1 is unequal to ARG2\n" \
554 "\tARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n" \
555 "\tARG1 > ARG2 ARG1 is greater than ARG2\n" \
556 "\tARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n" \
557 "\tARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n" \
558 "\tARG1 * ARG2 arithmetic product of ARG1 and ARG2\n" \
559 "\tARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n" \
560 "\tARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n" \
561 "\tSTRING : REGEXP anchored pattern match of REGEXP in STRING\n" \
562 "\tmatch STRING REGEXP same as STRING : REGEXP\n" \
563 "\tsubstr STRING POS LENGTH substring of STRING, POS counted from 1\n" \
564 "\tindex STRING CHARS index in STRING where any CHARS is found,\n" \
565 "\t or 0\n" \
566 "\tlength STRING length of STRING\n" \
567 "\tquote TOKEN interpret TOKEN as a string, even if\n" \
568 "\t it is a keyword like `match' or an\n" \
569 "\t operator like `/'\n" \
570 "\t( EXPRESSION ) value of EXPRESSION\n\n" \
571 "Beware that many operators need to be escaped or quoted for shells.\n" \
572 "Comparisons are arithmetic if both ARGs are numbers, else\n" \
573 "lexicographical. Pattern matches return the string matched between \n" \
574 "\\( and \\) or null; if \\( and \\) are not used, they return the number \n" \
575 "of characters matched or 0."
576
577#define false_trivial_usage \
578 ""
579#define false_full_usage \
580 "Return an exit code of FALSE (1)."
581#define false_example_usage \
582 "$ false\n" \
583 "$ echo $?\n" \
584 "1\n"
585
586#define fbset_trivial_usage \
587 "[options] [mode]"
588#define fbset_full_usage \
589 "Show and modify frame buffer settings"
590#define fbset_example_usage \
591 "$ fbset\n" \
592 "mode "1024x768-76"\n" \
593 "\t# D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz\n" \
594 "\tgeometry 1024 768 1024 768 16\n" \
595 "\ttimings 12714 128 32 16 4 128 4\n" \
596 "\taccel false\n" \
597 "\trgba 5/11,6/5,5/0,0/0\n" \
598 "endmode\n"
599
600#define fdflush_trivial_usage \
601 "DEVICE"
602#define fdflush_full_usage \
603 "Forces floppy disk drive to detect disk change"
604
605#define fdformat_trivial_usage \
606 "[-n] DEVICE"
607#define fdformat_full_usage \
608 "Low-level formats a floppy disk\n\n" \
609 "Options:\n" \
610 "\t-n\tDon't verify after format"
611
612#define fdisk_trivial_usage \
613 "[-luv] [-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISK"
614#define fdisk_full_usage \
615 "Change partition table\n" \
616 "Options:\n" \
617 "\t-l List partition table(s)\n" \
618 "\t-u Give Start and End in sector (instead of cylinder) units\n" \
619 "\t-s PARTITION Give partition size(s) in blocks\n" \
620 "\t-b 2048: (for certain MO disks) use 2048-byte sectors\n" \
621 "\t-C CYLINDERS Set the number of cylinders\n" \
622 "\t-H HEADS Set the number of heads\n" \
623 "\t-S SECTORS Set the number of sectors\n" \
624 "\t-v Give fdisk version"
625
626#ifdef CONFIG_FEATURE_FIND_TYPE
627 #define USAGE_FIND_TYPE(a) a
628#else
629 #define USAGE_FIND_TYPE(a)
630#endif
631#ifdef CONFIG_FEATURE_FIND_PERM
632 #define USAGE_FIND_PERM(a) a
633#else
634 #define USAGE_FIND_PERM(a)
635#endif
636#ifdef CONFIG_FEATURE_FIND_MTIME
637 #define USAGE_FIND_MTIME(a) a
638#else
639 #define USAGE_FIND_MTIME(a)
640#endif
641#ifdef CONFIG_FEATURE_FIND_NEWER
642 #define USAGE_FIND_NEWER(a) a
643#else
644 #define USAGE_FIND_NEWER(a)
645#endif
646#ifdef CONFIG_FEATURE_FIND_INUM
647 #define USAGE_FIND_INUM(a) a
648#else
649 #define USAGE_FIND_INUM(a)
650#endif
651
652#define find_trivial_usage \
653 "[PATH...] [EXPRESSION]"
654#define find_full_usage \
655 "Search for files in a directory hierarchy. The default PATH is\n" \
656 "the current directory; default EXPRESSION is '-print'\n" \
657 "\nEXPRESSION may consist of:\n" \
658 "\t-follow\t\tDereference symbolic links.\n" \
659 "\t-name PATTERN\tFile name (leading directories removed) matches PATTERN.\n" \
660 "\t-print\t\tPrint (default and assumed).\n" \
661 USAGE_FIND_TYPE( \
662 "\n\t-type X\t\tFiletype matches X (where X is one of: f,d,l,b,c,...)" \
663) USAGE_FIND_PERM( \
664 "\n\t-perm PERMS\tPermissions match any of (+NNN); all of (-NNN);\n\t\t\tor exactly (NNN)" \
665) USAGE_FIND_MTIME( \
666 "\n\t-mtime TIME\tModified time is greater than (+N); less than (-N);\n\t\t\tor exactly (N) days" \
667) USAGE_FIND_NEWER( \
668 "\n\t-newer FILE\tModified time is more recent than FILE's" \
669) USAGE_FIND_INUM( \
670 "\n\t-inum N\t\tFile has inode number N")
671#define find_example_usage \
672 "$ find / -name passwd\n" \
673 "/etc/passwd\n"
674
675#define fold_trivial_usage \
676 "[-bsw] [FILE]"
677#define fold_full_usage \
678 "Wrap input lines in each FILE (standard input by default), writing to\n" \
679 "standard output.\n\n" \
680 "Options:\n" \
681 "\t-b\tcount bytes rather than columns\n" \
682 "\t-s\tbreak at spaces\n" \
683 "\t-w\tuse WIDTH columns instead of 80"
684
685#define free_trivial_usage \
686 ""
687#define free_full_usage \
688 "Displays the amount of free and used system memory"
689#define free_example_usage \
690 "$ free\n" \
691 " total used free shared buffers\n" \
692 " Mem: 257628 248724 8904 59644 93124\n" \
693 " Swap: 128516 8404 120112\n" \
694 "Total: 386144 257128 129016\n" \
695
696#define freeramdisk_trivial_usage \
697 "DEVICE"
698#define freeramdisk_full_usage \
699 "Frees all memory used by the specified ramdisk."
700#define freeramdisk_example_usage \
701 "$ freeramdisk /dev/ram2\n"
702
703#define fsck_minix_trivial_usage \
704 "[-larvsmf] /dev/name"
705#define fsck_minix_full_usage \
706 "Performs a consistency check for MINIX filesystems.\n\n" \
707 "Options:\n" \
708 "\t-l\tLists all filenames\n" \
709 "\t-r\tPerform interactive repairs\n" \
710 "\t-a\tPerform automatic repairs\n" \
711 "\t-v\tverbose\n" \
712 "\t-s\tOutputs super-block information\n" \
713 "\t-m\tActivates MINIX-like \"mode not cleared\" warnings\n" \
714 "\t-f\tForce file system check."
715
716#define ftpget_trivial_usage \
717 "[options] remote-host local-file remote-file"
718#define ftpget_full_usage \
719 "Retrieve a remote file via FTP.\n\n" \
720 "Options:\n" \
721 "\t-c, --continue Continue a previous transfer\n" \
722 "\t-v, --verbose Verbose\n" \
723 "\t-u, --username Username to be used\n" \
724 "\t-p, --password Password to be used\n" \
725 "\t-P, --port Port number to be used"
726
727#define ftpput_trivial_usage \
728 "[options] remote-host remote-file local-file"
729#define ftpput_full_usage \
730 "Store a local file on a remote machine via FTP.\n\n" \
731 "Options:\n" \
732 "\t-v, --verbose Verbose\n" \
733 "\t-u, --username Username to be used\n" \
734 "\t-p, --password Password to be used\n" \
735 "\t-P, --port Port number to be used"
736
737#define getopt_trivial_usage \
738 "[OPTIONS]..."
739#define getopt_full_usage \
740 "Parse command options\n" \
741 "\t-a, --alternative Allow long options starting with single -\n" \
742 "\t-l, --longoptions=longopts Long options to be recognized\n" \
743 "\t-n, --name=progname The name under which errors are reported\n" \
744 "\t-o, --options=optstring Short options to be recognized\n" \
745 "\t-q, --quiet Disable error reporting by getopt(3)\n" \
746 "\t-Q, --quiet-output No normal output\n" \
747 "\t-s, --shell=shell Set shell quoting conventions\n" \
748 "\t-T, --test Test for getopt(1) version\n" \
749 "\t-u, --unquoted Do not quote the output"
750#define getopt_example_usage \
751 "$ cat getopt.test\n" \
752 "#!/bin/sh\n" \
753 "GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \\\n" \
754 " -n 'example.busybox' -- "$@"`\n" \
755 "if [ $? != 0 ] ; then exit 1 ; fi\n" \
756 "eval set -- "$GETOPT"\n" \
757 "while true ; do\n" \
758 " case $1 in\n" \
759 " -a|--a-long) echo \"Option a\" ; shift ;;\n" \
760 " -b|--b-long) echo \"Option b, argument `$2'\" ; shift 2 ;;\n" \
761 " -c|--c-long)\n" \
762 " case "$2" in\n" \
763 " \"\") echo \"Option c, no argument\"; shift 2 ;;\n" \
764 " *) echo \"Option c, argument `$2'\" ; shift 2 ;;\n" \
765 " esac ;;\n" \
766 " --) shift ; break ;;\n" \
767 " *) echo \"Internal error!\" ; exit 1 ;;\n" \
768 " esac\n" \
769 "done\n"
770
771#define getty_trivial_usage \
772 "[OPTIONS]... baud_rate,... line [termtype]"
773#define getty_full_usage \
774 "Opens a tty, prompts for a login name, then invokes /bin/login\n\n" \
775 "Options:\n" \
776 "\t-h\t\tEnable hardware (RTS/CTS) flow control.\n" \
777 "\t-i\t\tDo not display /etc/issue before running login.\n" \
778 "\t-L\t\tLocal line, so do not do carrier detect.\n" \
779 "\t-m\t\tGet baud rate from modem's CONNECT status message.\n" \
780 "\t-w\t\tWait for a CR or LF before sending /etc/issue.\n" \
781 "\t-n\t\tDo not prompt the user for a login name.\n" \
782 "\t-f issue_file\tDisplay issue_file instead of /etc/issue.\n" \
783 "\t-l login_app\tInvoke login_app instead of /bin/login.\n" \
784 "\t-t timeout\tTerminate after timeout if no username is read.\n" \
785 "\t-I initstring\tSets the init string to send before anything else.\n" \
786 "\t-H login_host\tLog login_host into the utmp file as the hostname."
787
788
789#define grep_trivial_usage \
790 "[-ihHnqvs] PATTERN [FILEs...]"
791#define grep_full_usage \
792 "Search for PATTERN in each FILE or standard input.\n\n" \
793 "Options:\n" \
794 "\t-H\tprefix output lines with filename where match was found\n" \
795 "\t-h\tsuppress the prefixing filename on output\n" \
796 "\t-i\tignore case distinctions\n" \
797 "\t-l\tlist names of files that match\n" \
798 "\t-n\tprint line number with output lines\n" \
799 "\t-q\tbe quiet. Returns 0 if result was found, 1 otherwise\n" \
800 "\t-v\tselect non-matching lines\n" \
801 "\t-s\tsuppress file open/read error messages"
802#define grep_example_usage \
803 "$ grep root /etc/passwd\n" \
804 "root:x:0:0:root:/root:/bin/bash\n" \
805 "$ grep ^[rR]oo. /etc/passwd\n" \
806 "root:x:0:0:root:/root:/bin/bash\n"
807
808#define gunzip_trivial_usage \
809 "[OPTION]... FILE"
810#define gunzip_full_usage \
811 "Uncompress FILE (or standard input if FILE is '-').\n\n" \
812 "Options:\n" \
813 "\t-c\tWrite output to standard output\n" \
814 "\t-f\tForce read when source is a terminal\n" \
815 "\t-t\tTest compressed file integrity"
816#define gunzip_example_usage \
817 "$ ls -la /tmp/BusyBox*\n" \
818 "-rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz\n" \
819 "$ gunzip /tmp/BusyBox-0.43.tar.gz\n" \
820 "$ ls -la /tmp/BusyBox*\n" \
821 "-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar\n"
822
823#define gzip_trivial_usage \
824 "[OPTION]... [FILE]..."
825#define gzip_full_usage \
826 "Compress FILE(s) with maximum compression.\n" \
827 "When FILE is '-' or unspecified, reads standard input. Implies -c.\n\n" \
828 "Options:\n" \
829 "\t-c\tWrite output to standard output instead of FILE.gz\n" \
830 "\t-d\tDecompress\n" \
831 "\t-f\tForce write when destination is a terminal"
832#define gzip_example_usage \
833 "$ ls -la /tmp/busybox*\n" \
834 "-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/busybox.tar\n" \
835 "$ gzip /tmp/busybox.tar\n" \
836 "$ ls -la /tmp/busybox*\n" \
837 "-rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
838
839#define halt_trivial_usage \
840 "[-d<delay>]"
841#define halt_full_usage \
842 "Halt the system.\n" \
843 "Options:\n" \
844 "\t-d\t\tdelay interval for halting."
845
846#ifdef CONFIG_FEATURE_HDPARM_GET_IDENTITY
847#define USAGE_HDPARM_IDENT(a) a
848#else
849#define USAGE_HDPARM_IDENT(a)
850#endif
851
852#ifdef CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF
853#define USAGE_SCAN_HWIF(a) a
854#else
855#define USAGE_SCAN_HWIF(a)
856#endif
857
858#ifdef CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
859#define USAGE_UNREGISTER_HWIF(a) a
860#else
861#define USAGE_UNREGISTER_HWIF(a)
862#endif
863
864#ifdef CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET
865#define USAGE_DRIVE_RESET(a) a
866#else
867#define USAGE_DRIVE_RESET(a)
868#endif
869
870#ifdef CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
871#define USAGE_TRISTATE_HWIF(a) a
872#else
873#define USAGE_TRISTATE_HWIF(a)
874#endif
875
876#ifdef CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
877#define USAGE_GETSET_DMA(a) a
878#else
879#define USAGE_GETSET_DMA(a)
880#endif
881
882#define hdparm_trivial_usage \
883 "[options] [device] .."
884#define hdparm_full_usage \
885 "Options:" \
886 "\t-a get/set fs readahead\n" \
887 "\t-A set drive read-lookahead flag (0/1)\n" \
888 "\t-b get/set bus state (0 == off, 1 == on, 2 == tristate)\n" \
889 "\t-B set Advanced Power Management setting (1-255)\n" \
890 "\t-c get/set IDE 32-bit IO setting\n" \
891 "\t-C check IDE power mode status\n" \
892 USAGE_GETSET_DMA("\t-d get/set using_dma flag\n") \
893 "\t-D enable/disable drive defect-mgmt\n" \
894 "\t-f flush buffer cache for device on exit\n" \
895 "\t-g display drive geometry\n" \
896 "\t-h display terse usage information\n" \
897 "\t-i display drive identification\n" \
898 USAGE_HDPARM_IDENT("\t-I detailed/current information directly from drive\n") \
899 USAGE_HDPARM_IDENT("\t-Istdin similar to -I, but wants /proc/ide/" "*" "/hd?/identify as input\n") \
900 "\t-k get/set keep_settings_over_reset flag (0/1)\n" \
901 "\t-K set drive keep_features_over_reset flag (0/1)\n" \
902 "\t-L set drive doorlock (0/1) (removable harddisks only)\n" \
903 "\t-m get/set multiple sector count\n" \
904 "\t-n get/set ignore-write-errors flag (0/1)\n" \
905 "\t-p set PIO mode on IDE interface chipset (0,1,2,3,4,...)\n" \
906 "\t-P set drive prefetch count\n" \
907 "\t-q change next setting quietly\n" \
908 "\t-Q get/set DMA tagged-queuing depth (if supported)\n" \
909 "\t-r get/set readonly flag (DANGEROUS to set)\n" \
910 USAGE_SCAN_HWIF("\t-R register an IDE interface (DANGEROUS)\n") \
911 "\t-S set standby (spindown) timeout\n" \
912 "\t-t perform device read timings\n" \
913 "\t-T perform cache read timings\n" \
914 "\t-u get/set unmaskirq flag (0/1)\n" \
915 USAGE_UNREGISTER_HWIF("\t-U un-register an IDE interface (DANGEROUS)\n") \
916 "\t-v defaults; same as -mcudkrag for IDE drives\n" \
917 "\t-V display program version and exit immediately\n" \
918 USAGE_DRIVE_RESET("\t-w perform device reset (DANGEROUS)\n") \
919 "\t-W set drive write-caching flag (0/1) (DANGEROUS)\n" \
920 USAGE_TRISTATE_HWIF("\t-x tristate device for hotswap (0/1) (DANGEROUS)\n") \
921 "\t-X set IDE xfer mode (DANGEROUS)\n" \
922 "\t-y put IDE drive in standby mode\n" \
923 "\t-Y put IDE drive to sleep\n" \
924 "\t-Z disable Seagate auto-powersaving mode\n" \
925 "\t-z re-read partition table"
926
927#ifdef CONFIG_FEATURE_FANCY_HEAD
928#define USAGE_FANCY_HEAD(a) a
929#else
930#define USAGE_FANCY_HEAD(a)
931#endif
932
933#define head_trivial_usage \
934 "[OPTION]... [FILE]..."
935#define head_full_usage \
936 "Print first 10 lines of each FILE to standard output.\n" \
937 "With more than one FILE, precede each with a header giving the\n" \
938 "file name. With no FILE, or when FILE is -, read standard input.\n\n" \
939 "Options:\n" \
940 "\t-n NUM\t\tPrint first NUM lines instead of first 10" \
941 USAGE_FANCY_HEAD( \
942 "\n\t-c NUM\t\toutput the first NUM bytes\n" \
943 "\t-q\t\tnever output headers giving file names\n" \
944 "\t-v\t\talways output headers giving file names" )
945#define head_example_usage \
946 "$ head -n 2 /etc/passwd\n" \
947 "root:x:0:0:root:/root:/bin/bash\n" \
948 "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n"
949
950#define hexdump_trivial_usage \
951 "[-[bcdefnosvx]] [OPTION] FILE"
952#define hexdump_full_usage \
953 "The hexdump utility is a filter which displays the specified files,\n" \
954 "or the standard input, if no files are specified, in a user specified\n"\
955 "format\n" \
956 "\t-b\t\tOne-byte octal display\n" \
957 "\t-c\t\tOne-byte character display\n" \
958 "\t-d\t\tTwo-byte decimal display\n" \
959 "\t-e FORMAT STRING\n" \
960 "\t-f FORMAT FILE\n" \
961 "\t-n LENGTH\tInterpret only length bytes of input\n" \
962 "\t-o\t\tTwo-byte octal display\n" \
963 "\t-s OFFSET\tSkip offset byte\n" \
964 "\t-v\t\tdisplay all input data\n" \
965 "\t-x\t\tTwo-byte hexadecimal display"
966
967#define hostid_trivial_usage \
968 ""
969#define hostid_full_usage \
970 "Print out a unique 32-bit identifier for the machine."
971
972#define hostname_trivial_usage \
973 "[OPTION] {hostname | -F FILE}"
974#define hostname_full_usage \
975 "Get or set the hostname or DNS domain name. If a hostname is given\n" \
976 "(or FILE with the -F parameter), the host name will be set.\n\n" \
977 "Options:\n" \
978 "\t-s\tShort\n" \
979 "\t-i\tAddresses for the hostname\n" \
980 "\t-d\tDNS domain name\n" \
981 "\t-f\tFully qualified domain name\n" \
982 "\t-F FILE\tUse the contents of FILE to specify the hostname"
983#define hostname_example_usage \
984 "$ hostname\n" \
985 "sage\n"
986
987#ifdef CONFIG_FEATURE_HTTPD_BASIC_AUTH
988 #define USAGE_HTTPD_BASIC_AUTH(a) a
989 #ifdef CONFIG_FEATURE_HTTPD_AUTH_MD5
990 #define USAGE_HTTPD_AUTH_MD5(a) a
991 #else
992 #define USAGE_HTTPD_AUTH_MD5(a)
993 #endif
994#else
995 #define USAGE_HTTPD_BASIC_AUTH(a)
996 #define USAGE_HTTPD_AUTH_MD5(a)
997#endif
998#ifdef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
999 #define USAGE_HTTPD_STANDALONE(a)
1000 #define USAGE_HTTPD_SETUID(a)
1001#else
1002 #define USAGE_HTTPD_STANDALONE(a) a
1003 #ifdef CONFIG_FEATURE_HTTPD_SETUID
1004 #define USAGE_HTTPD_SETUID(a) a
1005 #else
1006 #define USAGE_HTTPD_SETUID(a)
1007 #endif
1008#endif
1009#define httpd_trivial_usage \
1010 "[-c <conf file>]" \
1011 USAGE_HTTPD_STANDALONE(" [-p <port>]") \
1012 USAGE_HTTPD_SETUID(" [-u user]") \
1013 USAGE_HTTPD_BASIC_AUTH(" [-r <realm>]") \
1014 USAGE_HTTPD_AUTH_MD5(" [-m pass]") \
1015 " [-h home]" \
1016 " [-d/-e <string>]"
1017#define httpd_full_usage \
1018 "Listens for incoming http server requests.\n\n"\
1019 "Options:\n" \
1020 "\t-c FILE\t\tSpecifies configuration file. (default httpd.conf)\n" \
1021 USAGE_HTTPD_STANDALONE("\t-p PORT\tServer port (default 80)\n") \
1022 USAGE_HTTPD_SETUID("\t-u USER\tSet uid to USER after listening privileges port\n") \
1023 USAGE_HTTPD_BASIC_AUTH("\t-r REALM\tAuthentication Realm for Basic Authentication\n") \
1024 USAGE_HTTPD_AUTH_MD5("\t-m PASS\t\tCrypt PASS with md5 algorithm\n") \
1025 "\t-h HOME \tSpecifies http HOME directory (default ./)\n" \
1026 "\t-e STRING\tHtml encode STRING\n" \
1027 "\t-d STRING\tURL decode STRING"
1028
1029#define hwclock_trivial_usage \
1030 "[-r|--show] [-s|--hctosys] [-w|--systohc] [-l|--localtime] [-u|--utc]"
1031#define hwclock_full_usage \
1032 "Query and set the hardware clock (RTC)\n\n" \
1033 "Options:\n" \
1034 "\t-r\tread hardware clock and print result\n" \
1035 "\t-s\tset the system time from the hardware clock\n" \
1036 "\t-w\tset the hardware clock to the current system time\n" \
1037 "\t-u\tthe hardware clock is kept in coordinated universal time\n" \
1038 "\t-l\tthe hardware clock is kept in local time"
1039
1040#ifdef CONFIG_SELINUX
1041 #define USAGE_SELINUX(a) a
1042#else
1043 #define USAGE_SELINUX(a)
1044#endif
1045
1046#define id_trivial_usage \
1047 "[OPTIONS]... [USERNAME]"
1048#define id_full_usage \
1049 "Print information for USERNAME or the current user\n\n" \
1050 "Options:\n" \
1051 USAGE_SELINUX("\t-c\tprints only the security context\n") \
1052 "\t-g\tprints only the group ID\n" \
1053 "\t-u\tprints only the user ID\n" \
1054 "\t-n\tprint a name instead of a number\n" \
1055 "\t-r\tprints the real user ID instead of the effective ID"
1056#define id_example_usage \
1057 "$ id\n" \
1058 "uid=1000(andersen) gid=1000(andersen)\n"
1059
1060#ifdef CONFIG_FEATURE_IFCONFIG_SLIP
1061 #define USAGE_SIOCSKEEPALIVE(a) a
1062#else
1063 #define USAGE_SIOCSKEEPALIVE(a)
1064#endif
1065#ifdef CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
1066 #define USAGE_IFCONFIG_MII(a) a
1067#else
1068 #define USAGE_IFCONFIG_MII(a)
1069#endif
1070#ifdef CONFIG_FEATURE_IFCONFIG_HW
1071 #define USAGE_IFCONFIG_HW(a) a
1072#else
1073 #define USAGE_IFCONFIG_HW(a)
1074#endif
1075#ifdef CONFIG_FEATURE_IFCONFIG_STATUS
1076 #define USAGE_IFCONFIG_OPT_A(a) a
1077#else
1078 #define USAGE_IFCONFIG_OPT_A(a)
1079#endif
1080#ifdef CONFIG_FEATURE_IPV6
1081 #define USAGE_IPV6(a) a
1082#else
1083 #define USAGE_IPV6(a)
1084#endif
1085
1086#define ifconfig_trivial_usage \
1087 USAGE_IFCONFIG_OPT_A("[-a]") " <interface> [<address>]"
1088#define ifconfig_full_usage \
1089 "configure a network interface\n\n" \
1090 "Options:\n" \
1091 USAGE_IPV6("[add <address>[/<prefixlen>]]\n") \
1092 USAGE_IPV6("[del <address>[/<prefixlen>]]\n") \
1093 "\t[[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n" \
1094 "\t[netmask <address>] [dstaddr <address>]\n" \
1095 USAGE_SIOCSKEEPALIVE("\t[outfill <NN>] [keepalive <NN>]\n") \
1096 "\t" USAGE_IFCONFIG_HW("[hw ether <address>] ") \
1097 "[metric <NN>] [mtu <NN>]\n" \
1098 "\t[[-]trailers] [[-]arp] [[-]allmulti]\n" \
1099 "\t[multicast] [[-]promisc] [txqueuelen <NN>] [[-]dynamic]\n" \
1100 USAGE_IFCONFIG_MII("\t[mem_start <NN>] [io_addr <NN>] [irq <NN>]\n") \
1101 "\t[up|down] ..."
1102
1103#define ifup_trivial_usage \
1104 "<-ahinv> <ifaces...>"
1105#define ifup_full_usage \
1106 "ifup <options> <ifaces...>\n\n" \
1107 "Options:\n" \
1108 "\t-h\tthis help\n" \
1109 "\t-a\tde/configure all interfaces automatically\n" \
1110 "\t-i FILE\tuse FILE for interface definitions\n" \
1111 "\t-n\tprint out what would happen, but don't do it\n" \
1112 "\t\t\t(note that this option doesn't disable mappings)\n" \
1113 "\t-v\tprint out what would happen before doing it\n" \
1114 "\t-m\tdon't run any mappings\n" \
1115 "\t-f\tforce de/configuration"
1116
1117#define ifdown_trivial_usage \
1118 "<-ahinv> <ifaces...>"
1119#define ifdown_full_usage \
1120 "ifdown <options> <ifaces...>\n\n" \
1121 "Options:\n" \
1122 "\t-h\tthis help\n" \
1123 "\t-a\tde/configure all interfaces automatically\n" \
1124 "\t-i FILE\tuse FILE for interface definitions\n" \
1125 "\t-n\tprint out what would happen, but don't do it\n" \
1126 "\t\t(note that this option doesn't disable mappings)\n" \
1127 "\t-v\tprint out what would happen before doing it\n" \
1128 "\t-m\tdon't run any mappings\n" \
1129 "\t-f\tforce de/configuration"
1130
1131#define inetd_trivial_usage \
1132 "[-q len] [conf]"
1133#define inetd_full_usage \
1134 "Listens for network connections and launches programs\n\n" \
1135 "Option:\n" \
1136 "\t-q\tSets the size of the socket listen queue to\n" \
1137 "\t\tthe specified value. Default is 128."
1138
1139#define init_trivial_usage \
1140 ""
1141#define init_full_usage \
1142 "Init is the parent of all processes."
1143#define init_notes_usage \
1144"This version of init is designed to be run only by the kernel.\n" \
1145"\n" \
1146"BusyBox init doesn't support multiple runlevels. The runlevels field of\n" \
1147"the /etc/inittab file is completely ignored by BusyBox init. If you want \n" \
1148"runlevels, use sysvinit.\n" \
1149"\n" \
1150"BusyBox init works just fine without an inittab. If no inittab is found, \n" \
1151"it has the following default behavior:\n" \
1152"\n" \
1153" ::sysinit:/etc/init.d/rcS\n" \
1154" ::askfirst:/bin/sh\n" \
1155" ::ctrlaltdel:/sbin/reboot\n" \
1156" ::shutdown:/sbin/swapoff -a\n" \
1157" ::shutdown:/bin/umount -a -r\n" \
1158" ::restart:/sbin/init\n" \
1159"\n" \
1160"if it detects that /dev/console is _not_ a serial console, it will also run:\n" \
1161"\n" \
1162" tty2::askfirst:/bin/sh\n" \
1163" tty3::askfirst:/bin/sh\n" \
1164" tty4::askfirst:/bin/sh\n" \
1165"\n" \
1166"If you choose to use an /etc/inittab file, the inittab entry format is as follows:\n" \
1167"\n" \
1168" <id>:<runlevels>:<action>:<process>\n" \
1169"\n" \
1170" <id>:\n" \
1171"\n" \
1172" WARNING: This field has a non-traditional meaning for BusyBox init!\n" \
1173" The id field is used by BusyBox init to specify the controlling tty for\n" \
1174" the specified process to run on. The contents of this field are\n" \
1175" appended to "/dev/" and used as-is. There is no need for this field to\n" \
1176" be unique, although if it isn't you may have strange results. If this\n" \
1177" field is left blank, the controlling tty is set to the console. Also\n" \
1178" note that if BusyBox detects that a serial console is in use, then only\n" \
1179" entries whose controlling tty is either the serial console or /dev/null\n" \
1180" will be run. BusyBox init does nothing with utmp. We don't need no\n" \
1181" stinkin' utmp.\n" \
1182"\n" \
1183" <runlevels>:\n" \
1184"\n" \
1185" The runlevels field is completely ignored.\n" \
1186"\n" \
1187" <action>:\n" \
1188"\n" \
1189" Valid actions include: sysinit, respawn, askfirst, wait,\n" \
1190" once, restart, ctrlaltdel, and shutdown.\n" \
1191"\n" \
1192" The available actions can be classified into two groups: actions\n" \
1193" that are run only once, and actions that are re-run when the specified\n" \
1194" process exits.\n" \
1195"\n" \
1196" Run only-once actions:\n" \
1197"\n" \
1198" 'sysinit' is the first item run on boot. init waits until all\n" \
1199" sysinit actions are completed before continuing. Following the\n" \
1200" completion of all sysinit actions, all 'wait' actions are run.\n" \
1201" 'wait' actions, like 'sysinit' actions, cause init to wait until\n" \
1202" the specified task completes. 'once' actions are asynchronous,\n" \
1203" therefore, init does not wait for them to complete. 'restart' is\n" \
1204" the action taken to restart the init process. By default this should\n" \
1205" simply run /sbin/init, but can be a script which runs pivot_root or it\n" \
1206" can do all sorts of other interesting things. The 'ctrlaltdel' init\n" \
1207" actions are run when the system detects that someone on the system\n" \
1208" console has pressed the CTRL-ALT-DEL key combination. Typically one\n" \
1209" wants to run 'reboot' at this point to cause the system to reboot.\n" \
1210" Finally the 'shutdown' action specifies the actions to taken when\n" \
1211" init is told to reboot. Unmounting filesystems and disabling swap\n" \
1212" is a very good here\n" \
1213"\n" \
1214" Run repeatedly actions:\n" \
1215"\n" \
1216" 'respawn' actions are run after the 'once' actions. When a process\n" \
1217" started with a 'respawn' action exits, init automatically restarts\n" \
1218" it. Unlike sysvinit, BusyBox init does not stop processes from\n" \
1219" respawning out of control. The 'askfirst' actions acts just like\n" \
1220" respawn, except that before running the specified process it\n" \
1221" displays the line "Please press Enter to activate this console."\n" \
1222" and then waits for the user to press enter before starting the\n" \
1223" specified process.\n" \
1224"\n" \
1225" Unrecognized actions (like initdefault) will cause init to emit an\n" \
1226" error message, and then go along with its business. All actions are\n" \
1227" run in the order they appear in /etc/inittab.\n" \
1228"\n" \
1229" <process>:\n" \
1230"\n" \
1231" Specifies the process to be executed and its command line.\n" \
1232"\n" \
1233"Example /etc/inittab file:\n" \
1234"\n" \
1235" # This is run first except when booting in single-user mode.\n" \
1236" #\n" \
1237" ::sysinit:/etc/init.d/rcS\n" \
1238" \n" \
1239" # /bin/sh invocations on selected ttys\n" \
1240" #\n" \
1241" # Start an "askfirst" shell on the console (whatever that may be)\n" \
1242" ::askfirst:-/bin/sh\n" \
1243" # Start an "askfirst" shell on /dev/tty2-4\n" \
1244" tty2::askfirst:-/bin/sh\n" \
1245" tty3::askfirst:-/bin/sh\n" \
1246" tty4::askfirst:-/bin/sh\n" \
1247" \n" \
1248" # /sbin/getty invocations for selected ttys\n" \
1249" #\n" \
1250" tty4::respawn:/sbin/getty 38400 tty4\n" \
1251" tty5::respawn:/sbin/getty 38400 tty5\n" \
1252" \n" \
1253" \n" \
1254" # Example of how to put a getty on a serial line (for a terminal)\n" \
1255" #\n" \
1256" #::respawn:/sbin/getty -L ttyS0 9600 vt100\n" \
1257" #::respawn:/sbin/getty -L ttyS1 9600 vt100\n" \
1258" #\n" \
1259" # Example how to put a getty on a modem line.\n" \
1260" #::respawn:/sbin/getty 57600 ttyS2\n" \
1261" \n" \
1262" # Stuff to do when restarting the init process\n" \
1263" ::restart:/sbin/init\n" \
1264" \n" \
1265" # Stuff to do before rebooting\n" \
1266" ::ctrlaltdel:/sbin/reboot\n" \
1267" ::shutdown:/bin/umount -a -r\n" \
1268" ::shutdown:/sbin/swapoff -a\n"
1269
1270#ifdef CONFIG_FEATURE_INSMOD_LOAD_MAP
1271 #define USAGE_INSMOD_MAP(a) a
1272#else
1273 #define USAGE_INSMOD_MAP(a)
1274#endif
1275#define insmod_trivial_usage \
1276 "[OPTION]... MODULE [symbol=value]..."
1277#define insmod_full_usage \
1278 "Loads the specified kernel modules into the kernel.\n\n" \
1279 "Options:\n" \
1280 "\t-f\tForce module to load into the wrong kernel version.\n" \
1281 "\t-k\tMake module autoclean-able.\n" \
1282 "\t-v\tverbose output\n" \
1283 "\t-q\tquiet output\n" \
1284 "\t-L\tLock to prevent simultaneous loads of a module\n" \
1285 USAGE_INSMOD_MAP("\t-m\tOutput load map to stdout\n") \
1286 "\t-o NAME\tSet internal module name to NAME\n" \
1287 "\t-x\tdo not export externs"
1288
1289#define install_trivial_usage \
1290 "[-cgmops] [sources] <dest|directory>"
1291#define install_full_usage \
1292 "Copies files and set attributes\n\n" \
1293 "Options:\n" \
1294 "\t-c\tcopy the file, default\n" \
1295 "\t-d\tcreate directories\n" \
1296 "\t-g\tset group ownership\n" \
1297 "\t-m\tset permission modes\n" \
1298 "\t-o\tset ownership\n" \
1299 "\t-p\tpreserve date\n" \
1300 "\t-s\tstrip symbol tables"
1301
1302#define ip_trivial_usage \
1303 "[ OPTIONS ] { address | link | route | tunnel } { COMMAND | help }"
1304#define ip_full_usage \
1305 "ip [ OPTIONS ] OBJECT { COMMAND | help }\n" \
1306 "where OBJECT := { link | addr | route | tunnel }\n" \
1307 "OPTIONS := { -f[amily] { inet | inet6 | link } | -o[neline] }"
1308
1309#define ipaddr_trivial_usage \
1310 "{ {add|del} IFADDR dev STRING | {show|flush}\n" \
1311 "\t\t[ dev STRING ] [ to PREFIX ] }"
1312#define ipaddr_full_usage \
1313 "ipaddr {add|del} IFADDR dev STRING\n" \
1314 "ipaddr {show|flush} [ dev STRING ] [ scope SCOPE-ID ]\n" \
1315 "\t\t\t[ to PREFIX ] [ label PATTERN ]\n" \
1316 "\t\t\tIFADDR := PREFIX | ADDR peer PREFIX\n" \
1317 "\t\t\t[ broadcast ADDR ] [ anycast ADDR ]\n" \
1318 "\t\t\t[ label STRING ] [ scope SCOPE-ID ]\n" \
1319 "\t\t\tSCOPE-ID := [ host | link | global | NUMBER ]"
1320
1321#ifdef CONFIG_FEATURE_IPCALC_FANCY
1322 #define XUSAGE_IPCALC_FANCY(a) a
1323#else
1324 #define XUSAGE_IPCALC_FANCY(a)
1325#endif
1326#define ipcalc_trivial_usage \
1327 "[OPTION]... <ADDRESS>[[/]<NETMASK>] [NETMASK]"
1328#define ipcalc_full_usage \
1329 "Calculate IP network settings from a IP address\n\n" \
1330 "Options:\n" \
1331 "\t-b\t--broadcast\tDisplay calculated broadcast address.\n" \
1332 "\t-n\t--network\tDisplay calculated network address.\n" \
1333 "\t-m\t--netmask\tDisplay default netmask for IP." \
1334 XUSAGE_IPCALC_FANCY(\
1335 "\n\t-p\t--prefix\tDisplay the prefix for IP/NETMASK." \
1336 "\t-h\t--hostname\tDisplay first resolved host name.\n" \
1337 "\t-s\t--silent\tDon't ever display error messages.")
1338
1339#define iplink_trivial_usage \
1340 "{ set DEVICE { up | down | arp { on | off } | show [ DEVICE ] }"
1341#define iplink_full_usage \
1342 "iplink set DEVICE { up | down | arp { on | off } |\n" \
1343 "\t\t\tdynamic { on | off } |\n" \
1344 "\t\t\tmtu MTU }\n" \
1345 "\tiplink show [ DEVICE ]"
1346
1347#define iproute_trivial_usage \
1348 "{ list | flush | { add | del | change | append |\n" \
1349 "\t\treplace | monitor } ROUTE }"
1350#define iproute_full_usage \
1351 "iproute { list | flush } SELECTOR\n" \
1352 "iproute get ADDRESS [ from ADDRESS iif STRING ]\n" \
1353 "\t\t\t[ oif STRING ] [ tos TOS ]\n" \
1354 "\tiproute { add | del | change | append | replace | monitor } ROUTE\n" \
1355 "\t\t\tSELECTOR := [ root PREFIX ] [ match PREFIX ] [ proto RTPROTO ]\n" \
1356 "\t\t\tROUTE := [ TYPE ] PREFIX [ tos TOS ] [ proto RTPROTO ]"
1357
1358#define iptunnel_trivial_usage \
1359 "{ add | change | del | show } [ NAME ]\n" \
1360 "\t\t[ mode { ipip | gre | sit } ]\n" \
1361 "\t\t[ remote ADDR ] [ local ADDR ] [ ttl TTL ]"
1362#define iptunnel_full_usage \
1363 "iptunnel { add | change | del | show } [ NAME ]\n" \
1364 "\t\t\t[ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n" \
1365 "\t\t\t[ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n" \
1366 "\t\t\t[ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ]"
1367
1368#define kill_trivial_usage \
1369 "[-signal] process-id [process-id ...]"
1370#define kill_full_usage \
1371 "Send a signal (default is SIGTERM) to the specified process(es).\n\n"\
1372 "Options:\n" \
1373 "\t-l\tList all signal names and numbers."
1374#define kill_example_usage \
1375 "$ ps | grep apache\n" \
1376 "252 root root S [apache]\n" \
1377 "263 www-data www-data S [apache]\n" \
1378 "264 www-data www-data S [apache]\n" \
1379 "265 www-data www-data S [apache]\n" \
1380 "266 www-data www-data S [apache]\n" \
1381 "267 www-data www-data S [apache]\n" \
1382 "$ kill 252\n"
1383
1384#define killall_trivial_usage \
1385 "[-q] [-signal] process-name [process-name ...]"
1386#define killall_full_usage \
1387 "Send a signal (default is SIGTERM) to the specified process(es).\n\n"\
1388 "Options:\n" \
1389 "\t-l\tList all signal names and numbers.\n"\
1390 "\t-q\tDo not complain if no processes were killed."
1391#define killall_example_usage \
1392 "$ killall apache\n"
1393
1394#define klogd_trivial_usage \
1395 "[-c n] [-n]"
1396#define klogd_full_usage \
1397 "Kernel logger.\n"\
1398 "Options:\n"\
1399 "\t-c n\tSets the default log level of console messages to n.\n"\
1400 "\t-n\tRun as a foreground process."
1401
1402#define length_trivial_usage \
1403 "STRING"
1404#define length_full_usage \
1405 "Prints out the length of the specified STRING."
1406#define length_example_usage \
1407 "$ length Hello\n" \
1408 "5\n"
1409
1410#define ln_trivial_usage \
1411 "[OPTION] TARGET... LINK_NAME|DIRECTORY"
1412#define ln_full_usage \
1413 "Create a link named LINK_NAME or DIRECTORY to the specified TARGET\n"\
1414 "\nYou may use '--' to indicate that all following arguments are non-options.\n\n" \
1415 "Options:\n" \
1416 "\t-s\tmake symbolic links instead of hard links\n" \
1417 "\t-f\tremove existing destination files\n" \
1418 "\t-n\tno dereference symlinks - treat like normal file"
1419#define ln_example_usage \
1420 "$ ln -s BusyBox /tmp/ls\n" \
1421 "$ ls -l /tmp/ls\n" \
1422 "lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox*\n"
1423
1424#define loadfont_trivial_usage \
1425 "< font"
1426#define loadfont_full_usage \
1427 "Loads a console font from standard input."
1428#define loadfont_example_usage \
1429 "$ loadfont < /etc/i18n/fontname\n"
1430
1431#define loadkmap_trivial_usage \
1432 "< keymap"
1433#define loadkmap_full_usage \
1434 "Loads a binary keyboard translation table from standard input."
1435#define loadkmap_example_usage \
1436 "$ loadkmap < /etc/i18n/lang-keymap\n"
1437
1438#define logger_trivial_usage \
1439 "[OPTION]... [MESSAGE]"
1440#define logger_full_usage \
1441 "Write MESSAGE to the system log. If MESSAGE is omitted, log stdin.\n\n" \
1442 "Options:\n" \
1443 "\t-s\tLog to stderr as well as the system log.\n" \
1444 "\t-t TAG\tLog using the specified tag (defaults to user name).\n" \
1445 "\t-p PRIORITY\tEnter the message with the specified priority.\n" \
1446 "\t\tThis may be numerical or a ``facility.level'' pair."
1447#define logger_example_usage \
1448 "$ logger "hello"\n"
1449
1450#define login_trivial_usage \
1451 "[OPTION]... [username] [ENV=VAR ...]"
1452#define login_full_usage \
1453 "Begin a new session on the system\n\n" \
1454 "Options:\n" \
1455 "\t-f\tDo not authenticate (user already authenticated)\n" \
1456 "\t-h\tName of the remote host for this login.\n" \
1457 "\t-p\tPreserve environment."
1458
1459#define logname_trivial_usage \
1460 ""
1461#define logname_full_usage \
1462 "Print the name of the current user."
1463#define logname_example_usage \
1464 "$ logname\n" \
1465 "root\n"
1466
1467#define logread_trivial_usage \
1468 "[OPTION]..."
1469#define logread_full_usage \
1470 "Shows the messages from syslogd (using circular buffer).\n\n" \
1471 "Options:\n" \
1472 "\t-f\t\toutput data as the log grows"
1473
1474#define losetup_trivial_usage \
1475 "[OPTION]... LOOPDEVICE FILE\n" \
1476 "or: losetup [OPTION]... -d LOOPDEVICE"
1477#define losetup_full_usage \
1478 "Associate LOOPDEVICE with FILE.\n\n" \
1479 "Options:\n" \
1480 "\t-d\t\tDisassociate LOOPDEVICE.\n" \
1481 "\t-o OFFSET\tStart OFFSET bytes into FILE."
1482
1483#ifdef CONFIG_FEATURE_LS_TIMESTAMPS
1484 #define USAGE_LS_TIMESTAMPS(a) a
1485#else
1486 #define USAGE_LS_TIMESTAMPS(a)
1487#endif
1488#ifdef CONFIG_FEATURE_LS_FILETYPES
1489 #define USAGE_LS_FILETYPES(a) a
1490#else
1491 #define USAGE_LS_FILETYPES(a)
1492#endif
1493#ifdef CONFIG_FEATURE_LS_FOLLOWLINKS
1494 #define USAGE_LS_FOLLOWLINKS(a) a
1495#else
1496 #define USAGE_LS_FOLLOWLINKS(a)
1497#endif
1498#ifdef CONFIG_FEATURE_LS_RECURSIVE
1499 #define USAGE_LS_RECURSIVE(a) a
1500#else
1501 #define USAGE_LS_RECURSIVE(a)
1502#endif
1503#ifdef CONFIG_FEATURE_LS_SORTFILES
1504 #define USAGE_LS_SORTFILES(a) a
1505#else
1506 #define USAGE_LS_SORTFILES(a)
1507#endif
1508#ifdef CONFIG_FEATURE_AUTOWIDTH
1509 #define USAGE_AUTOWIDTH(a) a
1510#else
1511 #define USAGE_AUTOWIDTH(a)
1512#endif
1513
1514#define ls_trivial_usage \
1515 "[-1Aa" USAGE_LS_TIMESTAMPS("c") "Cd" USAGE_LS_TIMESTAMPS("e") USAGE_LS_FILETYPES("F") "iln" USAGE_LS_FILETYPES("p") USAGE_LS_FOLLOWLINKS("L") USAGE_LS_RECURSIVE("R") USAGE_LS_SORTFILES("rS") "s" USAGE_AUTOWIDTH("T") USAGE_LS_TIMESTAMPS("tu") USAGE_LS_SORTFILES("v") USAGE_AUTOWIDTH("w") "x" USAGE_LS_SORTFILES("X") USAGE_HUMAN_READABLE("h") USAGE_NOT_HUMAN_READABLE("") "k" USAGE_SELINUX("K") "] [filenames...]"
1516#define ls_full_usage \
1517 "List directory contents\n\n" \
1518 "Options:\n" \
1519 "\t-1\tlist files in a single column\n" \
1520 "\t-A\tdo not list implied . and ..\n" \
1521 "\t-a\tdo not hide entries starting with .\n" \
1522 "\t-C\tlist entries by columns\n" \
1523 USAGE_LS_TIMESTAMPS("\t-c\twith -l: show ctime\n") \
1524 "\t-d\tlist directory entries instead of contents\n" \
1525 USAGE_LS_TIMESTAMPS("\t-e\tlist both full date and full time\n") \
1526 USAGE_LS_FILETYPES("\t-F\tappend indicator (one of */=@|) to entries\n") \
1527 "\t-i\tlist the i-node for each file\n" \
1528 "\t-l\tuse a long listing format\n" \
1529 "\t-n\tlist numeric UIDs and GIDs instead of names\n" \
1530 USAGE_LS_FILETYPES("\t-p\tappend indicator (one of /=@|) to entries\n") \
1531 USAGE_LS_FOLLOWLINKS("\t-L\tlist entries pointed to by symbolic links\n") \
1532 USAGE_LS_RECURSIVE("\t-R\tlist subdirectories recursively\n") \
1533 USAGE_LS_SORTFILES("\t-r\tsort the listing in reverse order\n") \
1534 USAGE_LS_SORTFILES("\t-S\tsort the listing by file size\n") \
1535 "\t-s\tlist the size of each file, in blocks\n" \
1536 USAGE_AUTOWIDTH("\t-T NUM\tassume Tabstop every NUM columns\n") \
1537 USAGE_LS_TIMESTAMPS("\t-t\twith -l: show modification time\n") \
1538 USAGE_LS_TIMESTAMPS("\t-u\twith -l: show access time\n") \
1539 USAGE_LS_SORTFILES("\t-v\tsort the listing by version\n") \
1540 USAGE_AUTOWIDTH("\t-w NUM\tassume the terminal is NUM columns wide\n") \
1541 "\t-x\tlist entries by lines instead of by columns\n" \
1542 USAGE_LS_SORTFILES("\t-X\tsort the listing by extension\n") \
1543 USAGE_HUMAN_READABLE( \
1544 "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n") \
1545 USAGE_SELINUX("\t-k\tprint security context\n") \
1546 USAGE_SELINUX("\t-K\tprint security context in long format\n")
1547
1548#define lsmod_trivial_usage \
1549 ""
1550#define lsmod_full_usage \
1551 "List the currently loaded kernel modules."
1552
1553#define makedevs_trivial_usage \
1554 "NAME TYPE MAJOR MINOR FIRST LAST [s]"
1555#define makedevs_full_usage \
1556 "Creates a range of block or character special files\n\n" \
1557 "TYPEs include:\n" \
1558 "\tb:\tMake a block (buffered) device.\n" \
1559 "\tc or u:\tMake a character (un-buffered) device.\n" \
1560 "\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n\n" \
1561 "FIRST specifies the number appended to NAME to create the first device.\n" \
1562 "LAST specifies the number of the last item that should be created.\n" \
1563 "If 's' is the last argument, the base device is created as well.\n\n" \
1564 "For example:\n" \
1565 "\tmakedevs /dev/ttyS c 4 66 2 63 -> ttyS2-ttyS63\n" \
1566 "\tmakedevs /dev/hda b 3 0 0 8 s -> hda,hda1-hda8"
1567#define makedevs_example_usage \
1568 "# makedevs /dev/ttyS c 4 66 2 63\n" \
1569 "[creates ttyS2-ttyS63]\n" \
1570 "# makedevs /dev/hda b 3 0 0 8 s\n" \
1571 "[creates hda,hda1-hda8]\n"
1572
1573#ifdef CONFIG_FEATURE_MD5_SHA1_SUM_CHECK
1574#define USAGE_MD5_SHA1_SUM_CHECK(a) a
1575#else
1576#define USAGE_MD5_SHA1_SUM_CHECK(a)
1577#endif
1578
1579#define md5sum_trivial_usage \
1580 "[OPTION] [FILEs...]" \
1581 USAGE_MD5_SHA1_SUM_CHECK("\n or: md5sum [OPTION] -c [FILE]")
1582#define md5sum_full_usage \
1583 "Print" USAGE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums.\n\n" \
1584 "Options:\n" \
1585 "With no FILE, or when FILE is -, read standard input." \
1586 USAGE_MD5_SHA1_SUM_CHECK("\n\n" \
1587 "\t-c\tcheck MD5 sums against given list\n" \
1588 "\nThe following two options are useful only when verifying checksums:\n" \
1589 "\t-s\tdon't output anything, status code shows success\n" \
1590 "\t-w\twarn about improperly formated MD5 checksum lines")
1591#define md5sum_example_usage \
1592 "$ md5sum < busybox\n" \
1593 "6fd11e98b98a58f64ff3398d7b324003\n" \
1594 "$ md5sum busybox\n" \
1595 "6fd11e98b98a58f64ff3398d7b324003 busybox\n" \
1596 "$ md5sum -c -\n" \
1597 "6fd11e98b98a58f64ff3398d7b324003 busybox\n" \
1598 "busybox: OK\n" \
1599 "^D\n"
1600
1601#define mesg_trivial_usage \
1602 "[y|n]"
1603#define mesg_full_usage \
1604 "mesg controls write access to your terminal\n" \
1605 "\ty\tAllow write access to your terminal.\n" \
1606 "\tn\tDisallow write access to your terminal.\n"
1607
1608#define mkdir_trivial_usage \
1609 "[OPTION] DIRECTORY..."
1610#define mkdir_full_usage \
1611 "Create the DIRECTORY(ies) if they do not already exist\n\n" \
1612 "Options:\n" \
1613 "\t-m\tset permission mode (as in chmod), not rwxrwxrwx - umask\n" \
1614 "\t-p\tno error if existing, make parent directories as needed"
1615#define mkdir_example_usage \
1616 "$ mkdir /tmp/foo\n" \
1617 "$ mkdir /tmp/foo\n" \
1618 "/tmp/foo: File exists\n" \
1619 "$ mkdir /tmp/foo/bar/baz\n" \
1620 "/tmp/foo/bar/baz: No such file or directory\n" \
1621 "$ mkdir -p /tmp/foo/bar/baz\n"
1622
1623#define mkfifo_trivial_usage \
1624 "[OPTIONS] name"
1625#define mkfifo_full_usage \
1626 "Creates a named pipe (identical to 'mknod name p')\n\n" \
1627 "Options:\n" \
1628 "\t-m\tcreate the pipe using the specified mode (default a=rw)"
1629
1630#define mkfs_minix_trivial_usage \
1631 "[-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]"
1632#define mkfs_minix_full_usage \
1633 "Make a MINIX filesystem.\n\n" \
1634 "Options:\n" \
1635 "\t-c\t\tCheck the device for bad blocks\n" \
1636 "\t-n [14|30]\tSpecify the maximum length of filenames\n" \
1637 "\t-i INODES\tSpecify the number of inodes for the filesystem\n" \
1638 "\t-l FILENAME\tRead the bad blocks list from FILENAME\n" \
1639 "\t-v\t\tMake a Minix version 2 filesystem"
1640
1641#define mknod_trivial_usage \
1642 "[OPTIONS] NAME TYPE MAJOR MINOR"
1643#define mknod_full_usage \
1644 "Create a special file (block, character, or pipe).\n\n" \
1645 "Options:\n" \
1646 "\t-m\tcreate the special file using the specified mode (default a=rw)\n\n" \
1647 "TYPEs include:\n" \
1648 "\tb:\tMake a block (buffered) device.\n" \
1649 "\tc or u:\tMake a character (un-buffered) device.\n" \
1650 "\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes."
1651#define mknod_example_usage \
1652 "$ mknod /dev/fd0 b 2 0\n" \
1653 "$ mknod -m 644 /tmp/pipe p\n"
1654
1655#define mkswap_trivial_usage \
1656 "[-c] [-v0|-v1] device [block-count]"
1657#define mkswap_full_usage \
1658 "Prepare a disk partition to be used as a swap partition.\n\n" \
1659 "Options:\n" \
1660 "\t-c\t\tCheck for read-ability.\n" \
1661 "\t-v0\t\tMake version 0 swap [max 128 Megs].\n" \
1662 "\t-v1\t\tMake version 1 swap [big!] (default for kernels >\n\t\t\t2.1.117).\n" \
1663 "\tblock-count\tNumber of block to use (default is entire partition)."
1664
1665#define mktemp_trivial_usage \
1666 "[-dq] TEMPLATE"
1667#define mktemp_full_usage \
1668 "Creates a temporary file with its name based on TEMPLATE.\n" \
1669 "TEMPLATE is any name with six `Xs' (i.e., /tmp/temp.XXXXXX).\n\n" \
1670 "Options:\n" \
1671 "\t-d\t\tMake a directory instead of a file\n" \
1672 "\t-q\t\tFail silently if an error occurs"
1673#define mktemp_example_usage \
1674 "$ mktemp /tmp/temp.XXXXXX\n" \
1675 "/tmp/temp.mWiLjM\n" \
1676 "$ ls -la /tmp/temp.mWiLjM\n" \
1677 "-rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM\n"
1678
1679#define modprobe_trivial_usage \
1680 "[-knqrsv] [MODULE ...]"
1681#define modprobe_full_usage \
1682 "Used for high level module loading and unloading.\n\n" \
1683 "Options:\n" \
1684 "\t-k\tMake module autoclean-able.\n" \
1685 "\t-n\tJust show what would be done.\n" \
1686 "\t-q\tQuiet output.\n" \
1687 "\t-r\tRemove module (stacks) or do autoclean.\n" \
1688 "\t-s\tReport via syslog instead of stderr.\n" \
1689 "\t-v\tVerbose output."
1690#define modprobe_example_usage \
1691 "$ modprobe cdrom\n"
1692
1693#define more_trivial_usage \
1694 "[FILE ...]"
1695#define more_full_usage \
1696 "More is a filter for viewing FILE one screenful at a time."
1697#define more_example_usage \
1698 "$ dmesg | more\n"
1699
1700#ifdef CONFIG_FEATURE_MOUNT_LOOP
1701 #define USAGE_MOUNT_LOOP(a) a
1702#else
1703 #define USAGE_MOUNT_LOOP(a)
1704#endif
1705#ifdef CONFIG_FEATURE_MTAB_SUPPORT
1706 #define USAGE_MTAB(a) a
1707#else
1708 #define USAGE_MTAB(a)
1709#endif
1710#define mount_trivial_usage \
1711 "[flags] DEVICE NODE [-o options,more-options]"
1712#define mount_full_usage \
1713 "Mount a filesystem. Autodetection of filesystem type requires the\n" \
1714 "/proc filesystem be already mounted.\n\n" \
1715 "Flags:\n" \
1716 "\t-a:\t\tMount all filesystems in fstab.\n" \
1717 USAGE_MTAB( \
1718 "\t-f:\t\t\"Fake\" Add entry to mount table but don't mount it.\n" \
1719 "\t-n:\t\tDon't write a mount table entry.\n" \
1720 ) \
1721 "\t-o option:\tOne of many filesystem options, listed below.\n" \
1722 "\t-r:\t\tMount the filesystem read-only.\n" \
1723 "\t-t fs-type:\tSpecify the filesystem type.\n" \
1724 "\t-w:\t\tMount for reading and writing (default).\n" \
1725 "\n" \
1726 "Options for use with the \"-o\" flag:\n" \
1727 "\tasync/sync:\tWrites are asynchronous / synchronous.\n" \
1728 "\tatime/noatime:\tEnable / disable updates to inode access times.\n" \
1729 "\tdev/nodev:\tAllow use of special device files / disallow them.\n" \
1730 "\texec/noexec:\tAllow use of executable files / disallow them.\n" \
1731 USAGE_MOUNT_LOOP( \
1732 "\tloop:\t\tMounts a file via loop device.\n" \
1733 ) \
1734 "\tsuid/nosuid:\tAllow set-user-id-root programs / disallow them.\n" \
1735 "\tremount:\tRe-mount a mounted filesystem, changing its flags.\n" \
1736 "\tro/rw:\t\tMount for read-only / read-write.\n" \
1737 "\tbind:\t\tUse the linux 2.4.x \"bind\" feature.\n" \
1738 "\nThere are EVEN MORE flags that are specific to each filesystem.\n" \
1739 "You'll have to see the written documentation for those filesystems."
1740#define mount_example_usage \
1741 "$ mount\n" \
1742 "/dev/hda3 on / type minix (rw)\n" \
1743 "proc on /proc type proc (rw)\n" \
1744 "devpts on /dev/pts type devpts (rw)\n" \
1745 "$ mount /dev/fd0 /mnt -t msdos -o ro\n" \
1746 "$ mount /tmp/diskimage /opt -t ext2 -o loop\n"
1747
1748#define mt_trivial_usage \
1749 "[-f device] opcode value"
1750#define mt_full_usage \
1751 "Control magnetic tape drive operation\n" \
1752 "\nAvailable Opcodes:\n\n" \
1753 "bsf bsfm bsr bss datacompression drvbuffer eof eom erase\n" \
1754 "fsf fsfm fsr fss load lock mkpart nop offline ras1 ras2\n" \
1755 "ras3 reset retension rewind rewoffline seek setblk setdensity\n" \
1756 "setpart tell unload unlock weof wset"
1757
1758#define mv_trivial_usage \
1759 "[OPTION]... SOURCE DEST\n" \
1760 "or: mv [OPTION]... SOURCE... DIRECTORY"
1761#define mv_full_usage \
1762 "Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n\n" \
1763 "Options:\n" \
1764 "\t-f\tdon't prompt before overwriting\n" \
1765 "\t-i\tinteractive, prompt before overwrite"
1766#define mv_example_usage \
1767 "$ mv /tmp/foo /bin/bar\n"
1768
1769#define nameif_trivial_usage \
1770 "[-s] [-c FILE] [{IFNAME MACADDR}]"
1771#define nameif_full_usage \
1772 "Nameif renaming network interface while it in the down state.\n\n" \
1773 "Options:\n" \
1774 "\t-c FILE\t\tUse configuration file (default is /etc/mactab)\n" \
1775 "\t-s\t\tUse syslog (LOCAL0 facility).\n" \
1776 "\tIFNAME MACADDR\tnew_interface_name interface_mac_address"
1777#define nameif_example_usage \
1778 "$ nameif -s dmz0 00:A0:C9:8C:F6:3F\n" \
1779 " or\n" \
1780 "$ nameif -c /etc/my_mactab_file\n" \
1781
1782#define nc_trivial_usage \
1783 "[OPTIONS] [IP] [port]"
1784#define nc_full_usage \
1785 "Netcat opens a pipe to IP:port\n\n" \
1786 "Options:\n" \
1787 "\t-l\t\tlisten mode, for inbound connects\n" \
1788 "\t-p PORT\t\tlocal port number\n" \
1789 "\t-i SECS\t\tdelay interval for lines sent\n" \
1790 "\t-e PROG\t\tprogram to exec after connect (dangerous!)"
1791#define nc_example_usage \
1792 "$ nc foobar.somedomain.com 25\n" \
1793 "220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600\n" \
1794 "help\n" \
1795 "214-Commands supported:\n" \
1796 "214- HELO EHLO MAIL RCPT DATA AUTH\n" \
1797 "214 NOOP QUIT RSET HELP\n" \
1798 "quit\n" \
1799 "221 foobar closing connection\n"
1800
1801#define netstat_trivial_usage \
1802 "[-laenrtuwx]"
1803#define netstat_full_usage \
1804 "Netstat displays Linux networking information.\n\n" \
1805 "Options:\n" \
1806 "\t-l display listening server sockets\n" \
1807 "\t-a display all sockets (default: connected)\n" \
1808 "\t-e display other/more information\n" \
1809 "\t-n don't resolve names\n" \
1810 "\t-r display routing table\n" \
1811 "\t-t tcp sockets\n" \
1812 "\t-u udp sockets\n" \
1813 "\t-w raw sockets\n" \
1814 "\t-x unix sockets"
1815
1816#define nslookup_trivial_usage \
1817 "[HOST] [SERVER]"
1818#define nslookup_full_usage \
1819 "Queries the nameserver for the IP address of the given HOST\n" \
1820 "optionally using a specified DNS server"
1821#define nslookup_example_usage \
1822 "$ nslookup localhost\n" \
1823 "Server: default\n" \
1824 "Address: default\n" \
1825 "\n" \
1826 "Name: debian\n" \
1827 "Address: 127.0.0.1\n"
1828
1829#define od_trivial_usage \
1830 "[-aBbcDdeFfHhIiLlOovXx] [FILE]"
1831#define od_full_usage \
1832 "Write an unambiguous representation, octal bytes by default, of FILE\n"\
1833 "to standard output. With no FILE, or when FILE is -, read standard input."
1834
1835#define openvt_trivial_usage \
1836 "<vtnum> <COMMAND> [ARGS...]"
1837#define openvt_full_usage \
1838 "Start a command on a new virtual terminal"
1839#define openvt_example_usage \
1840 "openvt 2 /bin/ash\n"
1841
1842#ifdef CONFIG_FEATURE_SHA1_PASSWORDS
1843 #define PASSWORD_ALG_TYPES(a) a
1844#else
1845 #define PASSWORD_ALG_TYPES(a)
1846#endif
1847#define passwd_trivial_usage \
1848 "[OPTION] [name]"
1849#define passwd_full_usage \
1850 "Change a user password. If no name is specified,\n" \
1851 "changes the password for the current user.\n" \
1852 "Options:\n" \
1853 "\t-a\tDefine which algorithm shall be used for the password.\n" \
1854 "\t\t\t(Choices: des, md5" \
1855 PASSWORD_ALG_TYPES(", sha1") \
1856 ")\n\t-d\tDelete the password for the specified user account.\n" \
1857 "\t-l\tLocks (disables) the specified user account.\n" \
1858 "\t-u\tUnlocks (re-enables) the specified user account."
1859
1860#define patch_trivial_usage \
1861 "[-p<num>]"
1862#define patch_full_usage \
1863 "[-p<num>]"
1864#define patch_example_usage \
1865 "$ patch -p1 <example.diff"
1866
1867#define pidof_trivial_usage \
1868 "process-name [OPTION] [process-name ...]"
1869#define pidof_full_usage \
1870 "Lists the PIDs of all processes with names that match the\n" \
1871 "names on the command line.\n" \
1872 "Options:\n" \
1873 "\t-s\t\tdisplay only a single PID."
1874#define pidof_example_usage \
1875 "$ pidof init\n" \
1876 "1\n"
1877
1878#ifndef CONFIG_FEATURE_FANCY_PING
1879#define ping_trivial_usage "host"
1880#define ping_full_usage "Send ICMP ECHO_REQUEST packets to network hosts"
1881#else
1882#define ping_trivial_usage \
1883 "[OPTION]... host"
1884#define ping_full_usage \
1885 "Send ICMP ECHO_REQUEST packets to network hosts.\n\n" \
1886 "Options:\n" \
1887 "\t-c COUNT\tSend only COUNT pings.\n" \
1888 "\t-s SIZE\t\tSend SIZE data bytes in packets (default=56).\n" \
1889 "\t-q\t\tQuiet mode, only displays output at start\n" \
1890 "\t\t\tand when finished."
1891#endif
1892#define ping_example_usage \
1893 "$ ping localhost\n" \
1894 "PING slag (127.0.0.1): 56 data bytes\n" \
1895 "64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms\n" \
1896 "\n" \
1897 "--- debian ping statistics ---\n" \
1898 "1 packets transmitted, 1 packets received, 0% packet loss\n" \
1899 "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"
1900
1901#ifndef CONFIG_FEATURE_FANCY_PING6
1902#define ping6_trivial_usage "host"
1903#define ping6_full_usage "Send ICMP ECHO_REQUEST packets to network hosts"
1904#else
1905#define ping6_trivial_usage \
1906 "[OPTION]... host"
1907#define ping6_full_usage \
1908 "Send ICMP ECHO_REQUEST packets to network hosts.\n\n" \
1909 "Options:\n" \
1910 "\t-c COUNT\tSend only COUNT pings.\n" \
1911 "\t-s SIZE\t\tSend SIZE data bytes in packets (default=56).\n" \
1912 "\t-q\t\tQuiet mode, only displays output at start\n" \
1913 "\t\t\tand when finished."
1914#endif
1915#define ping6_example_usage \
1916 "$ ping6 ip6-localhost\n" \
1917 "PING ip6-localhost (::1): 56 data bytes\n" \
1918 "64 bytes from ::1: icmp6_seq=0 ttl=64 time=20.1 ms\n" \
1919 "\n" \
1920 "--- ip6-localhost ping statistics ---\n" \
1921 "1 packets transmitted, 1 packets received, 0% packet loss\n" \
1922 "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"
1923
1924#define pivot_root_trivial_usage \
1925 "NEW_ROOT PUT_OLD"
1926#define pivot_root_full_usage \
1927 "Move the current root file system to PUT_OLD and make NEW_ROOT\n" \
1928 "the new root file system."
1929
1930#define poweroff_trivial_usage \
1931 "[-d<delay>]"
1932#define poweroff_full_usage \
1933 "Halt the system and request that the kernel shut off the power.\n" \
1934 "Options:\n" \
1935 "\t-d\t\tdelay interval for shutting off."
1936
1937#define printf_trivial_usage \
1938 "FORMAT [ARGUMENT...]"
1939#define printf_full_usage \
1940 "Formats and prints ARGUMENT(s) according to FORMAT,\n" \
1941 "Where FORMAT controls the output exactly as in C printf."
1942#define printf_example_usage \
1943 "$ printf "Val=%d\\n" 5\n" \
1944 "Val=5\n"
1945
1946#ifdef CONFIG_SELINUX
1947#define USAGE_NONSELINUX(a)
1948#else
1949#define USAGE_NONSELINUX(a) a
1950#endif
1951
1952#define ps_trivial_usage \
1953 ""
1954#define ps_full_usage \
1955 "Report process status\n" \
1956 USAGE_NONSELINUX("\n\tThis version of ps accepts no options.") \
1957 USAGE_SELINUX("\nOptions:\n\t-c\tshow SE Linux context")
1958
1959#define ps_example_usage \
1960 "$ ps\n" \
1961 " PID Uid Gid State Command\n" \
1962 " 1 root root S init\n" \
1963 " 2 root root S [kflushd]\n" \
1964 " 3 root root S [kupdate]\n" \
1965 " 4 root root S [kpiod]\n" \
1966 " 5 root root S [kswapd]\n" \
1967 " 742 andersen andersen S [bash]\n" \
1968 " 743 andersen andersen S -bash\n" \
1969 " 745 root root S [getty]\n" \
1970 " 2990 andersen andersen R ps\n"
1971
1972#define pwd_trivial_usage \
1973 ""
1974#define pwd_full_usage \
1975 "Print the full filename of the current working directory."
1976#define pwd_example_usage \
1977 "$ pwd\n" \
1978 "/root\n"
1979
1980#define rdate_trivial_usage \
1981 "[-sp] HOST"
1982#define rdate_full_usage \
1983 "Get and possibly set the system date and time from a remote HOST.\n\n" \
1984 "Options:\n" \
1985 "\t-s\tSet the system date and time (default).\n" \
1986 "\t-p\tPrint the date and time."
1987
1988#define readlink_trivial_usage \
1989 ""
1990#define readlink_full_usage \
1991 "Displays the value of a symbolic link."
1992
1993#define realpath_trivial_usage \
1994 "pathname ..."
1995#define realpath_full_usage \
1996 "Returns the absolute pathnames of given argument."
1997
1998#define reboot_trivial_usage \
1999 "[-d<delay>]"
2000#define reboot_full_usage \
2001 "Reboot the system.\n" \
2002 "Options:\n" \
2003 "\t-d\t\tdelay interval for rebooting."
2004
2005#define renice_trivial_usage \
2006 "priority pid [pid ...]"
2007#define renice_full_usage \
2008 "Changes priority of running processes. Allowed priorities range\n" \
2009 "from 20 (the process runs only when nothing else is running) to 0\n" \
2010 "(default priority) to -20 (almost nothing else ever gets to run)."
2011
2012#define reset_trivial_usage \
2013 ""
2014#define reset_full_usage \
2015 "Resets the screen."
2016
2017#define rm_trivial_usage \
2018 "[OPTION]... FILE..."
2019#define rm_full_usage \
2020 "Remove (unlink) the FILE(s). You may use '--' to\n" \
2021 "indicate that all following arguments are non-options.\n\n" \
2022 "Options:\n" \
2023 "\t-i\t\talways prompt before removing each destination\n" \
2024 "\t-f\t\tremove existing destinations, never prompt\n" \
2025 "\t-r or -R\tremove the contents of directories recursively"
2026#define rm_example_usage \
2027 "$ rm -rf /tmp/foo\n"
2028
2029#define rmdir_trivial_usage \
2030 "[OPTION]... DIRECTORY..."
2031#define rmdir_full_usage \
2032 "Remove the DIRECTORY(ies), if they are empty."
2033#define rmdir_example_usage \
2034 "# rmdir /tmp/foo\n"
2035
2036#define rmmod_trivial_usage \
2037 "[OPTION]... [MODULE]..."
2038#define rmmod_full_usage \
2039 "Unloads the specified kernel modules from the kernel.\n\n" \
2040 "Options:\n" \
2041 "\t-a\tRemove all unused modules (recursively)"
2042#define rmmod_example_usage \
2043 "$ rmmod tulip\n"
2044
2045#ifdef CONFIG_FEATURE_IPV6
2046 #define USAGE_ROUTE_IPV6(a) a
2047#else
2048 #define USAGE_ROUTE_IPV6(a) "\t"
2049#endif
2050
2051
2052#define route_trivial_usage \
2053 "[{add|del|delete}]"
2054#define route_full_usage \
2055 "Edit the kernel's routing tables.\n\n" \
2056 "Options:\n" \
2057 "\t-n\t\tDont resolve names.\n" \
2058 "\t-e\t\tDisplay other/more information.\n" \
2059 "\t-A inet" USAGE_ROUTE_IPV6("{6}") "\tSelect address family."
2060
2061#define rpm_trivial_usage \
2062 "-i -q[ildc]p package.rpm"
2063#define rpm_full_usage \
2064 "Manipulates RPM packages" \
2065 "\n\nOptions:" \
2066 "\n\t-i Install package" \
2067 "\n\t-q Query package" \
2068 "\n\t-p Query uninstalled package" \
2069 "\n\t-i Show information" \
2070 "\n\t-l List contents" \
2071 "\n\t-d List documents" \
2072 "\n\t-c List config files"
2073
2074#define rpm2cpio_trivial_usage \
2075 "package.rpm"
2076#define rpm2cpio_full_usage \
2077 "Outputs a cpio archive of the rpm file."
2078
2079#define run_parts_trivial_usage \
2080 "[-t] [-a ARG] [-u MASK] DIRECTORY"
2081#define run_parts_full_usage \
2082 "Run a bunch of scripts in a directory.\n\n" \
2083 "Options:\n" \
2084 "\t-t\tPrints what would be run, but does not actually run anything.\n" \
2085 "\t-a ARG\tPass ARG as an argument for every program invoked.\n" \
2086 "\t-u MASK\tSet the umask to MASK before executing every program."
2087
2088#define rx_trivial_usage \
2089 "FILE"
2090#define rx_full_usage \
2091 "Receive a file using the xmodem protocol."
2092#define rx_example_usage \
2093 "$ rx /tmp/foo\n"
2094
2095#define sed_trivial_usage \
2096 "[-efinr] pattern [files...]"
2097#define sed_full_usage \
2098 "Options:\n" \
2099 "\t-e script\tadd the script to the commands to be executed\n" \
2100 "\t-f scriptfile\tadd script-file contents to the\n" \
2101 "\t\t\tcommands to be executed\n" \
2102 "\t-i\t\tedit files in-place\n" \
2103 "\t-n\t\tsuppress automatic printing of pattern space\n" \
2104 "\t-r\t\tuse extended regular expression syntax\n" \
2105 "\n" \
2106 "If no -e or -f is given, the first non-option argument is taken as the sed\n"\
2107 "script to interpret. All remaining arguments are names of input files; if no\n"\
2108 "input files are specified, then the standard input is read. Source files\n" \
2109 "will not be modified unless -i option is given."
2110
2111#define sed_example_usage \
2112 "$ echo "foo" | sed -e 's/f[a-zA-Z]o/bar/g'\n" \
2113 "bar\n"
2114
2115#define seq_trivial_usage \
2116 "[first [increment]] last"
2117#define seq_full_usage \
2118 "Print numbers from FIRST to LAST, in steps of INCREMENT.\n" \
2119 "FIRST, INCREMENT default to 1\n" \
2120 "Arguments:\n" \
2121 "\tLAST\n" \
2122 "\tFIRST\tLAST\n" \
2123 "\tFIRST\tINCREMENT\tLAST"
2124
2125#define setkeycodes_trivial_usage \
2126 "SCANCODE KEYCODE ..."
2127#define setkeycodes_full_usage \
2128 "Set entries into the kernel's scancode-to-keycode map,\n" \
2129 "allowing unusual keyboards to generate usable keycodes.\n\n" \
2130 "SCANCODE may be either xx or e0xx (hexadecimal),\n" \
2131 "and KEYCODE is given in decimal"
2132#define setkeycodes_example_usage \
2133 "$ setkeycodes e030 127\n"
2134
2135#define lash_trivial_usage \
2136 "[FILE]...\n" \
2137 "or: sh -c command [args]..."
2138#define lash_full_usage \
2139 "The BusyBox LAme SHell (command interpreter)"
2140#define lash_notes_usage \
2141 "This command does not yet have proper documentation.\n\n" \
2142 "Use lash just as you would use any other shell. It properly handles pipes,\n" \
2143 "redirects, job control, can be used as the shell for scripts, and has a\n" \
2144 "sufficient set of builtins to do what is needed. It does not (yet) support\n" \
2145 "Bourne Shell syntax. If you need things like "if-then-else", "while", and such\n" \
2146 "use ash or bash. If you just need a very simple and extremely small shell,\n" \
2147 "this will do the job."
2148
2149#define last_trivial_usage \
2150 ""
2151#define last_full_usage \
2152 "Shows listing of the last users that logged into the system"
2153
2154#define sha1sum_trivial_usage \
2155 "[OPTION] [FILEs...]" \
2156 USAGE_MD5_SHA1_SUM_CHECK("\n or: sha1sum [OPTION] -c [FILE]")
2157#define sha1sum_full_usage \
2158 "Print" USAGE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums.\n\n" \
2159 "Options:\n" \
2160 "With no FILE, or when FILE is -, read standard input." \
2161 USAGE_MD5_SHA1_SUM_CHECK("\n\n" \
2162 "\t-c\tcheck SHA1 sums against given list\n" \
2163 "\nThe following two options are useful only when verifying checksums:\n" \
2164 "\t-s\tdon't output anything, status code shows success\n" \
2165 "\t-w\twarn about improperly formated SHA1 checksum lines")
2166
2167#ifdef CONFIG_FEATURE_FANCY_SLEEP
2168 #define USAGE_FANCY_SLEEP(a) a
2169 #define USAGE_NOT_FANCY_SLEEP(a)
2170#else
2171 #define USAGE_FANCY_SLEEP(a)
2172 #define USAGE_NOT_FANCY_SLEEP(a) a
2173#endif
2174
2175#define sleep_trivial_usage \
2176 USAGE_FANCY_SLEEP("[") "N" USAGE_FANCY_SLEEP("]...")
2177#define sleep_full_usage \
2178 USAGE_NOT_FANCY_SLEEP("Pause for N seconds.") \
2179 USAGE_FANCY_SLEEP( \
2180 "Pause for a time equal to the total of the args given, where each arg can\n" \
2181 "\t\thave an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays.")
2182#define sleep_example_usage \
2183 "$ sleep 2\n" \
2184 "[2 second delay results]\n" \
2185 USAGE_FANCY_SLEEP("$ sleep 1d 3h 22m 8s\n" \
2186 "[98528 second delay results]\n")
2187
2188#ifdef CONFIG_FEATURE_SORT_UNIQUE
2189 #define USAGE_SORT_UNIQUE(a) a
2190#else
2191 #define USAGE_SORT_UNIQUE(a)
2192#endif
2193#ifdef CONFIG_FEATURE_SORT_REVERSE
2194 #define USAGE_SORT_REVERSE(a) a
2195#else
2196 #define USAGE_SORT_REVERSE(a)
2197#endif
2198#define sort_trivial_usage \
2199 "[-n" USAGE_SORT_REVERSE("r") USAGE_SORT_UNIQUE("u") "] [FILE]..."
2200#define sort_full_usage \
2201 "Sorts lines of text in the specified files\n\n"\
2202 "Options:\n" \
2203 USAGE_SORT_UNIQUE("\t-u\tsuppress duplicate lines\n") \
2204 USAGE_SORT_REVERSE("\t-r\tsort in reverse order\n") \
2205 "\t-n\tsort numerics"
2206#define sort_example_usage \
2207 "$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
2208 "a\n" \
2209 "b\n" \
2210 "c\n" \
2211 "d\n" \
2212 "e\n" \
2213 "f\n"
2214
2215#define start_stop_daemon_trivial_usage \
2216 "[OPTIONS] [--start|--stop] ... [-- arguments...]\n"
2217#define start_stop_daemon_full_usage \
2218 "Program to start and stop services."\
2219 "\n\nOptions:"\
2220 "\n\t-S|--start\t\t\tstart"\
2221 "\n\t-K|--stop\t\t\tstop"\
2222 "\n\t-a|--startas <pathname>\t\tstarts process specified by pathname"\
2223 "\n\t-b|--background\t\t\tforce process into background"\
2224 "\n\t-u|--user <username>|<uid>\tstop this user's processes"\
2225 "\n\t-x|--exec <executable>\t\tprogram to either start or check"\
2226 "\n\t-m|--make-pidfile <filename>\tcreate the -p file and enter pid in it"\
2227 "\n\t-n|--name <process-name>\tstop processes with this name"\
2228 "\n\t-p|--pidfile <pid-file>\t\tsave or load pid using a pid-file"\
2229 "\n\t-q|--quiet\t\t\tbe quiet" \
2230 "\n\t-s|--signal <signal>\t\tsignal to send (default TERM)"
2231
2232#define strings_trivial_usage \
2233 "[-afo] [-n length] [file ... ]"
2234#define strings_full_usage \
2235 "Display printable strings in a binary file." \
2236 "\n\nOptions:" \
2237 "\n\t-a\tScan the whole files (this is the default)."\
2238 "\n\t-f\tPrecede each string with the name of the file where it was found." \
2239 "\n\t-n N\tSpecifies that at least N characters forms a sequence (default 4)" \
2240 "\n\t-o\tEach string is preceded by its decimal offset in the file."
2241
2242#define stty_trivial_usage \
2243 "[-a|g] [-F DEVICE] [SETTING]..."
2244#define stty_full_usage \
2245 "Without arguments, prints baud rate, line discipline," \
2246 "\nand deviations from stty sane." \
2247 "\n\nOptions:" \
2248 "\n\t-F DEVICE\topen device instead of stdin" \
2249 "\n\t-a\t\tprint all current settings in human-readable form" \
2250 "\n\t-g\t\tprint in stty-readable form" \
2251 "\n\t[SETTING]\tsee manpage"
2252
2253#define su_trivial_usage \
2254 "[OPTION]... [-] [username]"
2255#define su_full_usage \
2256 "Change user id or become root.\n" \
2257 "Options:\n" \
2258 "\t-p\tPreserve environment"
2259
2260#define sulogin_trivial_usage \
2261 "[OPTION]... [tty-device]"
2262#define sulogin_full_usage \
2263 "Single user login\n" \
2264 "Options:\n" \
2265 "\t-f\tDo not authenticate (user already authenticated)\n" \
2266 "\t-h\tName of the remote host for this login.\n" \
2267 "\t-p\tPreserve environment."
2268
2269#define swapoff_trivial_usage \
2270 "[OPTION] [DEVICE]"
2271#define swapoff_full_usage \
2272 "Stop swapping virtual memory pages on DEVICE.\n\n" \
2273 "Options:\n" \
2274 "\t-a\tStop swapping on all swap devices"
2275
2276#define swapon_trivial_usage \
2277 "[OPTION] [DEVICE]"
2278#define swapon_full_usage \
2279 "Start swapping virtual memory pages on DEVICE.\n\n" \
2280 "Options:\n" \
2281 "\t-a\tStart swapping on all swap devices"
2282
2283#define sync_trivial_usage \
2284 ""
2285#define sync_full_usage \
2286 "Write all buffered filesystem blocks to disk."
2287
2288
2289#ifdef CONFIG_FEATURE_ROTATE_LOGFILE
2290 #define USAGE_ROTATE_LOGFILE(a) a
2291#else
2292 #define USAGE_ROTATE_LOGFILE(a)
2293#endif
2294#ifdef CONFIG_FEATURE_REMOTE_LOG
2295 #define USAGE_REMOTE_LOG(a) a
2296#else
2297 #define USAGE_REMOTE_LOG(a)
2298#endif
2299#ifdef CONFIG_FEATURE_IPC_SYSLOG
2300 #define USAGE_IPC_LOG(a) a
2301#else
2302 #define USAGE_IPC_LOG(a)
2303#endif
2304
2305#ifdef CONFIG_SYSCTL
2306#define sysctl_trivial_usage \
2307 "[OPTIONS]... [VALUE]...\n"
2308#define sysctl_full_usage
2309 "sysctl - configure kernel parameters at runtime\n\n" \
2310 "Options:\n" \
2311 "\t-n\tUse this option to disable printing of the key name when printing values.\n" \
2312 "\t-w\tUse this option when you want to change a sysctl setting.\n" \
2313 "\t-p\tLoad in sysctl settings from the file specified or /etc/sysctl.conf if none given.\n" \
2314 "\t-a\tDisplay all values currently available.\n" \
2315 "\t-A\tDisplay all values currently available in table form."
2316#define sysctl_example_usage
2317 "sysctl [-n] variable ...\n" \
2318 "sysctl [-n] -w variable=value ...\n" \
2319 "sysctl [-n] -a\n" \
2320 "sysctl [-n] -p <file>\t(default /etc/sysctl.conf)\n" \
2321 "sysctl [-n] -A\n"
2322#endif
2323
2324#define syslogd_trivial_usage \
2325 "[OPTION]..."
2326#define syslogd_full_usage \
2327 "Linux system and kernel logging utility.\n" \
2328 "Note that this version of syslogd ignores /etc/syslog.conf.\n\n" \
2329 "Options:\n" \
2330 "\t-m MIN\t\tMinutes between MARK lines (default=20, 0=off)\n" \
2331 "\t-n\t\tRun as a foreground process\n" \
2332 "\t-O FILE\t\tUse an alternate log file (default=/var/log/messages)\n" \
2333 "\t-S\t\tMake logging output smaller." \
2334 USAGE_ROTATE_LOGFILE( \
2335 "\n\t-s SIZE\t\tMax size (KB) before rotate (default=200KB, 0=off)\n" \
2336 "\t-b NUM\t\tNumber of rotated logs to keep (default=1, max=99, 0=purge)") \
2337 USAGE_REMOTE_LOG( \
2338 "\n\t-R HOST[:PORT]\tLog to IP or hostname on PORT (default PORT=514/UDP)\n" \
2339 "\t-L\t\tLog locally and via network logging (default is network only)") \
2340 USAGE_IPC_LOG( \
2341 "\n\t-C [size(KiB)]\tLog to a circular buffer (read the buffer using logread)")
2342#define syslogd_example_usage \
2343 "$ syslogd -R masterlog:514\n" \
2344 "$ syslogd -R 192.168.1.1:601\n"
2345
2346
2347#ifndef CONFIG_FEATURE_FANCY_TAIL
2348 #define USAGE_UNSIMPLE_TAIL(a)
2349#else
2350 #define USAGE_UNSIMPLE_TAIL(a) a
2351#endif
2352#define tail_trivial_usage \
2353 "[OPTION]... [FILE]..."
2354#define tail_full_usage \
2355 "Print last 10 lines of each FILE to standard output.\n" \
2356 "With more than one FILE, precede each with a header giving the\n" \
2357 "file name. With no FILE, or when FILE is -, read standard input.\n\n" \
2358 "Options:\n" \
2359 USAGE_UNSIMPLE_TAIL("\t-c N[kbm]\toutput the last N bytes\n") \
2360 "\t-n N[kbm]\tprint last N lines instead of last 10\n" \
2361 "\t-f\t\toutput data as the file grows" \
2362 USAGE_UNSIMPLE_TAIL( "\n\t-q\t\tnever output headers giving file names\n" \
2363 "\t-s SEC\t\twait SEC seconds between reads with -f\n" \
2364 "\t-v\t\talways output headers giving file names\n\n" \
2365 "If the first character of N (bytes or lines) is a '+', output begins with \n" \
2366 "the Nth item from the start of each file, otherwise, print the last N items\n" \
2367 "in the file. N bytes may be suffixed by k (x1024), b (x512), or m (1024^2)." )
2368#define tail_example_usage \
2369 "$ tail -n 1 /etc/resolv.conf\n" \
2370 "nameserver 10.0.0.1\n"
2371
2372#ifdef CONFIG_FEATURE_TAR_CREATE
2373 #define USAGE_TAR_CREATE(a) a
2374#else
2375 #define USAGE_TAR_CREATE(a)
2376#endif
2377#ifdef CONFIG_FEATURE_TAR_EXCLUDE
2378 #define USAGE_TAR_EXCLUDE(a) a
2379#else
2380 #define USAGE_TAR_EXCLUDE(a)
2381#endif
2382#ifdef CONFIG_FEATURE_TAR_GZIP
2383 #define USAGE_TAR_GZIP(a) a
2384#else
2385 #define USAGE_TAR_GZIP(a)
2386#endif
2387#ifdef CONFIG_FEATURE_TAR_BZIP2
2388 #define USAGE_TAR_BZIP2(a) a
2389#else
2390 #define USAGE_TAR_BZIP2(a)
2391#endif
2392#ifdef CONFIG_FEATURE_TAR_COMPRESS
2393 #define USAGE_TAR_COMPRESS(a) a
2394#else
2395 #define USAGE_TAR_COMPRESS(a)
2396#endif
2397
2398#define tar_trivial_usage \
2399 "-[" USAGE_TAR_CREATE("c") USAGE_TAR_GZIP("z") USAGE_TAR_BZIP2("j") USAGE_TAR_COMPRESS("Z") "xtvO] " \
2400 USAGE_TAR_EXCLUDE("[-X FILE]") \
2401 "[-f TARFILE] [-C DIR] [FILE(s)] ..."
2402#define tar_full_usage \
2403 "Create, extract, or list files from a tar file.\n\n" \
2404 "Options:\n" \
2405 USAGE_TAR_CREATE("\tc\t\tcreate\n") \
2406 "\tx\t\textract\n" \
2407 "\tt\t\tlist\n" \
2408 "\nArchive format selection:\n" \
2409 USAGE_TAR_GZIP("\tz\t\tFilter the archive through gzip\n") \
2410 USAGE_TAR_BZIP2("\tj\t\tFilter the archive through bzip2\n") \
2411 USAGE_TAR_COMPRESS("\tZ\t\tFilter the archive through compress\n") \
2412 "\nFile selection:\n" \
2413 "\tf\t\tname of TARFILE or \"-\" for stdin\n" \
2414 "\tO\t\textract to stdout\n" \
2415 USAGE_TAR_EXCLUDE( \
2416 "\texclude\t\tfile to exclude\n" \
2417 "\tX\t\tfile with names to exclude\n" \
2418 ) \
2419 "\tC\t\tchange to directory DIR before operation\n" \
2420 "\tv\t\tverbosely list files processed"
2421#define tar_example_usage \
2422 "$ zcat /tmp/tarball.tar.gz | tar -xf -\n" \
2423 "$ tar -cf /tmp/tarball.tar /usr/local\n"
2424
2425#define tee_trivial_usage \
2426 "[OPTION]... [FILE]..."
2427#define tee_full_usage \
2428 "Copy standard input to each FILE, and also to standard output.\n\n" \
2429 "Options:\n" \
2430 "\t-a\tappend to the given FILEs, do not overwrite\n" \
2431 "\t-i\tignore interrupt signals (SIGINT)"
2432#define tee_example_usage \
2433 "$ echo "Hello" | tee /tmp/foo\n" \
2434 "$ cat /tmp/foo\n" \
2435 "Hello\n"
2436
2437#ifdef CONFIG_FEATURE_TELNET_AUTOLOGIN
2438#define telnet_trivial_usage \
2439 "[-a] [-l USER] HOST [PORT]"
2440#define telnet_full_usage \
2441 "Telnet is used to establish interactive communication with another\n" \
2442 "computer over a network using the TELNET protocol.\n\n" \
2443 "Options:\n" \
2444 "\t-a\t\tAttempt an automatic login with the USER variable.\n" \
2445 "\t-l USER\t\tAttempt an automatic login with the USER argument.\n" \
2446 "\tHOST\t\tThe official name, alias or the IP address of the\n" \
2447 "\t\t\tremote host.\n" \
2448 "\tPORT\t\tThe remote port number to connect to. If it is not\n" \
2449 "\t\t\tspecified, the default telnet (23) port is used."
2450#else
2451#define telnet_trivial_usage \
2452 "HOST [PORT]"
2453#define telnet_full_usage \
2454 "Telnet is used to establish interactive communication with another\n"\
2455 "computer over a network using the TELNET protocol."
2456#endif
2457
2458#ifdef CONFIG_FEATURE_TELNETD_INETD
2459#define telnetd_trivial_usage \
2460 "(inetd mode) [OPTION]"
2461#define telnetd_full_usage \
2462 "Telnetd uses incoming TELNET connections via inetd.\n"\
2463 "Options:\n" \
2464 "\t-l LOGIN\texec LOGIN on connect (default /bin/sh)\n" \
2465 "\t-f issue_file\tDisplay issue_file instead of /etc/issue."
2466#else
2467#define telnetd_trivial_usage \
2468 "[OPTION]"
2469#define telnetd_full_usage \
2470 "Telnetd listens for incoming TELNET connections on PORT.\n"\
2471 "Options:\n" \
2472 "\t-p PORT\tlisten for connections on PORT (default 23)\n"\
2473 "\t-l LOGIN\texec LOGIN on connect (default /bin/sh)\n"\
2474 "\t-f issue_file\tDisplay issue_file instead of /etc/issue."
2475#endif
2476
2477#define test_trivial_usage \
2478 "EXPRESSION\n or [ EXPRESSION ]"
2479#define test_full_usage \
2480 "Checks file types and compares values returning an exit\n" \
2481 "code determined by the value of EXPRESSION."
2482#define test_example_usage \
2483 "$ test 1 -eq 2\n" \
2484 "$ echo $?\n" \
2485 "1\n" \
2486 "$ test 1 -eq 1\n" \
2487 "$ echo $?\n" \
2488 "0\n" \
2489 "$ [ -d /etc ]\n" \
2490 "$ echo $?\n" \
2491 "0\n" \
2492 "$ [ -d /junk ]\n" \
2493 "$ echo $?\n" \
2494 "1\n"
2495
2496#ifdef CONFIG_FEATURE_TFTP_GET
2497 #define USAGE_TFTP_GET(a) a
2498#else
2499 #define USAGE_TFTP_GET(a)
2500#endif
2501#ifdef CONFIG_FEATURE_TFTP_PUT
2502 #define USAGE_TFTP_PUT(a) a
2503#else
2504 #define USAGE_TFTP_PUT(a)
2505#endif
2506#ifdef CONFIG_FEATURE_TFTP_BLOCKSIZE
2507 #define USAGE_TFTP_BS(a) a
2508#else
2509 #define USAGE_TFTP_BS(a)
2510#endif
2511
2512#define tftp_trivial_usage \
2513 "[OPTION]... HOST [PORT]"
2514#define tftp_full_usage \
2515 "Transfers a file from/to a tftp server using \"octet\" mode.\n\n" \
2516 "Options:\n" \
2517 "\t-l FILE\tLocal FILE.\n" \
2518 "\t-r FILE\tRemote FILE." \
2519 USAGE_TFTP_GET( \
2520 "\n\t-g\tGet file." \
2521 ) \
2522 USAGE_TFTP_PUT( \
2523 "\n\t-p\tPut file." \
2524 ) \
2525 USAGE_TFTP_BS( \
2526 "\n\t-b SIZE\tTransfer blocks of SIZE octets." \
2527 )
2528#define time_trivial_usage \
2529 "[OPTION]... COMMAND [ARGS...]"
2530#define time_full_usage \
2531 "Runs the program COMMAND with arguments ARGS. When COMMAND finishes,\n" \
2532 "COMMAND's resource usage information is displayed\n\n" \
2533 "Options:\n" \
2534 "\t-v\tDisplays verbose resource usage information."
2535
2536#define top_trivial_usage \
2537 "[-d <seconds>]"
2538#define top_full_usage \
2539 "top provides an view of processor activity in real time.\n" \
2540 "This utility reads the status for all processes in /proc each <seconds>\n" \
2541 "and shows the status for however many processes will fit on the screen.\n" \
2542 "This utility will not show processes that are started after program startup,\n" \
2543 "but it will show the EXIT status for and PIDs that exit while it is running."
2544
2545#define touch_trivial_usage \
2546 "[-c] FILE [FILE ...]"
2547#define touch_full_usage \
2548 "Update the last-modified date on the given FILE[s].\n\n" \
2549 "Options:\n" \
2550 "\t-c\tDo not create any files"
2551#define touch_example_usage \
2552 "$ ls -l /tmp/foo\n" \
2553 "/bin/ls: /tmp/foo: No such file or directory\n" \
2554 "$ touch /tmp/foo\n" \
2555 "$ ls -l /tmp/foo\n" \
2556 "-rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo\n"
2557
2558#define tr_trivial_usage \
2559 "[-cds] STRING1 [STRING2]"
2560#define tr_full_usage \
2561 "Translate, squeeze, and/or delete characters from\n" \
2562 "standard input, writing to standard output.\n\n" \
2563 "Options:\n" \
2564 "\t-c\ttake complement of STRING1\n" \
2565 "\t-d\tdelete input characters coded STRING1\n" \
2566 "\t-s\tsqueeze multiple output characters of STRING2 into one character"
2567#define tr_example_usage \
2568 "$ echo "gdkkn vnqkc" | tr [a-y] [b-z]\n" \
2569 "hello world\n"
2570
2571#define traceroute_trivial_usage \
2572 "[-dnrv] [-m max_ttl] [-p port#] [-q nqueries]\n"\
2573 "\t[-s src_addr] [-t tos] [-w wait] host [data size]"
2574#define traceroute_full_usage \
2575 "trace the route ip packets follow going to \"host\"\n" \
2576 "Options:\n" \
2577 "\t-d\tset SO_DEBUG options to socket\n" \
2578 "\t-n\tPrint hop addresses numerically rather than symbolically\n" \
2579 "\t-r\tBypass the normal routing tables and send directly to a host\n" \
2580 "\t-v\tVerbose output\n" \
2581 "\t-m max_ttl\tSet the max time-to-live (max number of hops)\n" \
2582 "\t-p port#\tSet the base UDP port number used in probes\n" \
2583 "\t\t(default is 33434)\n" \
2584 "\t-q nqueries\tSet the number of probes per ``ttl'' to nqueries\n" \
2585 "\t\t(default is 3)\n" \
2586 "\t-s src_addr\tUse the following IP address as the source address\n" \
2587 "\t-t tos\tSet the type-of-service in probe packets to the following value\n" \
2588 "\t\t(default 0)\n" \
2589 "\t-w wait\tSet the time (in seconds) to wait for a response to a probe\n" \
2590 "\t\t(default 3 sec.)."
2591
2592
2593#define true_trivial_usage \
2594 ""
2595#define true_full_usage \
2596 "Return an exit code of TRUE (0)."
2597#define true_example_usage \
2598 "$ true\n" \
2599 "$ echo $?\n" \
2600 "0\n"
2601
2602#define tty_trivial_usage \
2603 ""
2604#define tty_full_usage \
2605 "Print the file name of the terminal connected to standard input.\n\n"\
2606 "Options:\n" \
2607 "\t-s\tprint nothing, only return an exit status"
2608#define tty_example_usage \
2609 "$ tty\n" \
2610 "/dev/tty2\n"
2611
2612#define udhcpc_trivial_usage \
2613 "[-fbnqv] [-c CLIENTID] [-H HOSTNAME] [-i INTERFACE]\n[-p pidfile] [-r IP] [-s script]"
2614#define udhcpc_full_usage \
2615 "\t-c,\t--clientid=CLIENTID\tClient identifier\n" \
2616 "\t-H,\t--hostname=HOSTNAME\tClient hostname\n" \
2617 "\t-h,\t \tAlias for -H\n" \
2618 "\t-f,\t--foreground\tDo not fork after getting lease\n" \
2619 "\t-b,\t--background\tFork to background if lease cannot be immediately negotiated.\n" \
2620 "\t-i,\t--interface=INTERFACE\tInterface to use (default: eth0)\n" \
2621 "\t-n,\t--now\tExit with failure if lease cannot be immediately negotiated.\n" \
2622 "\t-p,\t--pidfile=file\tStore process ID of daemon in file\n" \
2623 "\t-q,\t--quit\tQuit after obtaining lease\n" \
2624 "\t-r,\t--request=IP\tIP address to request (default: none)\n" \
2625 "\t-s,\t--script=file\tRun file at dhcp events (default: /usr/share/udhcpc/default.script)\n" \
2626 "\t-v,\t--version\tDisplay version"
2627
2628#define udhcpd_trivial_usage \
2629 "[configfile]\n" \
2630
2631#define udhcpd_full_usage \
2632 ""
2633
2634#ifdef CONFIG_FEATURE_MOUNT_FORCE
2635 #define USAGE_MOUNT_FORCE(a) a
2636#else
2637 #define USAGE_MOUNT_FORCE(a)
2638#endif
2639#define umount_trivial_usage \
2640 "[flags] FILESYSTEM|DIRECTORY"
2641#define umount_full_usage \
2642 "Unmount file systems\n" \
2643 "\nFlags:\n" "\t-a\tUnmount all file systems" \
2644 USAGE_MTAB(" in /etc/mtab\n\t-n\tDon't erase /etc/mtab entries") \
2645 "\n\t-r\tTry to remount devices as read-only if mount is busy" \
2646 USAGE_MOUNT_FORCE("\n\t-f\tForce umount (i.e., unreachable NFS server)") \
2647 USAGE_MOUNT_LOOP("\n\t-l\tDo not free loop device (if a loop device has been used)")
2648#define umount_example_usage \
2649 "$ umount /dev/hdc1 \n"
2650
2651#define uname_trivial_usage \
2652 "[OPTION]..."
2653#define uname_full_usage \
2654 "Print certain system information. With no OPTION, same as -s.\n\n" \
2655 "Options:\n" \
2656 "\t-a\tprint all information\n" \
2657 "\t-m\tthe machine (hardware) type\n" \
2658 "\t-n\tprint the machine's network node hostname\n" \
2659 "\t-r\tprint the operating system release\n" \
2660 "\t-s\tprint the operating system name\n" \
2661 "\t-p\tprint the host processor type\n" \
2662 "\t-v\tprint the operating system version"
2663#define uname_example_usage \
2664 "$ uname -a\n" \
2665 "Linux debian 2.4.23 #2 Tue Dec 23 17:09:10 MST 2003 i686 GNU/Linux\n"
2666
2667#define uncompress_trivial_usage \
2668 "[-c] [-f] [ name ... ]"
2669#define uncompress_full_usage \
2670 "Uncompress .Z file[s]\n" \
2671 "Options:\n" \
2672 "\t-c\textract to stdout\n" \
2673 "\t-f\tforce overwrite an existing file"
2674
2675#define uniq_trivial_usage \
2676 "[OPTION]... [INPUT [OUTPUT]]"
2677#define uniq_full_usage \
2678 "Discard all but one of successive identical lines from INPUT\n" \
2679 "(or standard input), writing to OUTPUT (or standard output).\n\n" \
2680 "Options:\n" \
2681 "\t-c\tprefix lines by the number of occurrences\n" \
2682 "\t-d\tonly print duplicate lines\n" \
2683 "\t-u\tonly print unique lines\n" \
2684 "\t-f N\tskip the first N fields\n" \
2685 "\t-s N\tskip the first N chars (after any skipped fields)"
2686#define uniq_example_usage \
2687 "$ echo -e \"a\\na\\nb\\nc\\nc\\na\" | sort | uniq\n" \
2688 "a\n" \
2689 "b\n" \
2690 "c\n"
2691
2692#define unix2dos_trivial_usage \
2693 "[option] [FILE]"
2694#define unix2dos_full_usage \
2695 "Converts FILE from unix format to dos format. When no option\n" \
2696 "is given, the input is converted to the opposite output format.\n" \
2697 "When no file is given, uses stdin for input and stdout for output.\n" \
2698 "Options:\n" \
2699 "\t-u\toutput will be in UNIX format\n" \
2700 "\t-d\toutput will be in DOS format"
2701
2702#define unzip_trivial_usage \
2703 "[-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]"
2704#define unzip_full_usage \
2705 "Extracts files from ZIP archives.\n\n" \
2706 "Options:\n" \
2707 "\t-l\tlist archive contents (short form)\n" \
2708 "\t-n\tnever overwrite existing files (default)\n" \
2709 "\t-o\toverwrite files without prompting\n" \
2710 "\t-p\tsend output to stdout\n" \
2711 "\t-q\tbe quiet\n" \
2712 "\t-x\texclude these files\n" \
2713 "\t-d\textract files into this directory"
2714
2715#define uptime_trivial_usage \
2716 ""
2717#define uptime_full_usage \
2718 "Display the time since the last boot."
2719#define uptime_example_usage \
2720 "$ uptime\n" \
2721 " 1:55pm up 2:30, load average: 0.09, 0.04, 0.00\n"
2722
2723#define usleep_trivial_usage \
2724 "N"
2725#define usleep_full_usage \
2726 "Pause for N microseconds."
2727#define usleep_example_usage \
2728 "$ usleep 1000000\n" \
2729 "[pauses for 1 second]\n"
2730
2731#define uudecode_trivial_usage \
2732 "[FILE]..."
2733#define uudecode_full_usage \
2734 "Uudecode a file that is uuencoded.\n\n" \
2735 "Options:\n" \
2736 "\t-o FILE\tdirect output to FILE"
2737#define uudecode_example_usage \
2738 "$ uudecode -o busybox busybox.uu\n" \
2739 "$ ls -l busybox\n" \
2740 "-rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox\n"
2741
2742#define uuencode_trivial_usage \
2743 "[OPTION] [INFILE] REMOTEFILE"
2744#define uuencode_full_usage \
2745 "Uuencode a file.\n\n" \
2746 "Options:\n" \
2747 "\t-m\tuse base64 encoding per RFC1521"
2748#define uuencode_example_usage \
2749 "$ uuencode busybox busybox\n" \
2750 "begin 755 busybox\n" \
2751 "<encoded file snipped>\n" \
2752 "$ uudecode busybox busybox > busybox.uu\n" \
2753 "$\n"
2754
2755#define vconfig_trivial_usage \
2756 "COMMAND [OPTIONS] ..."
2757#define vconfig_full_usage \
2758 "vconfig lets you create and remove virtual ethernet devices.\n\n" \
2759 "Options:\n" \
2760 "\tadd [interface-name] [vlan_id]\n" \
2761 "\trem [vlan-name]\n" \
2762 "\tset_flag [interface-name] [flag-num] [0 | 1]\n" \
2763 "\tset_egress_map [vlan-name] [skb_priority] [vlan_qos]\n" \
2764 "\tset_ingress_map [vlan-name] [skb_priority] [vlan_qos]\n" \
2765 "\tset_name_type [name-type]"
2766
2767#define vi_trivial_usage \
2768 "[OPTION] [FILE]..."
2769#define vi_full_usage \
2770 "edit FILE.\n\n" \
2771 "Options:\n" \
2772 "\t-R\tRead-only- do not write to the file."
2773
2774#define vlock_trivial_usage \
2775 "[OPTIONS]"
2776#define vlock_full_usage \
2777 "Lock a virtual terminal. A password is required to unlock\n" \
2778 "Options:\n" \
2779 "\t-a\tLock all VTs"
2780
2781#define watch_trivial_usage \
2782 "[-n <seconds>] COMMAND..."
2783#define watch_full_usage \
2784 "Executes a program periodically.\n" \
2785 "Options:\n" \
2786 "\t-n\tLoop period in seconds - default is 2."
2787#define watch_example_usage \
2788 "$ watch date\n" \
2789 "Mon Dec 17 10:31:40 GMT 2000\n" \
2790 "Mon Dec 17 10:31:42 GMT 2000\n" \
2791 "Mon Dec 17 10:31:44 GMT 2000"
2792
2793#define watchdog_trivial_usage \
2794 "[-t <seconds>] DEV"
2795#define watchdog_full_usage \
2796 "Periodically write to watchdog device DEV.\n" \
2797 "Options:\n" \
2798 "\t-t\tTimer period in seconds - default is 30."
2799
2800#define wc_trivial_usage \
2801 "[OPTION]... [FILE]..."
2802#define wc_full_usage \
2803 "Print line, word, and byte counts for each FILE, and a total line if\n" \
2804 "more than one FILE is specified. With no FILE, read standard input.\n\n" \
2805 "Options:\n" \
2806 "\t-c\tprint the byte counts\n" \
2807 "\t-l\tprint the newline counts\n" \
2808 "\t-L\tprint the length of the longest line\n" \
2809 "\t-w\tprint the word counts"
2810#define wc_example_usage \
2811 "$ wc /etc/passwd\n" \
2812 " 31 46 1365 /etc/passwd\n"
2813
2814#define wget_trivial_usage \
2815 "[-c|--continue] [-q|--quiet] [-O|--output-document file]\n" \
2816 "\t\t[--header 'header: value'] [-Y|--proxy on/off] [-P DIR] url"
2817#define wget_full_usage \
2818 "wget retrieves files via HTTP or FTP\n\n" \
2819 "Options:\n" \
2820 "\t-c\tcontinue retrieval of aborted transfers\n" \
2821 "\t-q\tquiet mode - do not print\n" \
2822 "\t-P\tSet directory prefix to DIR\n" \
2823 "\t-O\tsave to filename ('-' for stdout)\n" \
2824 "\t-Y\tuse proxy ('on' or 'off')"
2825
2826#define which_trivial_usage \
2827 "[COMMAND ...]"
2828#define which_full_usage \
2829 "Locates a COMMAND."
2830#define which_example_usage \
2831 "$ which login\n" \
2832 "/bin/login\n"
2833
2834#define who_trivial_usage \
2835 " "
2836#define who_full_usage \
2837 "Prints the current user names and related information"
2838
2839#define whoami_trivial_usage \
2840 ""
2841#define whoami_full_usage \
2842 "Prints the user name associated with the current effective user id."
2843
2844#ifdef CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
2845#define USAGE_XARGS_CONFIRMATION(a) a
2846#else
2847#define USAGE_XARGS_CONFIRMATION(a)
2848#endif
2849#ifdef CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
2850#define USAGE_XARGS_TERMOPT(a) a
2851#else
2852#define USAGE_XARGS_TERMOPT(a)
2853#endif
2854#ifdef CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM
2855#define USAGE_XARGS_ZERO_TERM(a) a
2856#else
2857#define USAGE_XARGS_ZERO_TERM(a)
2858#endif
2859
2860
2861#define xargs_trivial_usage \
2862 "[COMMAND] [OPTIONS] [ARGS...]"
2863#define xargs_full_usage \
2864 "Executes COMMAND on every item given by standard input.\n\n" \
2865 "Options:\n" \
2866 USAGE_XARGS_CONFIRMATION("\t-p\tPrompt the user about whether to run each command\n") \
2867 "\t-r\tDo not run command for empty readed lines\n" \
2868 USAGE_XARGS_TERMOPT("\t-x\tExit if the size is exceeded\n") \
2869 USAGE_XARGS_ZERO_TERM("\t-0\tInput filenames are terminated by a null character\n") \
2870 "\t-t\tPrint the command line on stderr before executing it."
2871#define xargs_example_usage \
2872 "$ ls | xargs gzip\n" \
2873 "$ find . -name '*.c' -print | xargs rm\n"
2874
2875#define yes_trivial_usage \
2876 "[OPTION]... [STRING]..."
2877#define yes_full_usage \
2878 "Repeatedly outputs a line with all specified STRING(s), or 'y'."
2879
2880#define zcat_trivial_usage \
2881 "FILE"
2882#define zcat_full_usage \
2883 "Uncompress to stdout."
2884
2885#endif /* __BB_USAGE_H__ */