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 help - applet name, converted to C (ether-wake: help = 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,help) int main##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
28 # define APPLET_NOEXEC(name,main,l,s,help) int main##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
29 # define APPLET_NOFORK(name,main,l,s,help) int main##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
31 #elif defined(NAME_MAIN)
32 # define APPLET(name,l,s) name name##_main
33 # define APPLET_ODDNAME(name,main,l,s,help) name main##_main
34 # define APPLET_NOEXEC(name,main,l,s,help) name main##_main
35 # define APPLET_NOFORK(name,main,l,s,help) name main##_main
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,help) MAKE_USAGE(#name, help##_trivial_usage help##_full_usage)
40 # define APPLET_NOEXEC(name,main,l,s,help) MAKE_USAGE(#name, help##_trivial_usage help##_full_usage)
41 # define APPLET_NOFORK(name,main,l,s,help) MAKE_USAGE(#name, help##_trivial_usage help##_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,help) MAKE_USAGE(#name, help##_trivial_usage)
46 # define APPLET_NOEXEC(name,main,l,s,help) MAKE_USAGE(#name, help##_trivial_usage)
47 # define APPLET_NOFORK(name,main,l,s,help) MAKE_USAGE(#name, help##_trivial_usage)
49 #elif defined(MAKE_LINKS)
50 # define APPLET(name,l,c) LINK l name
51 # define APPLET_ODDNAME(name,main,l,s,help) LINK l name
52 # define APPLET_NOEXEC(name,main,l,s,help) LINK l name
53 # define APPLET_NOFORK(name,main,l,s,help) LINK l name
55 #elif defined(MAKE_SUID)
56 # define APPLET(name,l,s) SUID s l name
57 # define APPLET_ODDNAME(name,main,l,s,help) SUID s l name
58 # define APPLET_NOEXEC(name,main,l,s,help) SUID s l name
59 # define APPLET_NOFORK(name,main,l,s,help) SUID s l name
62 static struct bb_applet applets
[] = { /* name, main, location, need_suid */
63 # define APPLET(name,l,s) { #name, #name, l, s },
64 # define APPLET_ODDNAME(name,main,l,s,help) { #name, #main, l, s },
65 # define APPLET_NOEXEC(name,main,l,s,help) { #name, #main, l, s, 1 },
66 # define APPLET_NOFORK(name,main,l,s,help) { #name, #main, l, s, 1, 1 },
69 #if ENABLE_INSTALL_NO_USR
70 # define BB_DIR_USR_BIN BB_DIR_BIN
71 # define BB_DIR_USR_SBIN BB_DIR_SBIN
76 IF_TEST(APPLET_NOFORK([, test
, BB_DIR_USR_BIN
, BB_SUID_DROP
, test
))
77 IF_TEST(APPLET_NOFORK([[, test
, BB_DIR_USR_BIN
, BB_SUID_DROP
, test
))
78 IF_ACPID(APPLET(acpid
, BB_DIR_SBIN
, BB_SUID_DROP
))
79 IF_ADJTIMEX(APPLET(adjtimex
, BB_DIR_SBIN
, BB_SUID_DROP
))
80 IF_ARP(APPLET(arp
, BB_DIR_SBIN
, BB_SUID_DROP
))
81 IF_ARPING(APPLET(arping
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
82 IF_BASENAME(APPLET_NOFORK(basename
, basename
, BB_DIR_USR_BIN
, BB_SUID_DROP
, basename
))
83 IF_BBCONFIG(APPLET(bbconfig
, BB_DIR_BIN
, BB_SUID_DROP
))
84 IF_BEEP(APPLET(beep
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
85 IF_BLKID(APPLET(blkid
, BB_DIR_SBIN
, BB_SUID_DROP
))
86 IF_BRCTL(APPLET(brctl
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
87 IF_CAL(APPLET(cal
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
88 IF_CAT(APPLET_NOFORK(cat
, cat
, BB_DIR_BIN
, BB_SUID_DROP
, cat
))
89 IF_CATV(APPLET(catv
, BB_DIR_BIN
, BB_SUID_DROP
))
90 IF_CHAT(APPLET(chat
, BB_DIR_USR_SBIN
, 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_CHROOT(APPLET(chroot
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
96 IF_CHRT(APPLET(chrt
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
97 IF_CHVT(APPLET(chvt
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
98 IF_CKSUM(APPLET_NOEXEC(cksum
, cksum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, cksum
))
99 IF_CLEAR(APPLET(clear
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
100 IF_COMM(APPLET(comm
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
101 IF_CP(APPLET_NOEXEC(cp
, cp
, BB_DIR_BIN
, BB_SUID_DROP
, cp
))
102 /* Needs to be run by root or be suid root - needs to change /var/spool/cron* files: */
103 IF_CRONTAB(APPLET(crontab
, BB_DIR_USR_BIN
, BB_SUID_REQUIRE
))
104 IF_CUT(APPLET_NOEXEC(cut
, cut
, BB_DIR_USR_BIN
, BB_SUID_DROP
, cut
))
105 IF_DC(APPLET(dc
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
106 IF_DD(APPLET_NOEXEC(dd
, dd
, BB_DIR_BIN
, BB_SUID_DROP
, dd
))
107 IF_DEALLOCVT(APPLET(deallocvt
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
108 IF_DEVFSD(APPLET(devfsd
, BB_DIR_SBIN
, BB_SUID_DROP
))
109 IF_DEVMEM(APPLET(devmem
, BB_DIR_SBIN
, BB_SUID_DROP
))
110 IF_DF(APPLET(df
, BB_DIR_BIN
, BB_SUID_DROP
))
111 IF_DHCPRELAY(APPLET(dhcprelay
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
112 IF_DIRNAME(APPLET_NOFORK(dirname
, dirname
, BB_DIR_USR_BIN
, BB_SUID_DROP
, dirname
))
113 IF_DMESG(APPLET(dmesg
, BB_DIR_BIN
, BB_SUID_DROP
))
114 IF_DNSD(APPLET(dnsd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
115 IF_HOSTNAME(APPLET_ODDNAME(dnsdomainname
, hostname
, BB_DIR_BIN
, BB_SUID_DROP
, dnsdomainname
))
116 IF_DOS2UNIX(APPLET_NOEXEC(dos2unix
, dos2unix
, BB_DIR_USR_BIN
, BB_SUID_DROP
, dos2unix
))
117 IF_DU(APPLET(du
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
118 IF_DUMPKMAP(APPLET(dumpkmap
, BB_DIR_BIN
, BB_SUID_DROP
))
119 IF_DUMPLEASES(APPLET(dumpleases
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
120 //IF_E2FSCK(APPLET(e2fsck, BB_DIR_SBIN, BB_SUID_DROP))
121 //IF_E2LABEL(APPLET_ODDNAME(e2label, tune2fs, BB_DIR_SBIN, BB_SUID_DROP, e2label))
122 IF_ECHO(APPLET_NOFORK(echo
, echo
, BB_DIR_BIN
, BB_SUID_DROP
, echo
))
123 IF_EJECT(APPLET(eject
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
124 IF_ENV(APPLET_NOEXEC(env
, env
, BB_DIR_USR_BIN
, BB_SUID_DROP
, env
))
125 IF_ETHER_WAKE(APPLET_ODDNAME(ether
-wake
, ether_wake
, BB_DIR_USR_SBIN
, BB_SUID_DROP
, ether_wake
))
126 IF_EXPAND(APPLET(expand
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
127 IF_EXPR(APPLET(expr
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
128 IF_FAKEIDENTD(APPLET(fakeidentd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
129 IF_FALSE(APPLET_NOFORK(false, false, BB_DIR_BIN
, BB_SUID_DROP
, false))
130 IF_FBSET(APPLET(fbset
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
131 IF_FBSPLASH(APPLET(fbsplash
, BB_DIR_SBIN
, BB_SUID_DROP
))
132 IF_FDFLUSH(APPLET_ODDNAME(fdflush
, freeramdisk
, BB_DIR_BIN
, BB_SUID_DROP
, fdflush
))
133 IF_FDFORMAT(APPLET(fdformat
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
134 IF_FDISK(APPLET(fdisk
, BB_DIR_SBIN
, BB_SUID_DROP
))
135 IF_FGCONSOLE(APPLET(fgconsole
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
136 /* Benefits from suid root: better access to /dev/BLOCKDEVs: */
137 IF_FINDFS(APPLET(findfs
, BB_DIR_SBIN
, BB_SUID_MAYBE
))
138 IF_FLASH_ERASEALL(APPLET(flash_eraseall
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
139 IF_FLASH_LOCK(APPLET_ODDNAME(flash_lock
, flash_lock_unlock
, BB_DIR_USR_SBIN
, BB_SUID_DROP
, flash_lock
))
140 IF_FLASH_UNLOCK(APPLET_ODDNAME(flash_unlock
, flash_lock_unlock
, BB_DIR_USR_SBIN
, BB_SUID_DROP
, flash_unlock
))
141 IF_FLASHCP(APPLET(flashcp
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
142 IF_FLOCK(APPLET(flock
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
143 IF_FOLD(APPLET_NOEXEC(fold
, fold
, BB_DIR_USR_BIN
, BB_SUID_DROP
, fold
))
144 IF_FREE(APPLET(free
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
145 IF_FREERAMDISK(APPLET(freeramdisk
, BB_DIR_SBIN
, BB_SUID_DROP
))
146 //IF_E2FSCK(APPLET_ODDNAME(fsck.ext2, e2fsck, BB_DIR_SBIN, BB_SUID_DROP, fsck_ext2))
147 //IF_E2FSCK(APPLET_ODDNAME(fsck.ext3, e2fsck, BB_DIR_SBIN, BB_SUID_DROP, fsck_ext3))
148 IF_FSCK_MINIX(APPLET_ODDNAME(fsck
.minix
, fsck_minix
, BB_DIR_SBIN
, BB_SUID_DROP
, fsck_minix
))
149 IF_FSYNC(APPLET_NOFORK(fsync
, fsync
, BB_DIR_BIN
, BB_SUID_DROP
, fsync
))
150 IF_FTPD(APPLET(ftpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
151 IF_FTPGET(APPLET_ODDNAME(ftpget
, ftpgetput
, BB_DIR_USR_BIN
, BB_SUID_DROP
, ftpget
))
152 IF_FTPPUT(APPLET_ODDNAME(ftpput
, ftpgetput
, BB_DIR_USR_BIN
, BB_SUID_DROP
, ftpput
))
153 IF_FUSER(APPLET(fuser
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
154 IF_GETENFORCE(APPLET(getenforce
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
155 IF_GETOPT(APPLET(getopt
, BB_DIR_BIN
, BB_SUID_DROP
))
156 IF_GETSEBOOL(APPLET(getsebool
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
157 IF_HD(APPLET_NOEXEC(hd
, hexdump
, BB_DIR_USR_BIN
, BB_SUID_DROP
, hd
))
158 IF_HDPARM(APPLET(hdparm
, BB_DIR_SBIN
, BB_SUID_DROP
))
159 IF_HEAD(APPLET_NOEXEC(head
, head
, BB_DIR_USR_BIN
, BB_SUID_DROP
, head
))
160 IF_HEXDUMP(APPLET_NOEXEC(hexdump
, hexdump
, BB_DIR_USR_BIN
, BB_SUID_DROP
, hexdump
))
161 IF_HOSTNAME(APPLET(hostname
, BB_DIR_BIN
, BB_SUID_DROP
))
162 IF_HTTPD(APPLET(httpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
163 IF_HWCLOCK(APPLET(hwclock
, BB_DIR_SBIN
, BB_SUID_DROP
))
164 IF_IFCONFIG(APPLET(ifconfig
, BB_DIR_SBIN
, BB_SUID_DROP
))
165 IF_IFUPDOWN(APPLET_ODDNAME(ifdown
, ifupdown
, BB_DIR_SBIN
, BB_SUID_DROP
, ifdown
))
166 IF_IFENSLAVE(APPLET(ifenslave
, BB_DIR_SBIN
, BB_SUID_DROP
))
167 IF_IFPLUGD(APPLET(ifplugd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
168 IF_IFUPDOWN(APPLET_ODDNAME(ifup
, ifupdown
, BB_DIR_SBIN
, BB_SUID_DROP
, ifup
))
169 IF_INETD(APPLET(inetd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
170 IF_INOTIFYD(APPLET(inotifyd
, BB_DIR_SBIN
, BB_SUID_DROP
))
171 IF_INSTALL(APPLET(install
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
172 IF_IONICE(APPLET(ionice
, BB_DIR_BIN
, BB_SUID_DROP
))
173 #if ENABLE_FEATURE_IP_ADDRESS \
174 || ENABLE_FEATURE_IP_ROUTE \
175 || ENABLE_FEATURE_IP_LINK \
176 || ENABLE_FEATURE_IP_TUNNEL \
177 || ENABLE_FEATURE_IP_RULE
178 IF_IP(APPLET(ip
, BB_DIR_SBIN
, BB_SUID_DROP
))
180 IF_IPADDR(APPLET(ipaddr
, BB_DIR_SBIN
, BB_SUID_DROP
))
181 IF_IPCALC(APPLET(ipcalc
, BB_DIR_BIN
, BB_SUID_DROP
))
182 IF_IPCRM(APPLET(ipcrm
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
183 IF_IPCS(APPLET(ipcs
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
184 IF_IPLINK(APPLET(iplink
, BB_DIR_SBIN
, BB_SUID_DROP
))
185 IF_IPROUTE(APPLET(iproute
, BB_DIR_SBIN
, BB_SUID_DROP
))
186 IF_IPRULE(APPLET(iprule
, BB_DIR_SBIN
, BB_SUID_DROP
))
187 IF_IPTUNNEL(APPLET(iptunnel
, BB_DIR_SBIN
, BB_SUID_DROP
))
188 IF_KBD_MODE(APPLET(kbd_mode
, BB_DIR_BIN
, BB_SUID_DROP
))
189 IF_KILL(APPLET(kill
, BB_DIR_BIN
, BB_SUID_DROP
))
190 IF_KILLALL(APPLET_ODDNAME(killall
, kill
, BB_DIR_USR_BIN
, BB_SUID_DROP
, killall
))
191 IF_KILLALL5(APPLET_ODDNAME(killall5
, kill
, BB_DIR_USR_SBIN
, BB_SUID_DROP
, killall5
))
192 IF_LAST(APPLET(last
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
193 //IF_LENGTH(APPLET_NOFORK(length, length, BB_DIR_USR_BIN, BB_SUID_DROP, length))
194 IF_LESS(APPLET(less
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
195 IF_LN(APPLET_NOEXEC(ln
, ln
, BB_DIR_BIN
, BB_SUID_DROP
, ln
))
196 IF_LOAD_POLICY(APPLET(load_policy
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
197 IF_LOADFONT(APPLET(loadfont
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
198 IF_LOADKMAP(APPLET(loadkmap
, BB_DIR_SBIN
, BB_SUID_DROP
))
199 IF_LOGNAME(APPLET_NOFORK(logname
, logname
, BB_DIR_USR_BIN
, BB_SUID_DROP
, logname
))
200 IF_LOSETUP(APPLET(losetup
, BB_DIR_SBIN
, BB_SUID_DROP
))
201 IF_LS(APPLET_NOEXEC(ls
, ls
, BB_DIR_BIN
, BB_SUID_DROP
, ls
))
202 IF_LSPCI(APPLET(lspci
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
203 IF_LSUSB(APPLET(lsusb
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
204 IF_MAKEDEVS(APPLET(makedevs
, BB_DIR_SBIN
, BB_SUID_DROP
))
205 IF_MAKEMIME(APPLET(makemime
, BB_DIR_BIN
, BB_SUID_DROP
))
206 IF_MAN(APPLET(man
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
207 IF_MATCHPATHCON(APPLET(matchpathcon
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
208 IF_MD5SUM(APPLET_NOEXEC(md5sum
, md5_sha1_sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, md5sum
))
209 IF_MICROCOM(APPLET(microcom
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
210 IF_MKDIR(APPLET_NOFORK(mkdir
, mkdir
, BB_DIR_BIN
, BB_SUID_DROP
, mkdir
))
211 IF_MKFS_VFAT(APPLET_ODDNAME(mkdosfs
, mkfs_vfat
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_vfat
))
212 IF_MKFS_EXT2(APPLET_ODDNAME(mke2fs
, mkfs_ext2
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_ext2
))
213 IF_MKFIFO(APPLET_NOEXEC(mkfifo
, mkfifo
, BB_DIR_USR_BIN
, BB_SUID_DROP
, mkfifo
))
214 IF_MKFS_EXT2(APPLET_ODDNAME(mkfs
.ext2
, mkfs_ext2
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_ext2
))
215 //IF_MKE2FS(APPLET_ODDNAME(mkfs.ext3, mke2fs, BB_DIR_SBIN, BB_SUID_DROP, mkfs_ext3))
216 IF_MKFS_MINIX(APPLET_ODDNAME(mkfs
.minix
, mkfs_minix
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_minix
))
217 IF_MKFS_REISER(APPLET_ODDNAME(mkfs
.reiser
, mkfs_reiser
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_reiser
))
218 IF_MKFS_VFAT(APPLET_ODDNAME(mkfs
.vfat
, mkfs_vfat
, BB_DIR_SBIN
, BB_SUID_DROP
, mkfs_vfat
))
219 IF_MKNOD(APPLET_NOEXEC(mknod
, mknod
, BB_DIR_BIN
, BB_SUID_DROP
, mknod
))
220 IF_MKSWAP(APPLET(mkswap
, BB_DIR_SBIN
, BB_SUID_DROP
))
221 IF_MORE(APPLET(more
, BB_DIR_BIN
, BB_SUID_DROP
))
222 /* On full-blown systems, requires suid for user mounts.
223 * But it's not unthinkable to have it available in non-suid flavor on some systems,
224 * for viewing mount table.
225 * Therefore we use BB_SUID_MAYBE instead of BB_SUID_REQUIRE: */
226 IF_MOUNT(APPLET(mount
, BB_DIR_BIN
, IF_DESKTOP(BB_SUID_MAYBE
) IF_NOT_DESKTOP(BB_SUID_DROP
)))
227 IF_MOUNTPOINT(APPLET(mountpoint
, BB_DIR_BIN
, BB_SUID_DROP
))
228 IF_MT(APPLET(mt
, BB_DIR_BIN
, BB_SUID_DROP
))
229 IF_MV(APPLET(mv
, BB_DIR_BIN
, BB_SUID_DROP
))
230 IF_NAMEIF(APPLET(nameif
, BB_DIR_SBIN
, BB_SUID_DROP
))
231 IF_NC(APPLET(nc
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
232 IF_NETSTAT(APPLET(netstat
, BB_DIR_BIN
, BB_SUID_DROP
))
233 IF_NICE(APPLET(nice
, BB_DIR_BIN
, BB_SUID_DROP
))
234 IF_NOHUP(APPLET(nohup
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
235 IF_NSLOOKUP(APPLET(nslookup
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
236 IF_NTPD(APPLET(ntpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
237 IF_OD(APPLET(od
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
238 IF_OPENVT(APPLET(openvt
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
239 //IF_PARSE(APPLET(parse, BB_DIR_USR_BIN, BB_SUID_DROP))
240 IF_PGREP(APPLET(pgrep
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
241 IF_PIDOF(APPLET(pidof
, BB_DIR_BIN
, BB_SUID_DROP
))
242 IF_PIVOT_ROOT(APPLET(pivot_root
, BB_DIR_SBIN
, BB_SUID_DROP
))
243 IF_PKILL(APPLET_ODDNAME(pkill
, pgrep
, BB_DIR_USR_BIN
, BB_SUID_DROP
, pkill
))
244 IF_POPMAILDIR(APPLET(popmaildir
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
245 IF_PRINTENV(APPLET_NOFORK(printenv
, printenv
, BB_DIR_BIN
, BB_SUID_DROP
, printenv
))
246 IF_PRINTF(APPLET_NOFORK(printf
, printf
, BB_DIR_USR_BIN
, BB_SUID_DROP
, printf
))
247 IF_PS(APPLET(ps
, BB_DIR_BIN
, BB_SUID_DROP
))
248 IF_PSCAN(APPLET(pscan
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
249 IF_PWD(APPLET_NOFORK(pwd
, pwd
, BB_DIR_BIN
, BB_SUID_DROP
, pwd
))
250 IF_RAIDAUTORUN(APPLET(raidautorun
, BB_DIR_SBIN
, BB_SUID_DROP
))
251 IF_RDATE(APPLET(rdate
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
252 IF_RDEV(APPLET(rdev
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
253 IF_READAHEAD(APPLET(readahead
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
254 IF_READLINK(APPLET(readlink
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
255 IF_READPROFILE(APPLET(readprofile
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
256 IF_REALPATH(APPLET(realpath
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
257 IF_REFORMIME(APPLET(reformime
, BB_DIR_BIN
, BB_SUID_DROP
))
258 IF_RENICE(APPLET(renice
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
259 IF_RESET(APPLET(reset
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
260 IF_RESIZE(APPLET(resize
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
261 IF_RESTORECON(APPLET_ODDNAME(restorecon
, setfiles
, BB_DIR_SBIN
, BB_SUID_DROP
, restorecon
))
262 IF_RM(APPLET_NOFORK(rm
, rm
, BB_DIR_BIN
, BB_SUID_DROP
, rm
))
263 IF_RMDIR(APPLET_NOFORK(rmdir
, rmdir
, BB_DIR_BIN
, BB_SUID_DROP
, rmdir
))
264 IF_ROUTE(APPLET(route
, BB_DIR_SBIN
, BB_SUID_DROP
))
265 IF_RTCWAKE(APPLET(rtcwake
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
266 IF_RUNCON(APPLET(runcon
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
267 IF_RUNLEVEL(APPLET(runlevel
, BB_DIR_SBIN
, BB_SUID_DROP
))
268 IF_RX(APPLET(rx
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
269 IF_SCRIPT(APPLET(script
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
270 IF_SCRIPTREPLAY(APPLET(scriptreplay
, BB_DIR_BIN
, BB_SUID_DROP
))
271 IF_SELINUXENABLED(APPLET(selinuxenabled
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
272 IF_SENDMAIL(APPLET(sendmail
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
273 IF_SEQ(APPLET_NOFORK(seq
, seq
, BB_DIR_USR_BIN
, BB_SUID_DROP
, seq
))
274 IF_SESTATUS(APPLET(sestatus
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
275 IF_SETCONSOLE(APPLET(setconsole
, BB_DIR_SBIN
, BB_SUID_DROP
))
276 IF_SETENFORCE(APPLET(setenforce
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
277 IF_SETFILES(APPLET(setfiles
, BB_DIR_SBIN
, BB_SUID_DROP
))
278 IF_SETFONT(APPLET(setfont
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
279 IF_SETKEYCODES(APPLET(setkeycodes
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
280 IF_SETLOGCONS(APPLET(setlogcons
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
281 IF_SETSEBOOL(APPLET(setsebool
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
282 IF_SETSID(APPLET(setsid
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
283 IF_SHA1SUM(APPLET_NOEXEC(sha1sum
, md5_sha1_sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, sha1sum
))
284 IF_SHA3SUM(APPLET_NOEXEC(sha3sum
, md5_sha1_sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, sha3sum
))
285 IF_SHA256SUM(APPLET_NOEXEC(sha256sum
, md5_sha1_sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, sha256sum
))
286 IF_SHA512SUM(APPLET_NOEXEC(sha512sum
, md5_sha1_sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
, sha512sum
))
287 IF_SHOWKEY(APPLET(showkey
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
288 IF_SLATTACH(APPLET(slattach
, BB_DIR_SBIN
, BB_SUID_DROP
))
289 /* Do not make this applet NOFORK. It breaks ^C-ing of pauses in shells: */
290 IF_SLEEP(APPLET(sleep
, BB_DIR_BIN
, BB_SUID_DROP
))
291 IF_SORT(APPLET_NOEXEC(sort
, sort
, BB_DIR_USR_BIN
, BB_SUID_DROP
, sort
))
292 IF_SPLIT(APPLET(split
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
293 IF_STAT(APPLET(stat
, BB_DIR_BIN
, BB_SUID_DROP
))
294 IF_STRINGS(APPLET(strings
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
295 IF_STTY(APPLET(stty
, BB_DIR_BIN
, BB_SUID_DROP
))
296 IF_SUM(APPLET(sum
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
297 IF_SWAPONOFF(APPLET_ODDNAME(swapoff
, swap_on_off
, BB_DIR_SBIN
, BB_SUID_DROP
, swapoff
))
298 IF_SWAPONOFF(APPLET_ODDNAME(swapon
, swap_on_off
, BB_DIR_SBIN
, BB_SUID_DROP
, swapon
))
299 IF_SWITCH_ROOT(APPLET(switch_root
, BB_DIR_SBIN
, BB_SUID_DROP
))
300 IF_BB_SYSCTL(APPLET(sysctl
, BB_DIR_SBIN
, BB_SUID_DROP
))
301 IF_TAC(APPLET_NOEXEC(tac
, tac
, BB_DIR_USR_BIN
, BB_SUID_DROP
, tac
))
302 IF_TAIL(APPLET(tail
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
303 /* IF_TC(APPLET(tc, BB_DIR_SBIN, BB_SUID_DROP)) */
304 IF_TCPSVD(APPLET_ODDNAME(tcpsvd
, tcpudpsvd
, BB_DIR_USR_BIN
, BB_SUID_DROP
, tcpsvd
))
305 IF_TEE(APPLET(tee
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
306 IF_TELNET(APPLET(telnet
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
307 IF_TELNETD(APPLET(telnetd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
308 IF_TEST(APPLET_NOFORK(test
, test
, BB_DIR_USR_BIN
, BB_SUID_DROP
, test
))
309 #if ENABLE_FEATURE_TFTP_GET || ENABLE_FEATURE_TFTP_PUT
310 IF_TFTP(APPLET(tftp
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
311 IF_TFTPD(APPLET(tftpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
313 IF_TIME(APPLET(time
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
314 IF_TIMEOUT(APPLET(timeout
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
315 IF_TOP(APPLET(top
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
316 IF_TR(APPLET(tr
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
317 /* Needs socket(AF_INET, SOCK_RAW, IPPROTO_ICMP), therefore BB_SUID_MAYBE: */
318 IF_TRACEROUTE(APPLET(traceroute
, BB_DIR_USR_BIN
, BB_SUID_MAYBE
))
319 IF_TRACEROUTE6(APPLET(traceroute6
, BB_DIR_USR_BIN
, BB_SUID_MAYBE
))
320 IF_TRUE(APPLET_NOFORK(true, true, BB_DIR_BIN
, BB_SUID_DROP
, true))
321 IF_TTY(APPLET(tty
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
322 IF_TTYSIZE(APPLET(ttysize
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
323 IF_TUNCTL(APPLET(tunctl
, BB_DIR_SBIN
, BB_SUID_DROP
))
324 IF_UDHCPC(APPLET(udhcpc
, BB_DIR_SBIN
, BB_SUID_DROP
))
325 IF_UDHCPC_OLD(APPLET(udhcpc
, BB_DIR_SBIN
, BB_SUID_DROP
))
326 IF_UDHCPD(APPLET(udhcpd
, BB_DIR_USR_SBIN
, BB_SUID_DROP
))
327 IF_UDPSVD(APPLET_ODDNAME(udpsvd
, tcpudpsvd
, BB_DIR_USR_BIN
, BB_SUID_DROP
, udpsvd
))
328 IF_UMOUNT(APPLET(umount
, BB_DIR_BIN
, BB_SUID_DROP
))
329 IF_UNAME(APPLET(uname
, BB_DIR_BIN
, BB_SUID_DROP
))
330 IF_UNEXPAND(APPLET_ODDNAME(unexpand
, expand
, BB_DIR_USR_BIN
, BB_SUID_DROP
, unexpand
))
331 IF_UNIQ(APPLET(uniq
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
332 IF_UNIX2DOS(APPLET_NOEXEC(unix2dos
, dos2unix
, BB_DIR_USR_BIN
, BB_SUID_DROP
, unix2dos
))
333 IF_UPTIME(APPLET(uptime
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
334 IF_USLEEP(APPLET_NOFORK(usleep
, usleep
, BB_DIR_BIN
, BB_SUID_DROP
, usleep
))
335 IF_UUDECODE(APPLET(uudecode
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
336 IF_UUENCODE(APPLET(uuencode
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
337 IF_VCONFIG(APPLET(vconfig
, BB_DIR_SBIN
, BB_SUID_DROP
))
338 IF_VOLNAME(APPLET(volname
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
339 IF_WATCH(APPLET(watch
, BB_DIR_BIN
, BB_SUID_DROP
))
340 IF_WATCHDOG(APPLET(watchdog
, BB_DIR_SBIN
, BB_SUID_DROP
))
341 IF_WC(APPLET(wc
, BB_DIR_USR_BIN
, BB_SUID_DROP
))
342 IF_WHOAMI(APPLET_NOFORK(whoami
, whoami
, BB_DIR_USR_BIN
, BB_SUID_DROP
, whoami
))
343 IF_YES(APPLET_NOFORK(yes
, yes
, BB_DIR_USR_BIN
, BB_SUID_DROP
, yes
))
344 IF_ZCIP(APPLET(zcip
, BB_DIR_SBIN
, BB_SUID_DROP
))
346 #if !defined(PROTOTYPES) && !defined(NAME_MAIN) && !defined(MAKE_USAGE) \
347 && !defined(MAKE_LINKS) && !defined(MAKE_SUID)
352 #undef APPLET_ODDNAME