1 /* vi: set sw=4 ts=4: */
3 * applets.h - a listing of all busybox applets.
5 * If you write a new applet, you need to add an entry to this list to make
10 name - applet name as it is typed on command line
11 name2 - applet name, converted to C (ether-wake: name2 = ether_wake)
12 main - corresponding <applet>_main to call (bzcat: main = bunzip2)
13 l - location to install link to: [/usr]/[s]bin
15 BB_SUID_REQUIRE: will complain if busybox isn't suid
16 and is run by non-root (applet_main() will not be called at all)
17 BB_SUID_DROP: will drop suid prior to applet_main()
18 BB_SUID_MAYBE: neither of the above
19 (every instance of BB_SUID_REQUIRE and BB_SUID_MAYBE
20 needs to be justified in comment)
21 NB: please update FEATURE_SUID help text whenever you add/remove
22 BB_SUID_REQUIRE or BB_SUID_MAYBE applet.
25 #if defined(PROTOTYPES)
26 # define APPLET(name,l,s) int name##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
27 # define APPLET_ODDNAME(name,main,l,s,name2) int main##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
28 # define APPLET_NOEXEC(name,main,l,s,name2) int main##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
29 # define APPLET_NOFORK(name,main,l,s,name2) int main##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
31 #elif defined(NAME_MAIN_CNAME)
32 # define APPLET(name,l,s) name name##_main name
33 # define APPLET_ODDNAME(name,main,l,s,name2) name main##_main name2
34 # define APPLET_NOEXEC(name,main,l,s,name2) name main##_main name2
35 # define APPLET_NOFORK(name,main,l,s,name2) name main##_main name2
37 #elif defined(MAKE_USAGE) && ENABLE_FEATURE_VERBOSE_USAGE
38 # define APPLET(name,l,s) MAKE_USAGE(#name, name##_trivial_usage name##_full_usage)
39 # define APPLET_ODDNAME(name,main,l,s,name2) MAKE_USAGE(#name, name2##_trivial_usage name2##_full_usage)
40 # define APPLET_NOEXEC(name,main,l,s,name2) MAKE_USAGE(#name, name2##_trivial_usage name2##_full_usage)
41 # define APPLET_NOFORK(name,main,l,s,name2) MAKE_USAGE(#name, name2##_trivial_usage name2##_full_usage)
43 #elif defined(MAKE_USAGE) && !ENABLE_FEATURE_VERBOSE_USAGE
44 # define APPLET(name,l,s) MAKE_USAGE(#name, name##_trivial_usage)
45 # define APPLET_ODDNAME(name,main,l,s,name2) MAKE_USAGE(#name, name2##_trivial_usage)
46 # define APPLET_NOEXEC(name,main,l,s,name2) MAKE_USAGE(#name, name2##_trivial_usage)
47 # define APPLET_NOFORK(name,main,l,s,name2) MAKE_USAGE(#name, name2##_trivial_usage)
49 #elif defined(MAKE_LINKS)
50 # define APPLET(name,l,c) LINK l name
51 # define APPLET_ODDNAME(name,main,l,s,name2) LINK l name
52 # define APPLET_NOEXEC(name,main,l,s,name2) LINK l name
53 # define APPLET_NOFORK(name,main,l,s,name2) LINK l name
56 static struct bb_applet applets
[] = { /* name, main, location, need_suid */
57 # define APPLET(name,l,s) { #name, #name, l, s },
58 # define APPLET_ODDNAME(name,main,l,s,name2) { #name, #main, l, s },
59 # define APPLET_NOEXEC(name,main,l,s,name2) { #name, #main, l, s, 1 },
60 # define APPLET_NOFORK(name,main,l,s,name2) { #name, #main, l, s, 1, 1 },
63 #if ENABLE_INSTALL_NO_USR
64 # define BB_DIR_USR_BIN BB_DIR_BIN
65 # define BB_DIR_USR_SBIN BB_DIR_SBIN
70 IF_TEST(APPLET_NOFORK([, test
, BB_DIR_USR_BIN
, BB_SUID_DROP
, test
))
71 IF_TEST(APPLET_NOFORK([[, test
, BB_DIR_USR_BIN
, BB_SUID_DROP
, test
))
72 IF_ACPID(APPLET(acpid
, BB_DIR_SBIN
, BB_SUID_DROP
))
73 IF_ADDGROUP(APPLET(addgroup
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
74 IF_ADDUSER(APPLET(adduser
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
75 IF_ADJTIMEX(APPLET(adjtimex
, BB_DIR_SBIN
, BB_SUID_DROP
))
76 IF_AR(APPLET(ar
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
77 IF_ARP(APPLET(arp
, BB_DIR_SBIN
, BB_SUID_DROP
))
78 IF_ARPING(APPLET(arping
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
79 IF_AWK(APPLET_NOEXEC(awk
, awk
, BB_DIR_USR_BIN
, BB_SUID_DROP
, awk
))
80 IF_BASENAME(APPLET_NOFORK(basename
, basename
, BB_DIR_USR_BIN
, BB_SUID_DROP
, basename
))
81 IF_BBCONFIG(APPLET(bbconfig
, BB_DIR_BIN
, BB_SUID_DROP
))
82 IF_BEEP(APPLET(beep
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
83 IF_BLKID(APPLET(blkid
, BB_DIR_SBIN
, BB_SUID_DROP
))
84 IF_BRCTL(APPLET(brctl
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
85 IF_BZIP2(APPLET(bzip2
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
86 IF_CAL(APPLET(cal
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
87 IF_CAT(APPLET_NOFORK(cat
, cat
, BB_DIR_BIN
, BB_SUID_DROP
, cat
))
88 IF_CATV(APPLET(catv
, BB_DIR_BIN
, BB_SUID_DROP
))
89 IF_CHAT(APPLET(chat
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
90 IF_CHATTR(APPLET(chattr
, BB_DIR_BIN
, BB_SUID_DROP
))
91 IF_CHCON(APPLET(chcon
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
92 IF_CHGRP(APPLET_NOEXEC(chgrp
, chgrp
, BB_DIR_BIN
, BB_SUID_DROP
, chgrp
))
93 IF_CHMOD(APPLET_NOEXEC(chmod
, chmod
, BB_DIR_BIN
, BB_SUID_DROP
, chmod
))
94 IF_CHOWN(APPLET_NOEXEC(chown
, chown
, BB_DIR_BIN
, BB_SUID_DROP
, chown
))
95 IF_CHPASSWD(APPLET(chpasswd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
96 IF_CHPST(APPLET(chpst
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
97 IF_CHROOT(APPLET(chroot
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
98 IF_CHRT(APPLET(chrt
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
99 IF_CHVT(APPLET(chvt
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
100 IF_CKSUM(APPLET_NOEXEC(cksum
, cksum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, cksum
))
101 IF_CLEAR(APPLET(clear
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
102 IF_CMP(APPLET(cmp
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
103 IF_COMM(APPLET(comm
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
104 IF_CP(APPLET_NOEXEC(cp
, cp
, BB_DIR_BIN
, BB_SUID_DROP
, cp
))
105 IF_CPIO(APPLET(cpio
, BB_DIR_BIN
, BB_SUID_DROP
))
106 IF_CROND(APPLET(crond
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
107 /* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */
108 IF_CRONTAB(APPLET(crontab
, BB_DIR_USR_BIN
, BB_SUID_REQUIRE
))
109 IF_CRYPTPW(APPLET(cryptpw
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
110 IF_CUT(APPLET_NOEXEC(cut
, cut
, BB_DIR_USR_BIN
, BB_SUID_DROP
, cut
))
111 IF_DC(APPLET(dc
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
112 IF_DD(APPLET_NOEXEC(dd
, dd
, BB_DIR_BIN
, BB_SUID_DROP
, dd
))
113 IF_DEALLOCVT(APPLET(deallocvt
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
114 IF_DELGROUP(APPLET_ODDNAME(delgroup
, deluser
, BB_DIR_USR_SBIN
, BB_SUID_DROP
, delgroup
))
115 IF_DELUSER(APPLET(deluser
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
116 IF_DEVFSD(APPLET(devfsd
, BB_DIR_SBIN
, BB_SUID_DROP
))
117 IF_DEVMEM(APPLET(devmem
, BB_DIR_SBIN
, BB_SUID_DROP
))
118 IF_DF(APPLET(df
, BB_DIR_BIN
, BB_SUID_DROP
))
119 IF_DHCPRELAY(APPLET(dhcprelay
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
120 IF_DIFF(APPLET(diff
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
121 IF_DIRNAME(APPLET_NOFORK(dirname
, dirname
, BB_DIR_USR_BIN
, BB_SUID_DROP
, dirname
))
122 IF_DMESG(APPLET(dmesg
, BB_DIR_BIN
, BB_SUID_DROP
))
123 IF_DNSD(APPLET(dnsd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
124 IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname
, hostname
, BB_DIR_BIN
, BB_SUID_DROP
, dnsdomainname
))
125 IF_DOS2UNIX(APPLET_NOEXEC(dos2unix
, dos2unix
, BB_DIR_USR_BIN
, BB_SUID_DROP
, dos2unix
))
126 IF_DPKG(APPLET(dpkg
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
127 IF_DPKG_DEB(APPLET_ODDNAME(dpkg
-deb
, dpkg_deb
, BB_DIR_USR_BIN
, BB_SUID_DROP
, dpkg_deb
))
128 IF_DU(APPLET(du
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
129 IF_DUMPKMAP(APPLET(dumpkmap
, BB_DIR_BIN
, BB_SUID_DROP
))
130 IF_DUMPLEASES(APPLET(dumpleases
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
131 //IF_E2FSCK(APPLET(e2fsck, BB_DIR_SBIN, BB_SUID_DROP))
132 //IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, BB_DIR_SBIN, BB_SUID_DROP, e2label))
133 IF_ECHO(APPLET_NOFORK(echo
, echo
, BB_DIR_BIN
, BB_SUID_DROP
, echo
))
134 IF_ED(APPLET(ed
, BB_DIR_BIN
, BB_SUID_DROP
))
135 IF_EJECT(APPLET(eject
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
136 IF_ENV(APPLET_NOEXEC(env
, env
, BB_DIR_USR_BIN
, BB_SUID_DROP
, env
))
137 IF_ENVDIR(APPLET_ODDNAME(envdir
, chpst
, BB_DIR_USR_BIN
, BB_SUID_DROP
, envdir
))
138 IF_ENVUIDGID(APPLET_ODDNAME(envuidgid
, chpst
, BB_DIR_USR_BIN
, BB_SUID_DROP
, envuidgid
))
139 IF_ETHER_WAKE(APPLET_ODDNAME(ether
-wake
, ether_wake
, BB_DIR_USR_SBIN
, BB_SUID_DROP
, ether_wake
))
140 IF_EXPAND(APPLET(expand
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
141 IF_EXPR(APPLET(expr
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
142 IF_FAKEIDENTD(APPLET(fakeidentd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
143 IF_FALSE(APPLET_NOFORK(false, false, BB_DIR_BIN
, BB_SUID_DROP
, false))
144 IF_FBSET(APPLET(fbset
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
145 IF_FBSPLASH(APPLET(fbsplash
, BB_DIR_SBIN
, BB_SUID_DROP
))
146 IF_FDFLUSH(APPLET_ODDNAME(fdflush
, freeramdisk
, BB_DIR_BIN
, BB_SUID_DROP
, fdflush
))
147 IF_FDFORMAT(APPLET(fdformat
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
148 IF_FDISK(APPLET(fdisk
, BB_DIR_SBIN
, BB_SUID_DROP
))
149 IF_FGCONSOLE(APPLET(fgconsole
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
150 /* Benefits from suid root: better access to /dev/BLOCKDEVs: */
151 IF_FINDFS(APPLET(findfs
, BB_DIR_SBIN
, BB_SUID_MAYBE
))
152 IF_FLASH_ERASEALL(APPLET(flash_eraseall
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
153 IF_FLASH_LOCK(APPLET_ODDNAME(flash_lock
, flash_lock_unlock
, BB_DIR_USR_SBIN
, BB_SUID_DROP
, flash_lock
))
154 IF_FLASH_UNLOCK(APPLET_ODDNAME(flash_unlock
, flash_lock_unlock
, BB_DIR_USR_SBIN
, BB_SUID_DROP
, flash_unlock
))
155 IF_FLASHCP(APPLET(flashcp
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
156 IF_FLOCK(APPLET(flock
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
157 IF_FOLD(APPLET_NOEXEC(fold
, fold
, BB_DIR_USR_BIN
, BB_SUID_DROP
, fold
))
158 IF_FREE(APPLET(free
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
159 IF_FREERAMDISK(APPLET(freeramdisk
, BB_DIR_SBIN
, BB_SUID_DROP
))
160 IF_FSCK(APPLET(fsck
, BB_DIR_SBIN
, BB_SUID_DROP
))
161 //IF_E2FSCK(APPLET_ODDNAME(fsck.ext2, e2fsck, BB_DIR_SBIN, BB_SUID_DROP, fsck_ext2))
162 //IF_E2FSCK(APPLET_ODDNAME(fsck.ext3, e2fsck, BB_DIR_SBIN, BB_SUID_DROP, fsck_ext3))
163 IF_FSCK_MINIX(APPLET_ODDNAME(fsck
.minix
, fsck_minix
, BB_DIR_SBIN
, BB_SUID_DROP
, fsck_minix
))
164 IF_FSYNC(APPLET_NOFORK(fsync
, fsync
, BB_DIR_BIN
, BB_SUID_DROP
, fsync
))
165 IF_FTPD(APPLET(ftpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
166 IF_FTPGET(APPLET_ODDNAME(ftpget
, ftpgetput
, BB_DIR_USR_BIN
, BB_SUID_DROP
, ftpget
))
167 IF_FTPPUT(APPLET_ODDNAME(ftpput
, ftpgetput
, BB_DIR_USR_BIN
, BB_SUID_DROP
, ftpput
))
168 IF_FUSER(APPLET(fuser
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
169 IF_GETENFORCE(APPLET(getenforce
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
170 IF_GETOPT(APPLET(getopt
, BB_DIR_BIN
, BB_SUID_DROP
))
171 IF_GETSEBOOL(APPLET(getsebool
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
172 IF_GETTY(APPLET(getty
, BB_DIR_SBIN
, BB_SUID_DROP
))
173 IF_GUNZIP(APPLET(gunzip
, BB_DIR_BIN
, BB_SUID_DROP
))
174 IF_GZIP(APPLET(gzip
, BB_DIR_BIN
, BB_SUID_DROP
))
175 IF_HD(APPLET_NOEXEC(hd
, hexdump
, BB_DIR_USR_BIN
, BB_SUID_DROP
, hd
))
176 IF_HDPARM(APPLET(hdparm
, BB_DIR_SBIN
, BB_SUID_DROP
))
177 IF_HEAD(APPLET_NOEXEC(head
, head
, BB_DIR_USR_BIN
, BB_SUID_DROP
, head
))
178 IF_HEXDUMP(APPLET_NOEXEC(hexdump
, hexdump
, BB_DIR_USR_BIN
, BB_SUID_DROP
, hexdump
))
179 IF_HOSTNAME(APPLET(hostname
, BB_DIR_BIN
, BB_SUID_DROP
))
180 IF_HTTPD(APPLET(httpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
181 IF_HWCLOCK(APPLET(hwclock
, BB_DIR_SBIN
, BB_SUID_DROP
))
182 IF_IFCONFIG(APPLET(ifconfig
, BB_DIR_SBIN
, BB_SUID_DROP
))
183 IF_IFUPDOWN(APPLET_ODDNAME(ifdown
, ifupdown
, BB_DIR_SBIN
, BB_SUID_DROP
, ifdown
))
184 IF_IFENSLAVE(APPLET(ifenslave
, BB_DIR_SBIN
, BB_SUID_DROP
))
185 IF_IFPLUGD(APPLET(ifplugd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
186 IF_IFUPDOWN(APPLET_ODDNAME(ifup
, ifupdown
, BB_DIR_SBIN
, BB_SUID_DROP
, ifup
))
187 IF_INETD(APPLET(inetd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
188 IF_INOTIFYD(APPLET(inotifyd
, BB_DIR_SBIN
, BB_SUID_DROP
))
189 IF_INSTALL(APPLET(install
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
190 IF_IONICE(APPLET(ionice
, BB_DIR_BIN
, BB_SUID_DROP
))
191 #if ENABLE_FEATURE_IP_ADDRESS \
192 || ENABLE_FEATURE_IP_ROUTE \
193 || ENABLE_FEATURE_IP_LINK \
194 || ENABLE_FEATURE_IP_TUNNEL \
195 || ENABLE_FEATURE_IP_RULE
196 IF_IP(APPLET(ip
, BB_DIR_SBIN
, BB_SUID_DROP
))
198 IF_IPADDR(APPLET(ipaddr
, BB_DIR_SBIN
, BB_SUID_DROP
))
199 IF_IPCALC(APPLET(ipcalc
, BB_DIR_BIN
, BB_SUID_DROP
))
200 IF_IPCRM(APPLET(ipcrm
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
201 IF_IPCS(APPLET(ipcs
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
202 IF_IPLINK(APPLET(iplink
, BB_DIR_SBIN
, BB_SUID_DROP
))
203 IF_IPROUTE(APPLET(iproute
, BB_DIR_SBIN
, BB_SUID_DROP
))
204 IF_IPRULE(APPLET(iprule
, BB_DIR_SBIN
, BB_SUID_DROP
))
205 IF_IPTUNNEL(APPLET(iptunnel
, BB_DIR_SBIN
, BB_SUID_DROP
))
206 IF_KBD_MODE(APPLET(kbd_mode
, BB_DIR_BIN
, BB_SUID_DROP
))
207 IF_KILL(APPLET(kill
, BB_DIR_BIN
, BB_SUID_DROP
))
208 IF_KILLALL(APPLET_ODDNAME(killall
, kill
, BB_DIR_USR_BIN
, BB_SUID_DROP
, killall
))
209 IF_KILLALL5(APPLET_ODDNAME(killall5
, kill
, BB_DIR_USR_SBIN
, BB_SUID_DROP
, killall5
))
210 IF_KLOGD(APPLET(klogd
, BB_DIR_SBIN
, BB_SUID_DROP
))
211 IF_LAST(APPLET(last
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
212 //IF_LENGTH(APPLET_NOFORK(length, length, BB_DIR_USR_BIN, BB_SUID_DROP, length))
213 IF_LESS(APPLET(less
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
214 IF_SETARCH(APPLET_ODDNAME(linux32
, setarch
, BB_DIR_BIN
, BB_SUID_DROP
, linux32
))
215 IF_SETARCH(APPLET_ODDNAME(linux64
, setarch
, BB_DIR_BIN
, BB_SUID_DROP
, linux64
))
216 IF_LN(APPLET_NOEXEC(ln
, ln
, BB_DIR_BIN
, BB_SUID_DROP
, ln
))
217 IF_LOAD_POLICY(APPLET(load_policy
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
218 IF_LOADFONT(APPLET(loadfont
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
219 IF_LOADKMAP(APPLET(loadkmap
, BB_DIR_SBIN
, BB_SUID_DROP
))
220 IF_LOGGER(APPLET(logger
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
221 /* Needs to be run by root or be suid root - needs to change uid and gid: */
222 IF_LOGIN(APPLET(login
, BB_DIR_BIN
, BB_SUID_REQUIRE
))
223 IF_LOGNAME(APPLET_NOFORK(logname
, logname
, BB_DIR_USR_BIN
, BB_SUID_DROP
, logname
))
224 IF_LOGREAD(APPLET(logread
, BB_DIR_SBIN
, BB_SUID_DROP
))
225 IF_LOSETUP(APPLET(losetup
, BB_DIR_SBIN
, BB_SUID_DROP
))
226 IF_LPD(APPLET(lpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
227 IF_LPQ(APPLET_ODDNAME(lpq
, lpqr
, BB_DIR_USR_BIN
, BB_SUID_DROP
, lpq
))
228 IF_LPR(APPLET_ODDNAME(lpr
, lpqr
, BB_DIR_USR_BIN
, BB_SUID_DROP
, lpr
))
229 IF_LS(APPLET_NOEXEC(ls
, ls
, BB_DIR_BIN
, BB_SUID_DROP
, ls
))
230 IF_LSATTR(APPLET(lsattr
, BB_DIR_BIN
, BB_SUID_DROP
))
231 IF_LSPCI(APPLET(lspci
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
232 IF_LSUSB(APPLET(lsusb
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
233 IF_UNLZMA(APPLET_ODDNAME(lzcat
, unlzma
, BB_DIR_USR_BIN
, BB_SUID_DROP
, lzcat
))
234 IF_LZMA(APPLET_ODDNAME(lzma
, unlzma
, BB_DIR_USR_BIN
, BB_SUID_DROP
, lzma
))
235 IF_LZOP(APPLET(lzop
, BB_DIR_BIN
, BB_SUID_DROP
))
236 IF_LZOP(APPLET_ODDNAME(lzopcat
, lzop
, BB_DIR_USR_BIN
, BB_SUID_DROP
, lzopcat
))
237 IF_MAKEDEVS(APPLET(makedevs
, BB_DIR_SBIN
, BB_SUID_DROP
))
238 IF_MAKEMIME(APPLET(makemime
, BB_DIR_BIN
, BB_SUID_DROP
))
239 IF_MAN(APPLET(man
, BB_DIR_SBIN
, BB_SUID_DROP
))
240 IF_MATCHPATHCON(APPLET(matchpathcon
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
241 IF_MD5SUM(APPLET_NOEXEC(md5sum
, md5_sha1_sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, md5sum
))
242 IF_MICROCOM(APPLET(microcom
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
243 IF_MKDIR(APPLET_NOFORK(mkdir
, mkdir
, BB_DIR_BIN
, BB_SUID_DROP
, mkdir
))
244 IF_MKFS_VFAT(APPLET_ODDNAME(mkdosfs
, mkfs_vfat
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_vfat
))
245 IF_MKFS_EXT2(APPLET_ODDNAME(mke2fs
, mkfs_ext2
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_ext2
))
246 IF_MKFIFO(APPLET_NOEXEC(mkfifo
, mkfifo
, BB_DIR_USR_BIN
, BB_SUID_DROP
, mkfifo
))
247 IF_MKFS_EXT2(APPLET_ODDNAME(mkfs
.ext2
, mkfs_ext2
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_ext2
))
248 //IF_MKE2FS(APPLET_ODDNAME(mkfs.ext3, mke2fs, BB_DIR_SBIN, BB_SUID_DROP, mkfs_ext3))
249 IF_MKFS_MINIX(APPLET_ODDNAME(mkfs
.minix
, mkfs_minix
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_minix
))
250 IF_MKFS_REISER(APPLET_ODDNAME(mkfs
.reiser
, mkfs_reiser
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_reiser
))
251 IF_MKFS_VFAT(APPLET_ODDNAME(mkfs
.vfat
, mkfs_vfat
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_vfat
))
252 IF_MKNOD(APPLET_NOEXEC(mknod
, mknod
, BB_DIR_BIN
, BB_SUID_DROP
, mknod
))
253 IF_CRYPTPW(APPLET_ODDNAME(mkpasswd
, cryptpw
, BB_DIR_USR_BIN
, BB_SUID_DROP
, mkpasswd
))
254 IF_MKSWAP(APPLET(mkswap
, BB_DIR_SBIN
, BB_SUID_DROP
))
255 IF_MKTEMP(APPLET(mktemp
, BB_DIR_BIN
, BB_SUID_DROP
))
256 IF_MORE(APPLET(more
, BB_DIR_BIN
, BB_SUID_DROP
))
257 /* On full-blown systems, requires suid for user mounts.
258 * But it's not unthinkable to have it available in non-suid flavor on some systems,
259 * for viewing mount table.
260 * Therefore we use BB_SUID_MAYBE instead of BB_SUID_REQUIRE: */
261 IF_MOUNT(APPLET(mount
, BB_DIR_BIN
, IF_DESKTOP(BB_SUID_MAYBE
) IF_NOT_DESKTOP(BB_SUID_DROP
)))
262 IF_MOUNTPOINT(APPLET(mountpoint
, BB_DIR_BIN
, BB_SUID_DROP
))
263 IF_MT(APPLET(mt
, BB_DIR_BIN
, BB_SUID_DROP
))
264 IF_MV(APPLET(mv
, BB_DIR_BIN
, BB_SUID_DROP
))
265 IF_NAMEIF(APPLET(nameif
, BB_DIR_SBIN
, BB_SUID_DROP
))
266 IF_NC(APPLET(nc
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
267 IF_NETSTAT(APPLET(netstat
, BB_DIR_BIN
, BB_SUID_DROP
))
268 IF_NICE(APPLET(nice
, BB_DIR_BIN
, BB_SUID_DROP
))
269 IF_NOHUP(APPLET(nohup
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
270 IF_NSLOOKUP(APPLET(nslookup
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
271 IF_NTPD(APPLET(ntpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
272 IF_OD(APPLET(od
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
273 IF_OPENVT(APPLET(openvt
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
274 //IF_PARSE(APPLET(parse, BB_DIR_USR_BIN, BB_SUID_DROP))
275 /* Needs to be run by root or be suid root - needs to change /etc/{passwd,shadow}: */
276 IF_PASSWD(APPLET(passwd
, BB_DIR_USR_BIN
, BB_SUID_REQUIRE
))
277 IF_PGREP(APPLET(pgrep
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
278 IF_PIDOF(APPLET(pidof
, BB_DIR_BIN
, BB_SUID_DROP
))
279 IF_PIPE_PROGRESS(APPLET(pipe_progress
, BB_DIR_BIN
, BB_SUID_DROP
))
280 IF_PIVOT_ROOT(APPLET(pivot_root
, BB_DIR_SBIN
, BB_SUID_DROP
))
281 IF_PKILL(APPLET_ODDNAME(pkill
, pgrep
, BB_DIR_USR_BIN
, BB_SUID_DROP
, pkill
))
282 IF_POPMAILDIR(APPLET(popmaildir
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
283 IF_PRINTENV(APPLET_NOFORK(printenv
, printenv
, BB_DIR_BIN
, BB_SUID_DROP
, printenv
))
284 IF_PRINTF(APPLET_NOFORK(printf
, printf
, BB_DIR_USR_BIN
, BB_SUID_DROP
, printf
))
285 IF_PS(APPLET(ps
, BB_DIR_BIN
, BB_SUID_DROP
))
286 IF_PSCAN(APPLET(pscan
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
287 IF_PWD(APPLET_NOFORK(pwd
, pwd
, BB_DIR_BIN
, BB_SUID_DROP
, pwd
))
288 IF_RAIDAUTORUN(APPLET(raidautorun
, BB_DIR_SBIN
, BB_SUID_DROP
))
289 IF_RDATE(APPLET(rdate
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
290 IF_RDEV(APPLET(rdev
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
291 IF_READAHEAD(APPLET(readahead
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
292 IF_READLINK(APPLET(readlink
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
293 IF_READPROFILE(APPLET(readprofile
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
294 IF_REALPATH(APPLET(realpath
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
295 IF_REFORMIME(APPLET(reformime
, BB_DIR_BIN
, BB_SUID_DROP
))
296 IF_RENICE(APPLET(renice
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
297 IF_RESET(APPLET(reset
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
298 IF_RESIZE(APPLET(resize
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
299 IF_RESTORECON(APPLET_ODDNAME(restorecon
, setfiles
, BB_DIR_SBIN
, BB_SUID_DROP
, restorecon
))
300 IF_RFKILL(APPLET(rfkill
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
301 IF_RM(APPLET_NOFORK(rm
, rm
, BB_DIR_BIN
, BB_SUID_DROP
, rm
))
302 IF_RMDIR(APPLET_NOFORK(rmdir
, rmdir
, BB_DIR_BIN
, BB_SUID_DROP
, rmdir
))
303 IF_ROUTE(APPLET(route
, BB_DIR_SBIN
, BB_SUID_DROP
))
304 IF_RPM(APPLET(rpm
, BB_DIR_BIN
, BB_SUID_DROP
))
305 IF_RPM2CPIO(APPLET(rpm2cpio
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
306 IF_RTCWAKE(APPLET(rtcwake
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
307 IF_RUN_PARTS(APPLET_ODDNAME(run
-parts
, run_parts
, BB_DIR_BIN
, BB_SUID_DROP
, run_parts
))
308 IF_RUNCON(APPLET(runcon
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
309 IF_RUNLEVEL(APPLET(runlevel
, BB_DIR_SBIN
, BB_SUID_DROP
))
310 IF_RUNSV(APPLET(runsv
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
311 IF_RUNSVDIR(APPLET(runsvdir
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
312 IF_RX(APPLET(rx
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
313 IF_SCRIPT(APPLET(script
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
314 IF_SCRIPTREPLAY(APPLET(scriptreplay
, BB_DIR_BIN
, BB_SUID_DROP
))
315 IF_SED(APPLET(sed
, BB_DIR_BIN
, BB_SUID_DROP
))
316 IF_SELINUXENABLED(APPLET(selinuxenabled
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
317 IF_SENDMAIL(APPLET(sendmail
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
318 IF_SEQ(APPLET_NOFORK(seq
, seq
, BB_DIR_USR_BIN
, BB_SUID_DROP
, seq
))
319 IF_SESTATUS(APPLET(sestatus
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
320 IF_SETARCH(APPLET(setarch
, BB_DIR_BIN
, BB_SUID_DROP
))
321 IF_SETCONSOLE(APPLET(setconsole
, BB_DIR_SBIN
, BB_SUID_DROP
))
322 IF_SETENFORCE(APPLET(setenforce
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
323 IF_SETFILES(APPLET(setfiles
, BB_DIR_SBIN
, BB_SUID_DROP
))
324 IF_SETFONT(APPLET(setfont
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
325 IF_SETKEYCODES(APPLET(setkeycodes
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
326 IF_SETLOGCONS(APPLET(setlogcons
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
327 IF_SETSEBOOL(APPLET(setsebool
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
328 IF_SETSID(APPLET(setsid
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
329 IF_SETUIDGID(APPLET_ODDNAME(setuidgid
, chpst
, BB_DIR_USR_BIN
, BB_SUID_DROP
, setuidgid
))
330 IF_SHA1SUM(APPLET_NOEXEC(sha1sum
, md5_sha1_sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, sha1sum
))
331 IF_SHA3SUM(APPLET_NOEXEC(sha3sum
, md5_sha1_sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, sha3sum
))
332 IF_SHA256SUM(APPLET_NOEXEC(sha256sum
, md5_sha1_sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, sha256sum
))
333 IF_SHA512SUM(APPLET_NOEXEC(sha512sum
, md5_sha1_sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, sha512sum
))
334 IF_SHOWKEY(APPLET(showkey
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
335 IF_SLATTACH(APPLET(slattach
, BB_DIR_SBIN
, BB_SUID_DROP
))
336 /* Do not make this applet NOFORK. It breaks ^C-ing of pauses in shells: */
337 IF_SLEEP(APPLET(sleep
, BB_DIR_BIN
, BB_SUID_DROP
))
338 IF_SOFTLIMIT(APPLET_ODDNAME(softlimit
, chpst
, BB_DIR_USR_BIN
, BB_SUID_DROP
, softlimit
))
339 IF_SORT(APPLET_NOEXEC(sort
, sort
, BB_DIR_USR_BIN
, BB_SUID_DROP
, sort
))
340 IF_SPLIT(APPLET(split
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
341 IF_START_STOP_DAEMON(APPLET_ODDNAME(start
-stop
-daemon
, start_stop_daemon
, BB_DIR_SBIN
, BB_SUID_DROP
, start_stop_daemon
))
342 IF_STAT(APPLET(stat
, BB_DIR_BIN
, BB_SUID_DROP
))
343 IF_STRINGS(APPLET(strings
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
344 IF_STTY(APPLET(stty
, BB_DIR_BIN
, BB_SUID_DROP
))
345 /* Needs to be run by root or be suid root - needs to change uid and gid: */
346 IF_SU(APPLET(su
, BB_DIR_BIN
, BB_SUID_REQUIRE
))
347 IF_SULOGIN(APPLET(sulogin
, BB_DIR_SBIN
, BB_SUID_DROP
))
348 IF_SUM(APPLET(sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
349 IF_SV(APPLET(sv
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
350 IF_SVLOGD(APPLET(svlogd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
351 IF_SWAPONOFF(APPLET_ODDNAME(swapoff
, swap_on_off
, BB_DIR_SBIN
, BB_SUID_DROP
, swapoff
))
352 IF_SWAPONOFF(APPLET_ODDNAME(swapon
, swap_on_off
, BB_DIR_SBIN
, BB_SUID_DROP
, swapon
))
353 IF_SWITCH_ROOT(APPLET(switch_root
, BB_DIR_SBIN
, BB_SUID_DROP
))
354 IF_SYNC(APPLET_NOFORK(sync
, sync
, BB_DIR_BIN
, BB_SUID_DROP
, sync
))
355 IF_BB_SYSCTL(APPLET(sysctl
, BB_DIR_SBIN
, BB_SUID_DROP
))
356 IF_SYSLOGD(APPLET(syslogd
, BB_DIR_SBIN
, BB_SUID_DROP
))
357 IF_TAC(APPLET_NOEXEC(tac
, tac
, BB_DIR_USR_BIN
, BB_SUID_DROP
, tac
))
358 IF_TAIL(APPLET(tail
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
359 IF_TAR(APPLET(tar
, BB_DIR_BIN
, BB_SUID_DROP
))
360 IF_TASKSET(APPLET(taskset
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
361 /* IF_TC(APPLET(tc, BB_DIR_SBIN, BB_SUID_DROP)) */
362 IF_TCPSVD(APPLET_ODDNAME(tcpsvd
, tcpudpsvd
, BB_DIR_USR_BIN
, BB_SUID_DROP
, tcpsvd
))
363 IF_TEE(APPLET(tee
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
364 IF_TELNET(APPLET(telnet
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
365 IF_TELNETD(APPLET(telnetd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
366 IF_TEST(APPLET_NOFORK(test
, test
, BB_DIR_USR_BIN
, BB_SUID_DROP
, test
))
367 #if ENABLE_FEATURE_TFTP_GET || ENABLE_FEATURE_TFTP_PUT
368 IF_TFTP(APPLET(tftp
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
369 IF_TFTPD(APPLET(tftpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
371 IF_TIME(APPLET(time
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
372 IF_TIMEOUT(APPLET(timeout
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
373 IF_TOP(APPLET(top
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
374 IF_TR(APPLET(tr
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
375 /* Needs socket(AF_INET, SOCK_RAW, IPPROTO_ICMP), therefore BB_SUID_MAYBE: */
376 IF_TRACEROUTE(APPLET(traceroute
, BB_DIR_USR_BIN
, BB_SUID_MAYBE
))
377 IF_TRACEROUTE6(APPLET(traceroute6
, BB_DIR_USR_BIN
, BB_SUID_MAYBE
))
378 IF_TRUE(APPLET_NOFORK(true, true, BB_DIR_BIN
, BB_SUID_DROP
, true))
379 IF_TTY(APPLET(tty
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
380 IF_TTYSIZE(APPLET(ttysize
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
381 IF_TUNCTL(APPLET(tunctl
, BB_DIR_SBIN
, BB_SUID_DROP
))
382 IF_TUNE2FS(APPLET(tune2fs
, BB_DIR_SBIN
, BB_SUID_DROP
))
383 IF_UDHCPC(APPLET(udhcpc
, BB_DIR_SBIN
, BB_SUID_DROP
))
384 IF_UDHCPC_OLD(APPLET(udhcpc
, BB_DIR_SBIN
, BB_SUID_DROP
))
385 IF_UDHCPD(APPLET(udhcpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
386 IF_UDPSVD(APPLET_ODDNAME(udpsvd
, tcpudpsvd
, BB_DIR_USR_BIN
, BB_SUID_DROP
, udpsvd
))
387 IF_UMOUNT(APPLET(umount
, BB_DIR_BIN
, BB_SUID_DROP
))
388 IF_UNAME(APPLET(uname
, BB_DIR_BIN
, BB_SUID_DROP
))
389 IF_UNCOMPRESS(APPLET(uncompress
, BB_DIR_BIN
, BB_SUID_DROP
))
390 IF_UNEXPAND(APPLET_ODDNAME(unexpand
, expand
, BB_DIR_USR_BIN
, BB_SUID_DROP
, unexpand
))
391 IF_UNIQ(APPLET(uniq
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
392 IF_UNIX2DOS(APPLET_NOEXEC(unix2dos
, dos2unix
, BB_DIR_USR_BIN
, BB_SUID_DROP
, unix2dos
))
393 IF_UNXZ(APPLET(unxz
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
394 IF_UNLZMA(APPLET(unlzma
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
395 IF_LZOP(APPLET_ODDNAME(unlzop
, lzop
, BB_DIR_USR_BIN
, BB_SUID_DROP
, unlzop
))
396 IF_UNZIP(APPLET(unzip
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
397 IF_UPTIME(APPLET(uptime
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
398 IF_USLEEP(APPLET_NOFORK(usleep
, usleep
, BB_DIR_BIN
, BB_SUID_DROP
, usleep
))
399 IF_UUDECODE(APPLET(uudecode
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
400 IF_UUENCODE(APPLET(uuencode
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
401 IF_VCONFIG(APPLET(vconfig
, BB_DIR_SBIN
, BB_SUID_DROP
))
402 /* Needs to be run by root or be suid root - needs to change uid and gid: */
403 IF_VLOCK(APPLET(vlock
, BB_DIR_USR_BIN
, BB_SUID_REQUIRE
))
404 IF_VOLNAME(APPLET(volname
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
405 /* Needs to be run by root or be suid root - needs to write to /dev/TTY: */
406 IF_WALL(APPLET(wall
, BB_DIR_USR_BIN
, BB_SUID_REQUIRE
))
407 IF_WATCH(APPLET(watch
, BB_DIR_BIN
, BB_SUID_DROP
))
408 IF_WATCHDOG(APPLET(watchdog
, BB_DIR_SBIN
, BB_SUID_DROP
))
409 IF_WC(APPLET(wc
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
410 IF_WGET(APPLET(wget
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
411 IF_WHICH(APPLET(which
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
412 IF_WHOAMI(APPLET_NOFORK(whoami
, whoami
, BB_DIR_USR_BIN
, BB_SUID_DROP
, whoami
))
413 IF_UNXZ(APPLET_ODDNAME(xzcat
, unxz
, BB_DIR_USR_BIN
, BB_SUID_DROP
, xzcat
))
414 IF_XZ(APPLET_ODDNAME(xz
, unxz
, BB_DIR_USR_BIN
, BB_SUID_DROP
, xz
))
415 IF_YES(APPLET_NOFORK(yes
, yes
, BB_DIR_USR_BIN
, BB_SUID_DROP
, yes
))
416 IF_GUNZIP(APPLET_ODDNAME(zcat
, gunzip
, BB_DIR_BIN
, BB_SUID_DROP
, zcat
))
417 IF_ZCIP(APPLET(zcip
, BB_DIR_SBIN
, BB_SUID_DROP
))
419 #if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE)
424 #undef APPLET_ODDNAME