Changeset 3232 in MondoRescue for branches/3.2/mindi-busybox/include
- Timestamp:
- Jan 1, 2014, 12:47:38 AM (10 years ago)
- Location:
- branches/3.2/mindi-busybox/include
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/3.2/mindi-busybox/include/.gitignore
r2725 r3232 1 1 /config 2 2 3 /applets.h 3 4 /applet_tables.h 4 5 /autoconf.h 6 /bbconfigopts_bz2.h 5 7 /bbconfigopts.h 8 /NUM_APPLETS.h 6 9 /usage_compressed.h 10 /usage.h -
branches/3.2/mindi-busybox/include/applets.src.h
r2725 r3232 13 13 l - location to install link to: [/usr]/[s]bin 14 14 s - suid type: 15 _BB_SUID_REQUIRE: will complain if busybox isn't suid15 BB_SUID_REQUIRE: will complain if busybox isn't suid 16 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 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. 19 23 */ 20 24 … … 58 62 59 63 #if ENABLE_INSTALL_NO_USR 60 # define _BB_DIR_USR_BIN _BB_DIR_BIN61 # define _BB_DIR_USR_SBIN _BB_DIR_SBIN64 # define BB_DIR_USR_BIN BB_DIR_BIN 65 # define BB_DIR_USR_SBIN BB_DIR_SBIN 62 66 #endif 63 67 64 68 65 69 INSERT 66 IF_TEST(APPLET_NOFORK([, test, _BB_DIR_USR_BIN, _BB_SUID_DROP, test))67 IF_TEST(APPLET_NOFORK([[, test, _BB_DIR_USR_BIN, _BB_SUID_DROP, test))68 IF_ACPID(APPLET(acpid, _BB_DIR_SBIN, _BB_SUID_DROP))69 IF_ADDGROUP(APPLET(addgroup, _BB_DIR_BIN, _BB_SUID_DROP))70 IF_ADDUSER(APPLET(adduser, _BB_DIR_BIN, _BB_SUID_DROP))71 IF_ADJTIMEX(APPLET(adjtimex, _BB_DIR_SBIN, _BB_SUID_DROP))72 IF_AR(APPLET(ar, _BB_DIR_USR_BIN, _BB_SUID_DROP))73 IF_ARP(APPLET(arp, _BB_DIR_SBIN, _BB_SUID_DROP))74 IF_ARPING(APPLET(arping, _BB_DIR_USR_BIN, _BB_SUID_DROP))75 IF_AWK(APPLET_NOEXEC(awk, awk, _BB_DIR_USR_BIN, _BB_SUID_DROP, awk))76 IF_BASENAME(APPLET_NOFORK(basename, basename, _BB_DIR_USR_BIN, _BB_SUID_DROP, basename))77 IF_BBCONFIG(APPLET(bbconfig, _BB_DIR_BIN, _BB_SUID_DROP))78 IF_BEEP(APPLET(beep, _BB_DIR_USR_BIN, _BB_SUID_DROP))79 IF_BLKID(APPLET(blkid, _BB_DIR_SBIN, _BB_SUID_DROP))80 IF_BRCTL(APPLET(brctl, _BB_DIR_USR_SBIN, _BB_SUID_DROP))81 IF_BZIP2(APPLET(bzip2, _BB_DIR_USR_BIN, _BB_SUID_DROP))82 IF_CAL(APPLET(cal, _BB_DIR_USR_BIN, _BB_SUID_DROP))83 IF_CAT(APPLET_NOFORK(cat, cat, _BB_DIR_BIN, _BB_SUID_DROP, cat))84 IF_CATV(APPLET(catv, _BB_DIR_BIN, _BB_SUID_DROP))85 IF_CHAT(APPLET(chat, _BB_DIR_USR_BIN, _BB_SUID_DROP))86 IF_CHATTR(APPLET(chattr, _BB_DIR_BIN, _BB_SUID_DROP))87 IF_CHCON(APPLET(chcon, _BB_DIR_USR_BIN, _BB_SUID_DROP))88 IF_CHGRP(APPLET_NOEXEC(chgrp, chgrp, _BB_DIR_BIN, _BB_SUID_DROP, chgrp))89 IF_CHMOD(APPLET_NOEXEC(chmod, chmod, _BB_DIR_BIN, _BB_SUID_DROP, chmod))90 IF_CHOWN(APPLET_NOEXEC(chown, chown, _BB_DIR_BIN, _BB_SUID_DROP, chown))91 IF_CHPASSWD(APPLET(chpasswd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))92 IF_CHPST(APPLET(chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP))93 IF_CHROOT(APPLET(chroot, _BB_DIR_USR_SBIN, _BB_SUID_DROP))94 IF_CHRT(APPLET(chrt, _BB_DIR_USR_BIN, _BB_SUID_DROP))95 IF_CHVT(APPLET(chvt, _BB_DIR_USR_BIN, _BB_SUID_DROP))96 IF_CKSUM(APPLET_NOEXEC(cksum, cksum, _BB_DIR_USR_BIN, _BB_SUID_DROP, cksum))97 IF_CLEAR(APPLET(clear, _BB_DIR_USR_BIN, _BB_SUID_DROP))98 IF_CMP(APPLET(cmp, _BB_DIR_USR_BIN, _BB_SUID_DROP))99 IF_COMM(APPLET(comm, _BB_DIR_USR_BIN, _BB_SUID_DROP))100 IF_CP(APPLET_NOEXEC(cp, cp, _BB_DIR_BIN, _BB_SUID_DROP, cp))101 IF_CPIO(APPLET(cpio, _BB_DIR_BIN, _BB_SUID_DROP))102 IF_CROND(APPLET(crond, _BB_DIR_USR_SBIN, _BB_SUID_DROP))103 IF_CRONTAB(APPLET(crontab, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) 104 IF_CR YPTPW(APPLET(cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP))105 IF_C UT(APPLET_NOEXEC(cut, cut, _BB_DIR_USR_BIN, _BB_SUID_DROP, cut))106 IF_ DC(APPLET(dc, _BB_DIR_USR_BIN, _BB_SUID_DROP))107 IF_D D(APPLET_NOEXEC(dd, dd, _BB_DIR_BIN, _BB_SUID_DROP, dd))108 IF_D EALLOCVT(APPLET(deallocvt, _BB_DIR_USR_BIN, _BB_SUID_DROP))109 IF_DE LGROUP(APPLET_ODDNAME(delgroup, deluser, _BB_DIR_BIN, _BB_SUID_DROP, delgroup))110 IF_DEL USER(APPLET(deluser, _BB_DIR_BIN, _BB_SUID_DROP))111 IF_DE VFSD(APPLET(devfsd, _BB_DIR_SBIN, _BB_SUID_DROP))112 IF_DEV MEM(APPLET(devmem, _BB_DIR_SBIN, _BB_SUID_DROP))113 IF_D F(APPLET(df, _BB_DIR_BIN, _BB_SUID_DROP))114 IF_D HCPRELAY(APPLET(dhcprelay, _BB_DIR_USR_SBIN, _BB_SUID_DROP))115 IF_D IFF(APPLET(diff, _BB_DIR_USR_BIN, _BB_SUID_DROP))116 IF_DI RNAME(APPLET_NOFORK(dirname, dirname, _BB_DIR_USR_BIN, _BB_SUID_DROP, dirname))117 IF_D MESG(APPLET(dmesg, _BB_DIR_BIN, _BB_SUID_DROP))118 IF_D NSD(APPLET(dnsd, _BB_DIR_USR_SBIN, _BB_SUID_REQUIRE))119 IF_ HOSTNAME(APPLET_ODDNAME(dnsdomainname, hostname, _BB_DIR_BIN, _BB_SUID_DROP, dnsdomainname))120 IF_ DOS2UNIX(APPLET_NOEXEC(dos2unix, dos2unix, _BB_DIR_USR_BIN, _BB_SUID_DROP, dos2unix))121 IF_D PKG(APPLET(dpkg, _BB_DIR_USR_BIN, _BB_SUID_DROP))122 IF_DPKG _DEB(APPLET_ODDNAME(dpkg-deb, dpkg_deb, _BB_DIR_USR_BIN, _BB_SUID_DROP, dpkg_deb))123 IF_D U(APPLET(du, _BB_DIR_USR_BIN, _BB_SUID_DROP))124 IF_DU MPKMAP(APPLET(dumpkmap, _BB_DIR_BIN, _BB_SUID_DROP))125 IF_DUMP LEASES(APPLET(dumpleases, _BB_DIR_USR_BIN, _BB_SUID_DROP))126 //IF_E2FSCK(APPLET(e2fsck, _BB_DIR_SBIN, _BB_SUID_DROP))127 //IF_E2 LABEL(APPLET_ODDNAME(e2label, tune2fs, _BB_DIR_SBIN, _BB_SUID_DROP, e2label))128 IF_ECHO(APPLET_NOFORK(echo, echo, _BB_DIR_BIN, _BB_SUID_DROP, echo))129 IF_E D(APPLET(ed, _BB_DIR_BIN, _BB_SUID_DROP))130 IF_E JECT(APPLET(eject, _BB_DIR_USR_BIN, _BB_SUID_DROP))131 IF_E NV(APPLET_NOEXEC(env, env, _BB_DIR_USR_BIN, _BB_SUID_DROP, env))132 IF_ENV DIR(APPLET_ODDNAME(envdir, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, envdir))133 IF_ENV UIDGID(APPLET_ODDNAME(envuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, envuidgid))134 IF_E THER_WAKE(APPLET_ODDNAME(ether-wake, ether_wake, _BB_DIR_USR_BIN, _BB_SUID_DROP, ether_wake))135 IF_E XPAND(APPLET(expand, _BB_DIR_USR_BIN, _BB_SUID_DROP))136 IF_EXP R(APPLET(expr, _BB_DIR_USR_BIN, _BB_SUID_DROP))137 IF_ FAKEIDENTD(APPLET(fakeidentd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))138 IF_FA LSE(APPLET_NOFORK(false, false, _BB_DIR_BIN, _BB_SUID_DROP, false))139 IF_F BSET(APPLET(fbset, _BB_DIR_USR_SBIN, _BB_SUID_DROP))140 IF_FBS PLASH(APPLET(fbsplash, _BB_DIR_SBIN, _BB_SUID_DROP))141 IF_F DFLUSH(APPLET_ODDNAME(fdflush, freeramdisk, _BB_DIR_BIN, _BB_SUID_DROP, fdflush))142 IF_FDF ORMAT(APPLET(fdformat, _BB_DIR_USR_BIN, _BB_SUID_DROP))143 IF_FD ISK(APPLET(fdisk, _BB_DIR_SBIN, _BB_SUID_DROP))144 IF_F GCONSOLE(APPLET(fgconsole, _BB_DIR_USR_BIN, _BB_SUID_DROP))145 IF_F INDFS(APPLET(findfs, _BB_DIR_SBIN, _BB_SUID_MAYBE))146 IF_FLASH_ERASEALL(APPLET(flash_eraseall, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 147 IF_F LASH_LOCK(APPLET_ODDNAME(flash_lock, flash_lock_unlock, _BB_DIR_USR_SBIN, _BB_SUID_DROP, flash_lock))148 IF_FLASH_ UNLOCK(APPLET_ODDNAME(flash_unlock, flash_lock_unlock, _BB_DIR_USR_SBIN, _BB_SUID_DROP, flash_unlock))149 IF_FLASH CP(APPLET(flashcp, _BB_DIR_USR_SBIN, _BB_SUID_DROP))150 IF_FL OCK(APPLET(flock, _BB_DIR_USR_BIN, _BB_SUID_DROP))151 IF_F OLD(APPLET_NOEXEC(fold, fold, _BB_DIR_USR_BIN, _BB_SUID_DROP, fold))152 IF_F REE(APPLET(free, _BB_DIR_USR_BIN, _BB_SUID_DROP))153 IF_F REERAMDISK(APPLET(freeramdisk, _BB_DIR_SBIN, _BB_SUID_DROP))154 IF_F SCK(APPLET(fsck, _BB_DIR_SBIN, _BB_SUID_DROP))155 //IF_E2FSCK(APPLET_ODDNAME(fsck.ext2, e2fsck, _BB_DIR_SBIN, _BB_SUID_DROP, fsck_ext2))156 //IF_E2FSCK(APPLET_ODDNAME(fsck.ext3, e2fsck, _BB_DIR_SBIN, _BB_SUID_DROP, fsck_ext3))157 IF_FSCK_MINIX(APPLET_ODDNAME(fsck.minix, fsck_minix, _BB_DIR_SBIN, _BB_SUID_DROP, fsck_minix))158 IF_FSYNC(APPLET_NOFORK(fsync, fsync, _BB_DIR_BIN, _BB_SUID_DROP, fsync))159 IF_F TPD(APPLET(ftpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))160 IF_F TPGET(APPLET_ODDNAME(ftpget, ftpgetput, _BB_DIR_USR_BIN, _BB_SUID_DROP, ftpget))161 IF_FTP PUT(APPLET_ODDNAME(ftpput, ftpgetput, _BB_DIR_USR_BIN, _BB_SUID_DROP, ftpput))162 IF_F USER(APPLET(fuser, _BB_DIR_USR_BIN, _BB_SUID_DROP))163 IF_ GETENFORCE(APPLET(getenforce, _BB_DIR_USR_SBIN, _BB_SUID_DROP))164 IF_ GETOPT(APPLET(getopt, _BB_DIR_BIN, _BB_SUID_DROP))165 IF_GET SEBOOL(APPLET(getsebool, _BB_DIR_USR_SBIN, _BB_SUID_DROP))166 IF_GET TY(APPLET(getty, _BB_DIR_SBIN, _BB_SUID_DROP))167 IF_G UNZIP(APPLET(gunzip, _BB_DIR_BIN, _BB_SUID_DROP))168 IF_G ZIP(APPLET(gzip, _BB_DIR_BIN, _BB_SUID_DROP))169 IF_ HD(APPLET_NOEXEC(hd, hexdump, _BB_DIR_USR_BIN, _BB_SUID_DROP, hd))170 IF_ HDPARM(APPLET(hdparm, _BB_DIR_SBIN, _BB_SUID_DROP))171 IF_H EAD(APPLET_NOEXEC(head, head, _BB_DIR_USR_BIN, _BB_SUID_DROP, head))172 IF_H EXDUMP(APPLET_NOEXEC(hexdump, hexdump, _BB_DIR_USR_BIN, _BB_SUID_DROP, hexdump))173 IF_H OSTID(APPLET_NOFORK(hostid, hostid, _BB_DIR_USR_BIN, _BB_SUID_DROP, hostid))174 IF_H OSTNAME(APPLET(hostname, _BB_DIR_BIN, _BB_SUID_DROP))175 IF_H TTPD(APPLET(httpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))176 IF_H WCLOCK(APPLET(hwclock, _BB_DIR_SBIN, _BB_SUID_DROP))177 IF_ ID(APPLET_NOEXEC(id, id, _BB_DIR_USR_BIN, _BB_SUID_DROP, id))178 IF_IFCONFIG(APPLET(ifconfig, _BB_DIR_SBIN, _BB_SUID_DROP))179 IF_IFUPDOWN(APPLET_ODDNAME(ifdown, ifupdown, _BB_DIR_SBIN, _BB_SUID_DROP, ifdown))180 IF_IFENSLAVE(APPLET(ifenslave, _BB_DIR_SBIN, _BB_SUID_DROP))181 IF_IFPLUGD(APPLET(ifplugd, _BB_DIR_USR_BIN, _BB_SUID_DROP))182 IF_IFUPDOWN(APPLET_ODDNAME(ifup, ifupdown, _BB_DIR_SBIN, _BB_SUID_DROP, ifup))183 IF_INETD(APPLET(inetd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))184 IF_INOTIFYD(APPLET(inotifyd, _BB_DIR_SBIN, _BB_SUID_DROP))185 IF_INSTALL(APPLET(install, _BB_DIR_USR_BIN, _BB_SUID_DROP))186 IF_IONICE(APPLET(ionice, _BB_DIR_BIN, _BB_SUID_DROP))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)) 187 191 #if ENABLE_FEATURE_IP_ADDRESS \ 188 192 || ENABLE_FEATURE_IP_ROUTE \ … … 190 194 || ENABLE_FEATURE_IP_TUNNEL \ 191 195 || ENABLE_FEATURE_IP_RULE 192 IF_IP(APPLET(ip, _BB_DIR_BIN, _BB_SUID_DROP))196 IF_IP(APPLET(ip, BB_DIR_SBIN, BB_SUID_DROP)) 193 197 #endif 194 IF_IPADDR(APPLET(ipaddr, _BB_DIR_BIN, _BB_SUID_DROP)) 195 IF_IPCALC(APPLET(ipcalc, _BB_DIR_BIN, _BB_SUID_DROP)) 196 IF_IPCRM(APPLET(ipcrm, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) 197 IF_IPCS(APPLET(ipcs, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) 198 IF_IPLINK(APPLET(iplink, _BB_DIR_BIN, _BB_SUID_DROP)) 199 IF_IPROUTE(APPLET(iproute, _BB_DIR_BIN, _BB_SUID_DROP)) 200 IF_IPRULE(APPLET(iprule, _BB_DIR_BIN, _BB_SUID_DROP)) 201 IF_IPTUNNEL(APPLET(iptunnel, _BB_DIR_BIN, _BB_SUID_DROP)) 202 IF_KBD_MODE(APPLET(kbd_mode, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 203 IF_KILL(APPLET(kill, _BB_DIR_BIN, _BB_SUID_DROP)) 204 IF_KILLALL(APPLET_ODDNAME(killall, kill, _BB_DIR_USR_BIN, _BB_SUID_DROP, killall)) 205 IF_KILLALL5(APPLET_ODDNAME(killall5, kill, _BB_DIR_USR_BIN, _BB_SUID_DROP, killall5)) 206 IF_KLOGD(APPLET(klogd, _BB_DIR_SBIN, _BB_SUID_DROP)) 207 IF_LAST(APPLET(last, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 208 IF_LENGTH(APPLET_NOFORK(length, length, _BB_DIR_USR_BIN, _BB_SUID_DROP, length)) 209 IF_LESS(APPLET(less, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 210 IF_SETARCH(APPLET_ODDNAME(linux32, setarch, _BB_DIR_BIN, _BB_SUID_DROP, linux32)) 211 IF_SETARCH(APPLET_ODDNAME(linux64, setarch, _BB_DIR_BIN, _BB_SUID_DROP, linux64)) 212 IF_LN(APPLET_NOEXEC(ln, ln, _BB_DIR_BIN, _BB_SUID_DROP, ln)) 213 IF_LOAD_POLICY(APPLET(load_policy, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 214 IF_LOADFONT(APPLET(loadfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 215 IF_LOADKMAP(APPLET(loadkmap, _BB_DIR_SBIN, _BB_SUID_DROP)) 216 IF_LOGGER(APPLET(logger, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 217 IF_LOGIN(APPLET(login, _BB_DIR_BIN, _BB_SUID_REQUIRE)) 218 IF_LOGNAME(APPLET_NOFORK(logname, logname, _BB_DIR_USR_BIN, _BB_SUID_DROP, logname)) 219 IF_LOGREAD(APPLET(logread, _BB_DIR_SBIN, _BB_SUID_DROP)) 220 IF_LOSETUP(APPLET(losetup, _BB_DIR_SBIN, _BB_SUID_DROP)) 221 IF_LPD(APPLET(lpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 222 IF_LPQ(APPLET_ODDNAME(lpq, lpqr, _BB_DIR_USR_BIN, _BB_SUID_DROP, lpq)) 223 IF_LPR(APPLET_ODDNAME(lpr, lpqr, _BB_DIR_USR_BIN, _BB_SUID_DROP, lpr)) 224 IF_LS(APPLET_NOEXEC(ls, ls, _BB_DIR_BIN, _BB_SUID_DROP, ls)) 225 IF_LSATTR(APPLET(lsattr, _BB_DIR_BIN, _BB_SUID_DROP)) 226 IF_LSPCI(APPLET(lspci, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 227 IF_LSUSB(APPLET(lsusb, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 228 IF_UNLZMA(APPLET_ODDNAME(lzcat, unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzcat)) 229 IF_LZMA(APPLET_ODDNAME(lzma, unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzma)) 230 IF_LZOP(APPLET(lzop, _BB_DIR_BIN, _BB_SUID_DROP)) 231 IF_LZOP(APPLET_ODDNAME(lzopcat, lzop, _BB_DIR_USR_BIN, _BB_SUID_DROP, lzopcat)) 232 IF_MAKEDEVS(APPLET(makedevs, _BB_DIR_SBIN, _BB_SUID_DROP)) 233 IF_MAKEMIME(APPLET(makemime, _BB_DIR_BIN, _BB_SUID_DROP)) 234 IF_MAN(APPLET(man, _BB_DIR_SBIN, _BB_SUID_DROP)) 235 IF_MATCHPATHCON(APPLET(matchpathcon, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 236 IF_MD5SUM(APPLET_NOEXEC(md5sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, md5sum)) 237 IF_MDEV(APPLET(mdev, _BB_DIR_SBIN, _BB_SUID_DROP)) 238 IF_MICROCOM(APPLET(microcom, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 239 IF_MKDIR(APPLET_NOFORK(mkdir, mkdir, _BB_DIR_BIN, _BB_SUID_DROP, mkdir)) 240 IF_MKFS_VFAT(APPLET_ODDNAME(mkdosfs, mkfs_vfat, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_vfat)) 241 IF_MKFS_EXT2(APPLET_ODDNAME(mke2fs, mkfs_ext2, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_ext2)) 242 IF_MKFIFO(APPLET_NOEXEC(mkfifo, mkfifo, _BB_DIR_USR_BIN, _BB_SUID_DROP, mkfifo)) 243 IF_MKFS_EXT2(APPLET_ODDNAME(mkfs.ext2, mkfs_ext2, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_ext2)) 244 //IF_MKE2FS(APPLET_ODDNAME(mkfs.ext3, mke2fs, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_ext3)) 245 IF_MKFS_MINIX(APPLET_ODDNAME(mkfs.minix, mkfs_minix, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_minix)) 246 IF_MKFS_REISER(APPLET_ODDNAME(mkfs.reiser, mkfs_reiser, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_reiser)) 247 IF_MKFS_VFAT(APPLET_ODDNAME(mkfs.vfat, mkfs_vfat, _BB_DIR_SBIN, _BB_SUID_DROP, mkfs_vfat)) 248 IF_MKNOD(APPLET_NOEXEC(mknod, mknod, _BB_DIR_BIN, _BB_SUID_DROP, mknod)) 249 IF_CRYPTPW(APPLET_ODDNAME(mkpasswd, cryptpw, _BB_DIR_USR_BIN, _BB_SUID_DROP, mkpasswd)) 250 IF_MKSWAP(APPLET(mkswap, _BB_DIR_SBIN, _BB_SUID_DROP)) 251 IF_MKTEMP(APPLET(mktemp, _BB_DIR_BIN, _BB_SUID_DROP)) 252 IF_MORE(APPLET(more, _BB_DIR_BIN, _BB_SUID_DROP)) 253 IF_MOUNT(APPLET(mount, _BB_DIR_BIN, IF_DESKTOP(_BB_SUID_MAYBE) IF_NOT_DESKTOP(_BB_SUID_DROP))) 254 IF_MOUNTPOINT(APPLET(mountpoint, _BB_DIR_BIN, _BB_SUID_DROP)) 255 IF_MT(APPLET(mt, _BB_DIR_BIN, _BB_SUID_DROP)) 256 IF_MV(APPLET(mv, _BB_DIR_BIN, _BB_SUID_DROP)) 257 IF_NAMEIF(APPLET(nameif, _BB_DIR_SBIN, _BB_SUID_DROP)) 258 IF_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 259 IF_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_DROP)) 260 IF_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_DROP)) 261 IF_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 262 IF_NOHUP(APPLET(nohup, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 263 IF_NSLOOKUP(APPLET(nslookup, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 264 IF_NTPD(APPLET(ntpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 265 IF_OD(APPLET(od, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 266 IF_OPENVT(APPLET(openvt, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 267 //IF_PARSE(APPLET(parse, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 268 IF_PASSWD(APPLET(passwd, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) 269 IF_PGREP(APPLET(pgrep, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 270 IF_PIDOF(APPLET(pidof, _BB_DIR_BIN, _BB_SUID_DROP)) 271 IF_PING(APPLET(ping, _BB_DIR_BIN, _BB_SUID_MAYBE)) 272 IF_PING6(APPLET(ping6, _BB_DIR_BIN, _BB_SUID_MAYBE)) 273 IF_PIPE_PROGRESS(APPLET(pipe_progress, _BB_DIR_BIN, _BB_SUID_DROP)) 274 IF_PIVOT_ROOT(APPLET(pivot_root, _BB_DIR_SBIN, _BB_SUID_DROP)) 275 IF_PKILL(APPLET_ODDNAME(pkill, pgrep, _BB_DIR_USR_BIN, _BB_SUID_DROP, pkill)) 276 IF_POPMAILDIR(APPLET(popmaildir, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 277 IF_PRINTENV(APPLET_NOFORK(printenv, printenv, _BB_DIR_BIN, _BB_SUID_DROP, printenv)) 278 IF_PRINTF(APPLET_NOFORK(printf, printf, _BB_DIR_USR_BIN, _BB_SUID_DROP, printf)) 279 IF_PS(APPLET(ps, _BB_DIR_BIN, _BB_SUID_DROP)) 280 IF_PSCAN(APPLET(pscan, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 281 IF_PWD(APPLET_NOFORK(pwd, pwd, _BB_DIR_BIN, _BB_SUID_DROP, pwd)) 282 IF_RAIDAUTORUN(APPLET(raidautorun, _BB_DIR_SBIN, _BB_SUID_DROP)) 283 IF_RDATE(APPLET(rdate, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 284 IF_RDEV(APPLET(rdev, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 285 IF_READAHEAD(APPLET(readahead, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 286 IF_READLINK(APPLET(readlink, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 287 IF_READPROFILE(APPLET(readprofile, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 288 IF_REALPATH(APPLET(realpath, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 289 IF_REFORMIME(APPLET(reformime, _BB_DIR_BIN, _BB_SUID_DROP)) 290 IF_RENICE(APPLET(renice, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 291 IF_RESET(APPLET(reset, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 292 IF_RESIZE(APPLET(resize, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 293 IF_RESTORECON(APPLET_ODDNAME(restorecon, setfiles, _BB_DIR_SBIN, _BB_SUID_DROP, restorecon)) 294 IF_RFKILL(APPLET(rfkill, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 295 IF_RM(APPLET_NOFORK(rm, rm, _BB_DIR_BIN, _BB_SUID_DROP, rm)) 296 IF_RMDIR(APPLET_NOFORK(rmdir, rmdir, _BB_DIR_BIN, _BB_SUID_DROP, rmdir)) 297 IF_ROUTE(APPLET(route, _BB_DIR_SBIN, _BB_SUID_DROP)) 298 IF_RPM(APPLET(rpm, _BB_DIR_BIN, _BB_SUID_DROP)) 299 IF_RPM2CPIO(APPLET(rpm2cpio, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 300 IF_RTCWAKE(APPLET(rtcwake, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 301 IF_RUN_PARTS(APPLET_ODDNAME(run-parts, run_parts, _BB_DIR_BIN, _BB_SUID_DROP, run_parts)) 302 IF_RUNCON(APPLET(runcon, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 303 IF_RUNLEVEL(APPLET(runlevel, _BB_DIR_SBIN, _BB_SUID_DROP)) 304 IF_RUNSV(APPLET(runsv, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 305 IF_RUNSVDIR(APPLET(runsvdir, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 306 IF_RX(APPLET(rx, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 307 IF_SCRIPT(APPLET(script, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 308 IF_SCRIPTREPLAY(APPLET(scriptreplay, _BB_DIR_BIN, _BB_SUID_DROP)) 309 IF_SED(APPLET(sed, _BB_DIR_BIN, _BB_SUID_DROP)) 310 IF_SELINUXENABLED(APPLET(selinuxenabled, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 311 IF_SENDMAIL(APPLET(sendmail, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 312 IF_SEQ(APPLET_NOFORK(seq, seq, _BB_DIR_USR_BIN, _BB_SUID_DROP, seq)) 313 IF_SESTATUS(APPLET(sestatus, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 314 IF_SETARCH(APPLET(setarch, _BB_DIR_BIN, _BB_SUID_DROP)) 315 IF_SETCONSOLE(APPLET(setconsole, _BB_DIR_SBIN, _BB_SUID_DROP)) 316 IF_SETENFORCE(APPLET(setenforce, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 317 IF_SETFILES(APPLET(setfiles, _BB_DIR_SBIN, _BB_SUID_DROP)) 318 IF_SETFONT(APPLET(setfont, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 319 IF_SETKEYCODES(APPLET(setkeycodes, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 320 IF_SETLOGCONS(APPLET(setlogcons, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 321 IF_SETSEBOOL(APPLET(setsebool, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 322 IF_SETSID(APPLET(setsid, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 323 IF_SETUIDGID(APPLET_ODDNAME(setuidgid, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, setuidgid)) 324 IF_SHA1SUM(APPLET_NOEXEC(sha1sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha1sum)) 325 IF_SHA256SUM(APPLET_NOEXEC(sha256sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha256sum)) 326 IF_SHA512SUM(APPLET_NOEXEC(sha512sum, md5_sha1_sum, _BB_DIR_USR_BIN, _BB_SUID_DROP, sha512sum)) 327 IF_SHOWKEY(APPLET(showkey, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 328 IF_SLATTACH(APPLET(slattach, _BB_DIR_SBIN, _BB_SUID_DROP)) 329 /* Do not make this applet NOFORK. It breaks ^C-ing of pauses in shells */ 330 IF_SLEEP(APPLET(sleep, _BB_DIR_BIN, _BB_SUID_DROP)) 331 IF_SOFTLIMIT(APPLET_ODDNAME(softlimit, chpst, _BB_DIR_USR_BIN, _BB_SUID_DROP, softlimit)) 332 IF_SORT(APPLET_NOEXEC(sort, sort, _BB_DIR_USR_BIN, _BB_SUID_DROP, sort)) 333 IF_SPLIT(APPLET(split, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 334 IF_START_STOP_DAEMON(APPLET_ODDNAME(start-stop-daemon, start_stop_daemon, _BB_DIR_SBIN, _BB_SUID_DROP, start_stop_daemon)) 335 IF_STAT(APPLET(stat, _BB_DIR_BIN, _BB_SUID_DROP)) 336 IF_STRINGS(APPLET(strings, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 337 IF_STTY(APPLET(stty, _BB_DIR_BIN, _BB_SUID_DROP)) 338 IF_SU(APPLET(su, _BB_DIR_BIN, _BB_SUID_REQUIRE)) 339 IF_SULOGIN(APPLET(sulogin, _BB_DIR_SBIN, _BB_SUID_DROP)) 340 IF_SUM(APPLET(sum, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 341 IF_SV(APPLET(sv, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 342 IF_SVLOGD(APPLET(svlogd, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 343 IF_SWAPONOFF(APPLET_ODDNAME(swapoff, swap_on_off, _BB_DIR_SBIN, _BB_SUID_DROP, swapoff)) 344 IF_SWAPONOFF(APPLET_ODDNAME(swapon, swap_on_off, _BB_DIR_SBIN, _BB_SUID_DROP, swapon)) 345 IF_SWITCH_ROOT(APPLET(switch_root, _BB_DIR_SBIN, _BB_SUID_DROP)) 346 IF_SYNC(APPLET_NOFORK(sync, sync, _BB_DIR_BIN, _BB_SUID_DROP, sync)) 347 IF_BB_SYSCTL(APPLET(sysctl, _BB_DIR_SBIN, _BB_SUID_DROP)) 348 IF_SYSLOGD(APPLET(syslogd, _BB_DIR_SBIN, _BB_SUID_DROP)) 349 IF_TAC(APPLET_NOEXEC(tac, tac, _BB_DIR_USR_BIN, _BB_SUID_DROP, tac)) 350 IF_TAIL(APPLET(tail, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 351 IF_TAR(APPLET(tar, _BB_DIR_BIN, _BB_SUID_DROP)) 352 IF_TASKSET(APPLET(taskset, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 353 /* IF_TC(APPLET(tc, _BB_DIR_SBIN, _BB_SUID_DROP)) */ 354 IF_TCPSVD(APPLET_ODDNAME(tcpsvd, tcpudpsvd, _BB_DIR_USR_BIN, _BB_SUID_DROP, tcpsvd)) 355 IF_TEE(APPLET(tee, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 356 IF_TELNET(APPLET(telnet, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 357 IF_TELNETD(APPLET(telnetd, _BB_DIR_USR_SBIN, _BB_SUID_DROP)) 358 IF_TEST(APPLET_NOFORK(test, test, _BB_DIR_USR_BIN, _BB_SUID_DROP, test)) 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)) 359 367 #if ENABLE_FEATURE_TFTP_GET || ENABLE_FEATURE_TFTP_PUT 360 IF_TFTP(APPLET(tftp, _BB_DIR_USR_BIN, _BB_SUID_DROP))361 IF_TFTPD(APPLET(tftpd, _BB_DIR_USR_BIN, _BB_SUID_DROP))368 IF_TFTP(APPLET(tftp, BB_DIR_USR_BIN, BB_SUID_DROP)) 369 IF_TFTPD(APPLET(tftpd, BB_DIR_USR_SBIN, BB_SUID_DROP)) 362 370 #endif 363 IF_TIME(APPLET(time, _BB_DIR_USR_BIN, _BB_SUID_DROP))364 IF_TIMEOUT(APPLET(timeout, _BB_DIR_USR_BIN, _BB_SUID_DROP))365 IF_TOP(APPLET(top, _BB_DIR_USR_BIN, _BB_SUID_DROP))366 IF_T OUCH(APPLET_NOFORK(touch, touch, _BB_DIR_BIN, _BB_SUID_DROP, touch))367 IF_TR(APPLET(tr, _BB_DIR_USR_BIN, _BB_SUID_DROP)) 368 IF_TRACEROUTE(APPLET(traceroute, _BB_DIR_USR_BIN, _BB_SUID_MAYBE))369 IF_TRACEROUTE6(APPLET(traceroute6, _BB_DIR_USR_BIN, _BB_SUID_MAYBE))370 IF_TRUE(APPLET_NOFORK(true, true, _BB_DIR_BIN, _BB_SUID_DROP, true))371 IF_TTY(APPLET(tty, _BB_DIR_USR_BIN, _BB_SUID_DROP))372 IF_TTYSIZE(APPLET(ttysize, _BB_DIR_USR_BIN, _BB_SUID_DROP))373 IF_TUNCTL(APPLET(tunctl, _BB_DIR_SBIN, _BB_SUID_DROP))374 IF_TUNE2FS(APPLET(tune2fs, _BB_DIR_SBIN, _BB_SUID_DROP))375 IF_UDHCPC(APPLET(udhcpc, _BB_DIR_SBIN, _BB_SUID_DROP))376 IF_UDHCPD(APPLET(udhcpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))377 IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, _BB_DIR_USR_BIN, _BB_SUID_DROP, udpsvd))378 IF_UMOUNT(APPLET(umount, _BB_DIR_BIN, _BB_SUID_DROP))379 IF_UNAME(APPLET(uname, _BB_DIR_BIN, _BB_SUID_DROP))380 IF_UNCOMPRESS(APPLET(uncompress, _BB_DIR_BIN, _BB_SUID_DROP))381 IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, _BB_DIR_USR_BIN, _BB_SUID_DROP, unexpand))382 IF_UNIQ(APPLET(uniq, _BB_DIR_USR_BIN, _BB_SUID_DROP))383 IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, _BB_DIR_USR_BIN, _BB_SUID_DROP, unix2dos))384 IF_UNXZ(APPLET(unxz, _BB_DIR_USR_BIN, _BB_SUID_DROP))385 IF_UNLZMA(APPLET(unlzma, _BB_DIR_USR_BIN, _BB_SUID_DROP))386 IF_LZOP(APPLET_ODDNAME(unlzop, lzop, _BB_DIR_USR_BIN, _BB_SUID_DROP, unlzop))387 IF_UNZIP(APPLET(unzip, _BB_DIR_USR_BIN, _BB_SUID_DROP))388 IF_UPTIME(APPLET(uptime, _BB_DIR_USR_BIN, _BB_SUID_DROP))389 IF_USLEEP(APPLET_NOFORK(usleep, usleep, _BB_DIR_BIN, _BB_SUID_DROP, usleep))390 IF_UUDECODE(APPLET(uudecode, _BB_DIR_USR_BIN, _BB_SUID_DROP))391 IF_UUENCODE(APPLET(uuencode, _BB_DIR_USR_BIN, _BB_SUID_DROP))392 IF_VCONFIG(APPLET(vconfig, _BB_DIR_SBIN, _BB_SUID_DROP))393 IF_VI(APPLET(vi, _BB_DIR_BIN, _BB_SUID_DROP)) 394 IF_VLOCK(APPLET(vlock, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE))395 IF_VOLNAME(APPLET(volname, _BB_DIR_USR_BIN, _BB_SUID_DROP))396 IF_WALL(APPLET(wall, _BB_DIR_USR_BIN, _BB_SUID_REQUIRE)) 397 IF_WA TCH(APPLET(watch, _BB_DIR_BIN, _BB_SUID_DROP))398 IF_WATCH DOG(APPLET(watchdog, _BB_DIR_SBIN, _BB_SUID_DROP))399 IF_W C(APPLET(wc, _BB_DIR_USR_BIN, _BB_SUID_DROP))400 IF_W GET(APPLET(wget, _BB_DIR_USR_BIN, _BB_SUID_DROP))401 IF_W HICH(APPLET(which, _BB_DIR_USR_BIN, _BB_SUID_DROP))402 IF_WH O(APPLET(who, _BB_DIR_USR_BIN, _BB_SUID_DROP))403 IF_WHOAMI(APPLET_NOFORK(whoami, whoami, _BB_DIR_USR_BIN, _BB_SUID_DROP, whoami))404 IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, _BB_DIR_USR_BIN, _BB_SUID_DROP, xzcat))405 IF_XZ(APPLET_ODDNAME(xz, unxz, _BB_DIR_USR_BIN, _BB_SUID_DROP, xz))406 IF_YES(APPLET_NOFORK(yes, yes, _BB_DIR_USR_BIN, _BB_SUID_DROP, yes))407 IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, _BB_DIR_BIN, _BB_SUID_DROP, zcat))408 IF_ZCIP(APPLET(zcip, _BB_DIR_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_UDHCPD(APPLET(udhcpd, BB_DIR_USR_SBIN, BB_SUID_DROP)) 385 IF_UDPSVD(APPLET_ODDNAME(udpsvd, tcpudpsvd, BB_DIR_USR_BIN, BB_SUID_DROP, udpsvd)) 386 IF_UMOUNT(APPLET(umount, BB_DIR_BIN, BB_SUID_DROP)) 387 IF_UNAME(APPLET(uname, BB_DIR_BIN, BB_SUID_DROP)) 388 IF_UNCOMPRESS(APPLET(uncompress, BB_DIR_BIN, BB_SUID_DROP)) 389 IF_UNEXPAND(APPLET_ODDNAME(unexpand, expand, BB_DIR_USR_BIN, BB_SUID_DROP, unexpand)) 390 IF_UNIQ(APPLET(uniq, BB_DIR_USR_BIN, BB_SUID_DROP)) 391 IF_UNIX2DOS(APPLET_NOEXEC(unix2dos, dos2unix, BB_DIR_USR_BIN, BB_SUID_DROP, unix2dos)) 392 IF_UNXZ(APPLET(unxz, BB_DIR_USR_BIN, BB_SUID_DROP)) 393 IF_UNLZMA(APPLET(unlzma, BB_DIR_USR_BIN, BB_SUID_DROP)) 394 IF_LZOP(APPLET_ODDNAME(unlzop, lzop, BB_DIR_USR_BIN, BB_SUID_DROP, unlzop)) 395 IF_UNZIP(APPLET(unzip, BB_DIR_USR_BIN, BB_SUID_DROP)) 396 IF_UPTIME(APPLET(uptime, BB_DIR_USR_BIN, BB_SUID_DROP)) 397 IF_USLEEP(APPLET_NOFORK(usleep, usleep, BB_DIR_BIN, BB_SUID_DROP, usleep)) 398 IF_UUDECODE(APPLET(uudecode, BB_DIR_USR_BIN, BB_SUID_DROP)) 399 IF_UUENCODE(APPLET(uuencode, BB_DIR_USR_BIN, BB_SUID_DROP)) 400 IF_VCONFIG(APPLET(vconfig, BB_DIR_SBIN, BB_SUID_DROP)) 401 /* Needs to be run by root or be suid root - needs to change uid and gid: */ 402 IF_VLOCK(APPLET(vlock, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) 403 IF_VOLNAME(APPLET(volname, BB_DIR_USR_BIN, BB_SUID_DROP)) 404 /* Needs to be run by root or be suid root - needs to write to /dev/TTY: */ 405 IF_WALL(APPLET(wall, BB_DIR_USR_BIN, BB_SUID_REQUIRE)) 406 IF_WATCH(APPLET(watch, BB_DIR_BIN, BB_SUID_DROP)) 407 IF_WATCHDOG(APPLET(watchdog, BB_DIR_SBIN, BB_SUID_DROP)) 408 IF_WC(APPLET(wc, BB_DIR_USR_BIN, BB_SUID_DROP)) 409 IF_WGET(APPLET(wget, BB_DIR_USR_BIN, BB_SUID_DROP)) 410 IF_WHICH(APPLET(which, BB_DIR_USR_BIN, BB_SUID_DROP)) 411 IF_WHOAMI(APPLET_NOFORK(whoami, whoami, BB_DIR_USR_BIN, BB_SUID_DROP, whoami)) 412 IF_UNXZ(APPLET_ODDNAME(xzcat, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xzcat)) 413 IF_XZ(APPLET_ODDNAME(xz, unxz, BB_DIR_USR_BIN, BB_SUID_DROP, xz)) 414 IF_YES(APPLET_NOFORK(yes, yes, BB_DIR_USR_BIN, BB_SUID_DROP, yes)) 415 IF_GUNZIP(APPLET_ODDNAME(zcat, gunzip, BB_DIR_BIN, BB_SUID_DROP, zcat)) 416 IF_ZCIP(APPLET(zcip, BB_DIR_SBIN, BB_SUID_DROP)) 409 417 410 418 #if !defined(PROTOTYPES) && !defined(NAME_MAIN_CNAME) && !defined(MAKE_USAGE) -
branches/3.2/mindi-busybox/include/busybox.h
r2725 r3232 1 1 /* vi: set sw=4 ts=4: */ 2 2 /* 3 * Busybox main internal header file4 *5 3 * Licensed under GPLv2 or later, see file LICENSE in this source tree. 6 4 */ … … 9 7 10 8 #include "libbb.h" 9 /* BB_DIR_foo and BB_SUID_bar constants: */ 10 #include "applet_metadata.h" 11 11 12 12 PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN 13 13 14 /* order matters: used as index into "install_dir[]" in appletlib.c */15 typedef enum bb_install_loc_t {16 _BB_DIR_ROOT = 0,17 _BB_DIR_BIN,18 _BB_DIR_SBIN,19 #if ENABLE_INSTALL_NO_USR20 _BB_DIR_USR_BIN = _BB_DIR_BIN,21 _BB_DIR_USR_SBIN = _BB_DIR_SBIN,22 #else23 _BB_DIR_USR_BIN,24 _BB_DIR_USR_SBIN,25 #endif26 } bb_install_loc_t;27 28 typedef enum bb_suid_t {29 _BB_SUID_DROP = 0,30 _BB_SUID_MAYBE,31 _BB_SUID_REQUIRE32 } bb_suid_t;33 34 35 14 /* Defined in appletlib.c (by including generated applet_tables.h) */ 36 15 /* Keep in sync with applets/applet_tables.c! */ 37 extern const char applet_names[] ;16 extern const char applet_names[] ALIGN1; 38 17 extern int (*const applet_main[])(int argc, char **argv); 39 18 extern const uint16_t applet_nameofs[]; 40 extern const uint8_t applet_install_loc[] ;19 extern const uint8_t applet_install_loc[] ALIGN1; 41 20 42 21 #if ENABLE_FEATURE_SUID || ENABLE_FEATURE_PREFER_APPLETS -
branches/3.2/mindi-busybox/include/grp_.h
r2725 r3232 30 30 * so that function calls are directed to bb_internal_XXX replacements 31 31 */ 32 32 #undef endgrent 33 33 #define setgrent bb_internal_setgrent 34 34 #define endgrent bb_internal_endgrent … … 65 65 /* Write the given entry onto the given stream. */ 66 66 extern int putgrent(const struct group *__restrict __p, 67 67 FILE *__restrict __f); 68 68 #endif 69 69 … … 83 83 84 84 extern int getgrent_r(struct group *__restrict __resultbuf, 85 86 85 char *__restrict __buffer, size_t __buflen, 86 struct group **__restrict __result); 87 87 88 88 /* Search for an entry with a matching group ID. */ 89 89 extern int getgrgid_r(gid_t __gid, struct group *__restrict __resultbuf, 90 91 90 char *__restrict __buffer, size_t __buflen, 91 struct group **__restrict __result); 92 92 93 93 /* Search for an entry with a matching group name. */ 94 94 extern int getgrnam_r(const char *__restrict __name, 95 96 97 95 struct group *__restrict __resultbuf, 96 char *__restrict __buffer, size_t __buflen, 97 struct group **__restrict __result); 98 98 99 99 /* Read a group entry from STREAM. This function is not standardized 100 100 an probably never will. */ 101 101 extern int fgetgrent_r(FILE *__restrict __stream, 102 103 104 102 struct group *__restrict __resultbuf, 103 char *__restrict __buffer, size_t __buflen, 104 struct group **__restrict __result); 105 105 106 106 /* Store at most *NGROUPS members of the group set for USER into … … 108 108 returned in *NGROUPS. Return -1 if the if *NGROUPS is too small. */ 109 109 extern int getgrouplist(const char *__user, gid_t __group, 110 110 gid_t *__groups, int *__ngroups); 111 111 112 112 /* Initialize the group set for the current user -
branches/3.2/mindi-busybox/include/libbb.h
r2725 r3232 21 21 #include <setjmp.h> 22 22 #include <signal.h> 23 #if defined __UCLIBC__ /* TODO: and glibc? */ 24 /* use inlined versions of these: */ 25 # define sigfillset(s) __sigfillset(s) 26 # define sigemptyset(s) __sigemptyset(s) 27 # define sigisemptyset(s) __sigisemptyset(s) 28 #endif 23 29 #include <stdint.h> 24 30 #include <stdio.h> … … 27 33 #include <stddef.h> 28 34 #include <string.h> 35 /* There are two incompatible basename's, let not use them! */ 36 /* See the dirname/basename man page for details */ 37 #include <libgen.h> /* dirname,basename */ 38 #undef basename 39 #define basename dont_use_basename 29 40 #include <sys/poll.h> 30 41 #include <sys/ioctl.h> … … 34 45 #include <sys/time.h> 35 46 #include <sys/types.h> 47 #ifndef major 48 # include <sys/sysmacros.h> 49 #endif 36 50 #include <sys/wait.h> 37 51 #include <termios.h> 38 52 #include <time.h> 39 #include <unistd.h>40 53 #include <sys/param.h> 41 #ifdef HAVE_MNTENT_H42 # include <mntent.h>43 #endif44 #ifdef HAVE_SYS_STATFS_H45 # include <sys/statfs.h>46 #endif47 #if ENABLE_SELINUX48 # include <selinux/selinux.h>49 # include <selinux/context.h>50 # include <selinux/flask.h>51 # include <selinux/av_permissions.h>52 #endif53 #if ENABLE_LOCALE_SUPPORT54 # include <locale.h>55 #else56 # define setlocale(x,y) ((void)0)57 #endif58 #ifdef DMALLOC59 # include <dmalloc.h>60 #endif61 54 #include <pwd.h> 62 55 #include <grp.h> … … 68 61 # include <shadow.h> 69 62 # endif 63 #endif 64 #if defined(ANDROID) || defined(__ANDROID__) 65 # define endpwent() ((void)0) 66 # define endgrent() ((void)0) 67 #endif 68 #ifdef HAVE_MNTENT_H 69 # include <mntent.h> 70 #endif 71 #ifdef HAVE_SYS_STATFS_H 72 # include <sys/statfs.h> 73 #endif 74 /* Don't do this here: 75 * #include <sys/sysinfo.h> 76 * Some linux/ includes pull in conflicting definition 77 * of struct sysinfo (only in some toolchanins), which breaks build. 78 * Include sys/sysinfo.h only in those files which need it. 79 */ 80 #if ENABLE_SELINUX 81 # include <selinux/selinux.h> 82 # include <selinux/context.h> 83 # include <selinux/flask.h> 84 # include <selinux/av_permissions.h> 85 #endif 86 #if ENABLE_FEATURE_UTMP 87 # include <utmp.h> 88 #endif 89 #if ENABLE_LOCALE_SUPPORT 90 # include <locale.h> 91 #else 92 # define setlocale(x,y) ((void)0) 93 #endif 94 #ifdef DMALLOC 95 # include <dmalloc.h> 96 #endif 97 /* Just in case libc doesn't define some of these... */ 98 #ifndef _PATH_PASSWD 99 #define _PATH_PASSWD "/etc/passwd" 100 #endif 101 #ifndef _PATH_GROUP 102 #define _PATH_GROUP "/etc/group" 103 #endif 104 #ifndef _PATH_SHADOW 105 #define _PATH_SHADOW "/etc/shadow" 106 #endif 107 #ifndef _PATH_GSHADOW 108 #define _PATH_GSHADOW "/etc/gshadow" 70 109 #endif 71 110 #if defined __FreeBSD__ || defined __OpenBSD__ … … 85 124 # endif 86 125 #endif 126 #ifndef HAVE_CLEARENV 127 # define clearenv() do { if (environ) environ[0] = NULL; } while (0) 128 #endif 129 #ifndef HAVE_FDATASYNC 130 # define fdatasync fsync 131 #endif 132 #ifndef HAVE_XTABS 133 # define XTABS TAB3 134 #endif 87 135 88 136 … … 95 143 /* klogctl is in libc's klog.h, but we cheat and not #include that */ 96 144 int klogctl(int type, char *b, int len); 97 /* This is declared here rather than #including <libgen.h> in order to avoid98 * confusing the two versions of basename. See the dirname/basename man page99 * for details. */100 #if !defined __FreeBSD__101 char *dirname(char *path);102 #endif103 /* Include our own copy of struct sysinfo to avoid binary compatibility104 * problems with Linux 2.4, which changed things. Grumble, grumble. */105 struct sysinfo {106 long uptime; /* Seconds since boot */107 unsigned long loads[3]; /* 1, 5, and 15 minute load averages */108 unsigned long totalram; /* Total usable main memory size */109 unsigned long freeram; /* Available memory size */110 unsigned long sharedram; /* Amount of shared memory */111 unsigned long bufferram; /* Memory used by buffers */112 unsigned long totalswap; /* Total swap space size */113 unsigned long freeswap; /* swap space still available */114 unsigned short procs; /* Number of current processes */115 unsigned short pad; /* Padding needed for m68k */116 unsigned long totalhigh; /* Total high memory size */117 unsigned long freehigh; /* Available high memory size */118 unsigned int mem_unit; /* Memory unit size in bytes */119 char _f[20 - 2 * sizeof(long) - sizeof(int)]; /* Padding: libc5 uses this.. */120 };121 int sysinfo(struct sysinfo* info);122 145 #ifndef PATH_MAX 123 146 # define PATH_MAX 256 … … 125 148 #ifndef BUFSIZ 126 149 # define BUFSIZ 4096 150 #endif 151 152 153 /* Busybox does not use threads, we can speed up stdio. */ 154 #ifdef HAVE_UNLOCKED_STDIO 155 # undef getc 156 # define getc(stream) getc_unlocked(stream) 157 # undef getchar 158 # define getchar() getchar_unlocked() 159 # undef putc 160 # define putc(c, stream) putc_unlocked(c, stream) 161 # undef putchar 162 # define putchar(c) putchar_unlocked(c) 163 # undef fgetc 164 # define fgetc(stream) getc_unlocked(stream) 165 # undef fputc 166 # define fputc(c, stream) putc_unlocked(c, stream) 167 #endif 168 /* Above functions are required by POSIX.1-2008, below ones are extensions */ 169 #ifdef HAVE_UNLOCKED_LINE_OPS 170 # undef fgets 171 # define fgets(s, n, stream) fgets_unlocked(s, n, stream) 172 # undef fputs 173 # define fputs(s, stream) fputs_unlocked(s, stream) 127 174 #endif 128 175 … … 169 216 /* "long" is long enough on this system */ 170 217 typedef unsigned long uoff_t; 171 # define XATOOFF(a) xatoul_range( a, 0, LONG_MAX)218 # define XATOOFF(a) xatoul_range((a), 0, LONG_MAX) 172 219 /* usage: sz = BB_STRTOOFF(s, NULL, 10); if (errno || sz < 0) die(); */ 173 220 # define BB_STRTOOFF bb_strtoul … … 178 225 /* "long" is too short, need "long long" */ 179 226 typedef unsigned long long uoff_t; 180 # define XATOOFF(a) xatoull_range( a, 0, LLONG_MAX)227 # define XATOOFF(a) xatoull_range((a), 0, LLONG_MAX) 181 228 # define BB_STRTOOFF bb_strtoull 182 229 # define STRTOOFF strtoull … … 195 242 # else 196 243 typedef unsigned long uoff_t; 197 # define XATOOFF(a) xatoul_range( a, 0, LONG_MAX)244 # define XATOOFF(a) xatoul_range((a), 0, LONG_MAX) 198 245 # define BB_STRTOOFF bb_strtoul 199 246 # define STRTOOFF strtol … … 203 250 /* scary. better ideas? (but do *test* them first!) */ 204 251 #define OFF_T_MAX ((off_t)~((off_t)1 << (sizeof(off_t)*8-1))) 252 /* Users report bionic to use 32-bit off_t even if LARGEFILE support is requested. 253 * We misdetected that. Don't let it build: 254 */ 255 struct BUG_off_t_size_is_misdetected { 256 char BUG_off_t_size_is_misdetected[sizeof(off_t) == sizeof(uoff_t) ? 1 : -1]; 257 }; 205 258 206 259 /* Some useful definitions */ … … 211 264 #undef SKIP 212 265 #define SKIP ((int) 2) 213 214 /* for mtab.c */215 #define MTAB_GETMOUNTPT '1'216 #define MTAB_GETDEVICE '2'217 218 #define BUF_SIZE 8192219 #define EXPAND_ALLOC 1024220 266 221 267 /* Macros for min/max. */ … … 273 319 //TODO: supply a pointer to char[11] buffer (avoid statics)? 274 320 extern const char *bb_mode_string(mode_t mode) FAST_FUNC; 275 extern int is_directory(const char *name, int followLinks , struct stat *statBuf) FAST_FUNC;321 extern int is_directory(const char *name, int followLinks) FAST_FUNC; 276 322 enum { /* DO NOT CHANGE THESE VALUES! cp.c, mv.c, install.c depend on them. */ 277 323 FILEUTILS_PRESERVE_STATUS = 1 << 0, /* -p */ … … 288 334 FILEUTILS_SET_SECURITY_CONTEXT = 1 << 10, 289 335 #endif 336 FILEUTILS_IGNORE_CHMOD_ERR = 1 << 11, 290 337 }; 291 338 #define FILEUTILS_CP_OPTSTR "pdRfilsLH" IF_SELINUX("c") … … 324 371 /* this helper yells "short read!" if param is not -1 */ 325 372 extern void complain_copyfd_and_die(off_t sz) NORETURN FAST_FUNC; 373 326 374 extern char bb_process_escape_sequence(const char **ptr) FAST_FUNC; 327 375 char* strcpy_and_process_escape_sequences(char *dst, const char *src) FAST_FUNC; … … 332 380 * "abc/def/" -> "def" !! 333 381 */ 334 externchar *bb_get_last_path_component_strip(char *path) FAST_FUNC;382 char *bb_get_last_path_component_strip(char *path) FAST_FUNC; 335 383 /* "abc/def/" -> "" and it never modifies 'path' */ 336 extern char *bb_get_last_path_component_nostrip(const char *path) FAST_FUNC; 337 338 int ndelay_on(int fd) FAST_FUNC; 339 int ndelay_off(int fd) FAST_FUNC; 340 int close_on_exec_on(int fd) FAST_FUNC; 384 char *bb_get_last_path_component_nostrip(const char *path) FAST_FUNC; 385 /* Simpler version: does not special case "/" string */ 386 const char *bb_basename(const char *name) FAST_FUNC; 387 /* NB: can violate const-ness (similarly to strchr) */ 388 char *last_char_is(const char *s, int c) FAST_FUNC; 389 390 void ndelay_on(int fd) FAST_FUNC; 391 void ndelay_off(int fd) FAST_FUNC; 392 void close_on_exec_on(int fd) FAST_FUNC; 341 393 void xdup2(int, int) FAST_FUNC; 342 394 void xmove_fd(int, int) FAST_FUNC; … … 518 570 * This is useful if you plan to bind to resulting local lsa. 519 571 */ 520 #if ENABLE_FEATURE_IPV6521 572 int xsocket_type(len_and_sockaddr **lsap, int af, int sock_type) FAST_FUNC; 522 #else523 int xsocket_type(len_and_sockaddr **lsap, int sock_type) FAST_FUNC;524 #define xsocket_type(lsap, af, sock_type) xsocket_type((lsap), (sock_type))525 #endif526 573 int xsocket_stream(len_and_sockaddr **lsap) FAST_FUNC; 527 574 /* Create server socket bound to bindaddr:port. bindaddr can be NULL, … … 563 610 * otherwise no-op. Useful for ftp. 564 611 * NB: does NOT do htons() internally, just direct assignment. */ 565 void set_nport( len_and_sockaddr *lsa, unsigned port) FAST_FUNC;612 void set_nport(struct sockaddr *sa, unsigned port) FAST_FUNC; 566 613 /* Retrieve sin[6]_port or return -1 for non-INET[6] lsa's */ 567 614 int get_nport(const struct sockaddr *sa) FAST_FUNC; … … 592 639 socklen_t sa_size) FAST_FUNC; 593 640 641 uint16_t inet_cksum(uint16_t *addr, int len) FAST_FUNC; 594 642 595 643 char *xstrdup(const char *s) FAST_FUNC RETURNS_MALLOC; … … 636 684 void *xzalloc(size_t size) FAST_FUNC RETURNS_MALLOC; 637 685 void *xrealloc(void *old, size_t size) FAST_FUNC; 638 /* After xrealloc_vector(v, 4, idx) it's ok to use686 /* After v = xrealloc_vector(v, SHIFT, idx) it's ok to use 639 687 * at least v[idx] and v[idx+1], for all idx values. 640 * shift specifies how many new elements are added (1: 2, 2: 4... 8: 256...) 641 * when all elements are used up. New elements are zeroed out. */ 688 * SHIFT specifies how many new elements are added (1:2, 2:4, ..., 8:256...) 689 * when all elements are used up. New elements are zeroed out. 690 * xrealloc_vector(v, SHIFT, idx) *MUST* be called with consecutive IDXs - 691 * skipping an index is a bad bug - it may miss a realloc! 692 */ 642 693 #define xrealloc_vector(vector, shift, idx) \ 643 694 xrealloc_vector_helper((vector), (sizeof((vector)[0]) << 8) + (shift), (idx)) … … 646 697 647 698 extern ssize_t safe_read(int fd, void *buf, size_t count) FAST_FUNC; 648 extern ssize_t nonblock_ safe_read(int fd, void *buf, size_t count) FAST_FUNC;699 extern ssize_t nonblock_immune_read(int fd, void *buf, size_t count, int loop_on_EINTR) FAST_FUNC; 649 700 // NB: will return short read on error, not -1, 650 701 // if some data was read before error occurred … … 657 708 // Reads byte-by-byte. Useful when it is important to not read ahead. 658 709 // Bytes are appended to pfx (which must be malloced, or NULL). 659 extern char *xmalloc_reads(int fd, char *pfx,size_t *maxsz_p) FAST_FUNC;710 extern char *xmalloc_reads(int fd, size_t *maxsz_p) FAST_FUNC; 660 711 /* Reads block up to *maxsz_p (default: INT_MAX - 4095) */ 661 712 extern void *xmalloc_read(int fd, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC; 662 713 /* Returns NULL if file can't be opened (default max size: INT_MAX - 4095) */ 663 714 extern void *xmalloc_open_read_close(const char *filename, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC; 664 /* Autodetects gzip/bzip2 formats. fd may be in the middle of the file! */ 665 #if ENABLE_FEATURE_SEAMLESS_LZMA \ 715 /* Never returns NULL */ 716 extern void *xmalloc_xopen_read_close(const char *filename, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC; 717 718 #define SEAMLESS_COMPRESSION (0 \ 719 || ENABLE_FEATURE_SEAMLESS_XZ \ 720 || ENABLE_FEATURE_SEAMLESS_LZMA \ 666 721 || ENABLE_FEATURE_SEAMLESS_BZ2 \ 667 722 || ENABLE_FEATURE_SEAMLESS_GZ \ 668 /* || ENABLE_FEATURE_SEAMLESS_Z */669 extern void setup_unzip_on_fd(int fd /*, int fail_if_not_detected*/) FAST_FUNC; 670 # else671 # define setup_unzip_on_fd(...) ((void)0) 672 #endif 723 || ENABLE_FEATURE_SEAMLESS_Z) 724 725 #if SEAMLESS_COMPRESSION 726 /* Autodetects gzip/bzip2 formats. fd may be in the middle of the file! */ 727 extern int setup_unzip_on_fd(int fd, int fail_if_not_detected) FAST_FUNC; 673 728 /* Autodetects .gz etc */ 674 729 extern int open_zipped(const char *fname) FAST_FUNC; 730 #else 731 # define setup_unzip_on_fd(...) (0) 732 # define open_zipped(fname) open((fname), O_RDONLY); 733 #endif 675 734 extern void *xmalloc_open_zipped_read_close(const char *fname, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC; 676 /* Never returns NULL */677 extern void *xmalloc_xopen_read_close(const char *filename, size_t *maxsz_p) FAST_FUNC RETURNS_MALLOC;678 735 679 736 extern ssize_t safe_write(int fd, const void *buf, size_t count) FAST_FUNC; … … 693 750 extern void xprint_and_close_file(FILE *file) FAST_FUNC; 694 751 752 /* Reads a line from a text file, up to a newline or NUL byte, inclusive. 753 * Returns malloc'ed char*. If end is NULL '\n' isn't considered 754 * end of line. If end isn't NULL, length of the chunk is stored in it. 755 * Returns NULL if EOF/error. 756 */ 695 757 extern char *bb_get_chunk_from_file(FILE *file, int *end) FAST_FUNC; 696 extern char *bb_get_chunk_with_continuation(FILE *file, int *end, int *lineno) FAST_FUNC;697 758 /* Reads up to (and including) TERMINATING_STRING: */ 698 759 extern char *xmalloc_fgets_str(FILE *file, const char *terminating_string) FAST_FUNC RETURNS_MALLOC; … … 736 797 737 798 char *safe_gethostname(void) FAST_FUNC; 738 char *safe_getdomainname(void) FAST_FUNC;739 799 740 800 /* Convert each alpha char in str to lower-case */ … … 759 819 unsigned long block_size, unsigned long display_unit) FAST_FUNC; 760 820 /* Put a string of hex bytes ("1b2e66fe"...), return advanced pointer */ 761 char *bin2hex(char * buf, const char *cp, int count) FAST_FUNC;821 char *bin2hex(char *dst, const char *src, int count) FAST_FUNC; 762 822 /* Reverse */ 763 char* hex2bin(char *dst, const char *s tr, int count) FAST_FUNC;823 char* hex2bin(char *dst, const char *src, int count) FAST_FUNC; 764 824 765 825 /* Generate a UUID */ … … 813 873 char* uid2uname(uid_t uid) FAST_FUNC; 814 874 char* gid2group(gid_t gid) FAST_FUNC; 815 char* uid2uname_utoa( longuid) FAST_FUNC;816 char* gid2group_utoa( longgid) FAST_FUNC;875 char* uid2uname_utoa(uid_t uid) FAST_FUNC; 876 char* gid2group_utoa(gid_t gid) FAST_FUNC; 817 877 /* versions which cache results (useful for ps, ls etc) */ 818 878 const char* get_cached_username(uid_t uid) FAST_FUNC; … … 820 880 void clear_username_cache(void) FAST_FUNC; 821 881 /* internally usernames are saved in fixed-sized char[] buffers */ 822 enum { USERNAME_MAX_SIZE = 16 - sizeof(int) };882 enum { USERNAME_MAX_SIZE = 32 - sizeof(uid_t) }; 823 883 #if ENABLE_FEATURE_CHECK_NAMES 824 884 void die_if_bad_username(const char* name) FAST_FUNC; … … 835 895 #endif 836 896 897 837 898 int execable_file(const char *name) FAST_FUNC; 838 899 char *find_execable(const char *filename, char **PATHp) FAST_FUNC; … … 843 904 */ 844 905 #if ENABLE_FEATURE_PREFER_APPLETS 845 int bb_execvp(const char *file, char *const argv[]) FAST_FUNC; 846 #define BB_EXECVP(prog,cmd) bb_execvp(prog,cmd) 906 int BB_EXECVP(const char *file, char *const argv[]) FAST_FUNC; 847 907 #define BB_EXECLP(prog,cmd,...) \ 848 execlp((find_applet_by_name(prog) >= 0) ? CONFIG_BUSYBOX_EXEC_PATH : prog, \ 849 cmd, __VA_ARGS__) 908 do { \ 909 if (find_applet_by_name(prog) >= 0) \ 910 execlp(bb_busybox_exec_path, cmd, __VA_ARGS__); \ 911 execlp(prog, cmd, __VA_ARGS__); \ 912 } while (0) 850 913 #else 851 914 #define BB_EXECVP(prog,cmd) execvp(prog,cmd) 852 #define BB_EXECLP(prog,cmd,...) execlp(prog,cmd, 915 #define BB_EXECLP(prog,cmd,...) execlp(prog,cmd,__VA_ARGS__) 853 916 #endif 854 917 int BB_EXECVP_or_die(char **argv) NORETURN FAST_FUNC; … … 884 947 /* Same as wait4pid(spawn(argv)), but with NOFORK/NOEXEC if configured: */ 885 948 int spawn_and_wait(char **argv) FAST_FUNC; 886 struct nofork_save_area {887 jmp_buf die_jmp;888 const char *applet_name;889 uint32_t option_mask32;890 int die_sleep;891 uint8_t xfunc_error_retval;892 smallint saved;893 };894 void save_nofork_data(struct nofork_save_area *save) FAST_FUNC;895 void restore_nofork_data(struct nofork_save_area *save) FAST_FUNC;896 949 /* Does NOT check that applet is NOFORK, just blindly runs it */ 897 950 int run_nofork_applet(int applet_no, char **argv) FAST_FUNC; 898 int run_nofork_applet_prime(struct nofork_save_area *old, int applet_no, char **argv) FAST_FUNC;899 951 900 952 /* Helpers for daemonization. … … 926 978 DAEMON_CLOSE_EXTRA_FDS = 4, 927 979 DAEMON_ONLY_SANITIZE = 8, /* internal use */ 980 DAEMON_DOUBLE_FORK = 16, /* double fork to avoid controlling tty */ 928 981 }; 929 982 #if BB_MMU … … 934 987 #else 935 988 extern bool re_execed; 989 /* Note: re_exec() and fork_or_rexec() do argv[0][0] |= 0x80 on NOMMU! 990 * _Parent_ needs to undo it if it doesn't want to have argv[0] mangled. 991 */ 936 992 void re_exec(char **argv) NORETURN FAST_FUNC; 937 993 pid_t fork_or_rexec(char **argv) FAST_FUNC; … … 963 1019 964 1020 1021 /* Having next pointer as a first member allows easy creation 1022 * of "llist-compatible" structs, and using llist_FOO functions 1023 * on them. 1024 */ 965 1025 typedef struct llist_t { 1026 struct llist_t *link; 966 1027 char *data; 967 struct llist_t *link;968 1028 } llist_t; 969 1029 void llist_add_to(llist_t **old_head, void *data) FAST_FUNC; … … 1116 1176 * malloc and return it in *devname. 1117 1177 * return value: 1: read-only loopdev was setup, 0: rw, < 0: error */ 1118 extern int set_loop(char **devname, const char *file, unsigned long long offset ) FAST_FUNC;1178 extern int set_loop(char **devname, const char *file, unsigned long long offset, int ro) FAST_FUNC; 1119 1179 1120 1180 /* Like bb_ask below, but asks on stdin with no timeout. */ … … 1137 1197 // keep a copy of current line 1138 1198 PARSE_KEEP_COPY = 0x00200000 * ENABLE_FEATURE_CROND_D, 1139 // PARSE_ESCAPE = 0x00400000, // process escape sequences in tokens 1199 PARSE_EOL_COMMENTS = 0x00400000, // comments are recognized even if they aren't the first char 1140 1200 // NORMAL is: 1141 1201 // * remove leading and trailing delimiters and collapse … … 1143 1203 // * warn and continue if less than mintokens delimiters found 1144 1204 // * grab everything into last token 1145 PARSE_NORMAL = PARSE_COLLAPSE | PARSE_TRIM | PARSE_GREEDY, 1205 // * comments are recognized even if they aren't the first char 1206 PARSE_NORMAL = PARSE_COLLAPSE | PARSE_TRIM | PARSE_GREEDY | PARSE_EOL_COMMENTS, 1146 1207 }; 1147 1208 typedef struct parser_t { 1148 1209 FILE *fp; 1149 char *line;1150 1210 char *data; 1211 char *line, *nline; 1212 size_t line_alloc, nline_alloc; 1151 1213 int lineno; 1152 1214 } parser_t; … … 1164 1226 * filename should not be NULL. */ 1165 1227 char *concat_path_file(const char *path, const char *filename) FAST_FUNC; 1228 /* Returns NULL on . and .. */ 1166 1229 char *concat_subpath_file(const char *path, const char *filename) FAST_FUNC; 1167 const char *bb_basename(const char *name) FAST_FUNC;1168 /* NB: can violate const-ness (similarly to strchr) */1169 char *last_char_is(const char *s, int c) FAST_FUNC;1170 1230 1171 1231 … … 1180 1240 char *bb_simplify_abs_path_inplace(char *path) FAST_FUNC; 1181 1241 1182 #define FAIL_DELAY 31242 #define LOGIN_FAIL_DELAY 3 1183 1243 extern void bb_do_delay(int seconds) FAST_FUNC; 1184 1244 extern void change_identity(const struct passwd *pw) FAST_FUNC; 1185 1245 extern void run_shell(const char *shell, int loginshell, const char *command, const char **additional_args) NORETURN FAST_FUNC; 1246 1247 /* Returns $SHELL, getpwuid(getuid())->pw_shell, or DEFAULT_SHELL. 1248 * Note that getpwuid result might need xstrdup'ing 1249 * if there is a possibility of intervening getpwxxx() calls. 1250 */ 1251 const char *get_shell_name(void) FAST_FUNC; 1252 1186 1253 #if ENABLE_SELINUX 1187 1254 extern void renew_current_security_context(void) FAST_FUNC; … … 1195 1262 #endif 1196 1263 extern void selinux_or_die(void) FAST_FUNC; 1264 1265 1266 /* systemd support */ 1267 #define SD_LISTEN_FDS_START 3 1268 int sd_listen_fds(void); 1269 1197 1270 1198 1271 /* setup_environment: … … 1214 1287 #define SETUP_ENV_CLEARENV (1 << 1) 1215 1288 #define SETUP_ENV_TO_TMP (1 << 2) 1289 #define SETUP_ENV_NO_CHDIR (1 << 4) 1216 1290 extern void setup_environment(const char *shell, int flags, const struct passwd *pw) FAST_FUNC; 1217 1291 extern int correct_password(const struct passwd *pw) FAST_FUNC; … … 1222 1296 extern char *pw_encrypt(const char *clear, const char *salt, int cleanup) FAST_FUNC; 1223 1297 extern int obscure(const char *old, const char *newval, const struct passwd *pwdp) FAST_FUNC; 1224 /* rnd is additional random input. New one is returned. 1298 /* 1299 * rnd is additional random input. New one is returned. 1225 1300 * Useful if you call crypt_make_salt many times in a row: 1226 1301 * rnd = crypt_make_salt(buf1, 4, 0); … … 1229 1304 * (otherwise we risk having same salt generated) 1230 1305 */ 1231 extern int crypt_make_salt(char *p, int cnt, int rnd) FAST_FUNC; 1306 extern int crypt_make_salt(char *p, int cnt /*, int rnd*/) FAST_FUNC; 1307 /* "$N$" + sha_salt_16_bytes + NUL */ 1308 #define MAX_PW_SALT_LEN (3 + 16 + 1) 1309 extern char* crypt_make_pw_salt(char p[MAX_PW_SALT_LEN], const char *algo) FAST_FUNC; 1310 1232 1311 1233 1312 /* Returns number of lines changed, or -1 on error */ … … 1276 1355 #ifdef __GLIBC__ 1277 1356 /* At least glibc has horrendously large inline for this, so wrap it */ 1278 unsigned long long bb_makedev(unsigned int major, unsigned intminor) FAST_FUNC;1357 unsigned long long bb_makedev(unsigned major, unsigned minor) FAST_FUNC; 1279 1358 #undef makedev 1280 1359 #define makedev(a,b) bb_makedev(a,b) … … 1297 1376 KEYCODE_PAGEUP = -10, 1298 1377 KEYCODE_PAGEDOWN = -11, 1299 1300 KEYCODE_CTRL_UP = KEYCODE_UP & ~0x40, 1301 KEYCODE_CTRL_DOWN = KEYCODE_DOWN & ~0x40, 1378 // -12 is reserved for Alt/Ctrl/Shift-TAB 1379 #if 0 1380 KEYCODE_FUN1 = -13, 1381 KEYCODE_FUN2 = -14, 1382 KEYCODE_FUN3 = -15, 1383 KEYCODE_FUN4 = -16, 1384 KEYCODE_FUN5 = -17, 1385 KEYCODE_FUN6 = -18, 1386 KEYCODE_FUN7 = -19, 1387 KEYCODE_FUN8 = -20, 1388 KEYCODE_FUN9 = -21, 1389 KEYCODE_FUN10 = -22, 1390 KEYCODE_FUN11 = -23, 1391 KEYCODE_FUN12 = -24, 1392 #endif 1393 /* Be sure that last defined value is small enough 1394 * to not interfere with Alt/Ctrl/Shift bits. 1395 * So far we do not exceed -31 (0xfff..fffe1), 1396 * which gives us three upper bits in LSB to play with. 1397 */ 1398 //KEYCODE_SHIFT_TAB = (-12) & ~0x80, 1399 //KEYCODE_SHIFT_... = KEYCODE_... & ~0x80, 1400 //KEYCODE_CTRL_UP = KEYCODE_UP & ~0x40, 1401 //KEYCODE_CTRL_DOWN = KEYCODE_DOWN & ~0x40, 1302 1402 KEYCODE_CTRL_RIGHT = KEYCODE_RIGHT & ~0x40, 1303 1403 KEYCODE_CTRL_LEFT = KEYCODE_LEFT & ~0x40, 1304 #if 0 1305 KEYCODE_FUN1 = -12, 1306 KEYCODE_FUN2 = -13, 1307 KEYCODE_FUN3 = -14, 1308 KEYCODE_FUN4 = -15, 1309 KEYCODE_FUN5 = -16, 1310 KEYCODE_FUN6 = -17, 1311 KEYCODE_FUN7 = -18, 1312 KEYCODE_FUN8 = -19, 1313 KEYCODE_FUN9 = -20, 1314 KEYCODE_FUN10 = -21, 1315 KEYCODE_FUN11 = -22, 1316 KEYCODE_FUN12 = -23, 1317 #endif 1404 //KEYCODE_ALT_UP = KEYCODE_UP & ~0x20, 1405 //KEYCODE_ALT_DOWN = KEYCODE_DOWN & ~0x20, 1406 KEYCODE_ALT_RIGHT = KEYCODE_RIGHT & ~0x20, 1407 KEYCODE_ALT_LEFT = KEYCODE_LEFT & ~0x20, 1408 1318 1409 KEYCODE_CURSOR_POS = -0x100, /* 0xfff..fff00 */ 1319 1410 /* How long is the longest ESC sequence we know? … … 1342 1433 #if ENABLE_FEATURE_EDITING 1343 1434 /* It's NOT just ENABLEd or disabled. It's a number: */ 1344 # if def CONFIG_FEATURE_EDITING_HISTORY1435 # if defined CONFIG_FEATURE_EDITING_HISTORY && CONFIG_FEATURE_EDITING_HISTORY > 0 1345 1436 # define MAX_HISTORY (CONFIG_FEATURE_EDITING_HISTORY + 0) 1437 unsigned size_from_HISTFILESIZE(const char *hp); 1346 1438 # else 1347 1439 # define MAX_HISTORY 0 … … 1353 1445 int cnt_history; 1354 1446 int cur_history; 1447 int max_history; /* must never be <= 0 */ 1355 1448 # if ENABLE_FEATURE_EDITING_SAVEHISTORY 1449 /* meaning of this field depends on FEATURE_EDITING_SAVE_ON_EXIT: 1450 * if !FEATURE_EDITING_SAVE_ON_EXIT: "how many lines are 1451 * in on-disk history" 1452 * if FEATURE_EDITING_SAVE_ON_EXIT: "how many in-memory lines are 1453 * also in on-disk history (and thus need to be skipped on save)" 1454 */ 1356 1455 unsigned cnt_history_in_file; 1357 1456 const char *hist_file; … … 1361 1460 } line_input_t; 1362 1461 enum { 1363 DO_HISTORY = 1 * (MAX_HISTORY > 0), 1364 SAVE_HISTORY = 2 * (MAX_HISTORY > 0) * ENABLE_FEATURE_EDITING_SAVEHISTORY, 1365 TAB_COMPLETION = 4 * ENABLE_FEATURE_TAB_COMPLETION, 1366 USERNAME_COMPLETION = 8 * ENABLE_FEATURE_USERNAME_COMPLETION, 1367 VI_MODE = 0x10 * ENABLE_FEATURE_EDITING_VI, 1368 WITH_PATH_LOOKUP = 0x20, 1369 FOR_SHELL = DO_HISTORY | SAVE_HISTORY | TAB_COMPLETION | USERNAME_COMPLETION, 1462 DO_HISTORY = 1 * (MAX_HISTORY > 0), 1463 TAB_COMPLETION = 2 * ENABLE_FEATURE_TAB_COMPLETION, 1464 USERNAME_COMPLETION = 4 * ENABLE_FEATURE_USERNAME_COMPLETION, 1465 VI_MODE = 8 * ENABLE_FEATURE_EDITING_VI, 1466 WITH_PATH_LOOKUP = 0x10, 1467 FOR_SHELL = DO_HISTORY | TAB_COMPLETION | USERNAME_COMPLETION, 1370 1468 }; 1371 1469 line_input_t *new_line_input_t(int flags) FAST_FUNC; 1372 1470 /* So far static: void free_line_input_t(line_input_t *n) FAST_FUNC; */ 1373 /* maxsize must be >= 2. 1471 /* 1472 * maxsize must be >= 2. 1374 1473 * Returns: 1375 1474 * -1 on read errors or EOF, or on bare Ctrl-D, … … 1377 1476 * >0 length of input string, including terminating '\n' 1378 1477 */ 1379 int read_line_input(const char* prompt, char* command, int maxsize, line_input_t *state) FAST_FUNC; 1478 int read_line_input(line_input_t *st, const char *prompt, char *command, int maxsize, int timeout) FAST_FUNC; 1479 # if ENABLE_FEATURE_EDITING_SAVE_ON_EXIT 1480 void save_history(line_input_t *st); 1481 # endif 1380 1482 #else 1381 1483 #define MAX_HISTORY 0 1382 1484 int read_line_input(const char* prompt, char* command, int maxsize) FAST_FUNC; 1383 #define read_line_input( prompt, command, maxsize, state) \1485 #define read_line_input(state, prompt, command, maxsize, timeout) \ 1384 1486 read_line_input(prompt, command, maxsize) 1385 1487 #endif … … 1415 1517 #endif 1416 1518 int FAST_FUNC procps_read_smaps(pid_t pid, struct smaprec *total, 1417 1519 void (*cb)(struct smaprec *, void *), void *data); 1418 1520 1419 1521 typedef struct procps_status_t { … … 1427 1529 char *exe; 1428 1530 IF_SELINUX(char *context;) 1531 IF_FEATURE_SHOW_THREADS(unsigned main_thread_pid;) 1429 1532 /* Everything below must contain no ptrs to malloc'ed data: 1430 1533 * it is memset(0) for each process in procps_scan() */ … … 1488 1591 PSSCAN_RUIDGID = (1 << 21) * ENABLE_FEATURE_PS_ADDITIONAL_COLUMNS, 1489 1592 PSSCAN_TASKS = (1 << 22) * ENABLE_FEATURE_SHOW_THREADS, 1490 /* These are all retrieved from proc/NN/stat in one go: */1491 PSSCAN_STAT = PSSCAN_PPID | PSSCAN_PGID | PSSCAN_SID1492 /**/ | PSSCAN_COMM | PSSCAN_STATE1493 /**/ | PSSCAN_VSZ | PSSCAN_RSS1494 /**/ | PSSCAN_STIME | PSSCAN_UTIME | PSSCAN_START_TIME1495 /**/ | PSSCAN_TTY | PSSCAN_NICE1496 /**/ | PSSCAN_CPU1497 1593 }; 1498 1594 //procps_status_t* alloc_procps_scan(void) FAST_FUNC; … … 1508 1604 1509 1605 1510 extern const char bb_uuenc_tbl_base64[]; 1511 extern const char bb_uuenc_tbl_std[]; 1606 /* Use strict=1 if you process input from untrusted source: 1607 * it will return NULL on invalid %xx (bad hex chars) 1608 * and str + 1 if decoded char is / or NUL. 1609 * In non-strict mode, it always succeeds (returns str), 1610 * and also it additionally decoded '+' to space. 1611 */ 1612 char *percent_decode_in_place(char *str, int strict) FAST_FUNC; 1613 1614 1615 extern const char bb_uuenc_tbl_base64[] ALIGN1; 1616 extern const char bb_uuenc_tbl_std[] ALIGN1; 1512 1617 void bb_uuencode(char *store, const void *s, int length, const char *tbl) FAST_FUNC; 1513 1618 enum { … … 1516 1621 BASE64_FLAG_NO_STOP_CHAR = 0x80, 1517 1622 }; 1518 void FAST_FUNC read_base64(FILE *src_stream, FILE *dst_stream, int flags); 1623 const char *decode_base64(char **pp_dst, const char *src) FAST_FUNC; 1624 void read_base64(FILE *src_stream, FILE *dst_stream, int flags) FAST_FUNC; 1519 1625 1520 1626 typedef struct md5_ctx_t { … … 1531 1637 uint8_t wbuffer[128]; /* always correctly aligned for uint64_t */ 1532 1638 } sha512_ctx_t; 1639 typedef struct sha3_ctx_t { 1640 uint64_t state[25]; 1641 unsigned bytes_queued; 1642 } sha3_ctx_t; 1533 1643 void md5_begin(md5_ctx_t *ctx) FAST_FUNC; 1534 void md5_hash(md5_ctx_t *ctx, const void * data, size_t length) FAST_FUNC;1644 void md5_hash(md5_ctx_t *ctx, const void *buffer, size_t len) FAST_FUNC; 1535 1645 void md5_end(md5_ctx_t *ctx, void *resbuf) FAST_FUNC; 1536 1646 void sha1_begin(sha1_ctx_t *ctx) FAST_FUNC; … … 1543 1653 void sha512_hash(sha512_ctx_t *ctx, const void *buffer, size_t len) FAST_FUNC; 1544 1654 void sha512_end(sha512_ctx_t *ctx, void *resbuf) FAST_FUNC; 1655 void sha3_begin(sha3_ctx_t *ctx) FAST_FUNC; 1656 void sha3_hash(sha3_ctx_t *ctx, const void *buffer, size_t len) FAST_FUNC; 1657 void sha3_end(sha3_ctx_t *ctx, void *resbuf) FAST_FUNC; 1545 1658 1546 1659 extern uint32_t *global_crc32_table; … … 1558 1671 1559 1672 typedef struct bb_progress_t { 1560 off_t lastsize; 1561 unsigned lastupdate_sec; 1673 unsigned last_size; 1674 unsigned last_update_sec; 1675 unsigned last_change_sec; 1562 1676 unsigned start_sec; 1563 smallint inited;1677 const char *curfile; 1564 1678 } bb_progress_t; 1565 1679 1566 void bb_progress_init(bb_progress_t *p) FAST_FUNC; 1567 void bb_progress_update(bb_progress_t *p, const char *curfile, 1568 off_t beg_range, off_t transferred, 1569 off_t totalsize) FAST_FUNC; 1680 #define is_bb_progress_inited(p) ((p)->curfile != NULL) 1681 #define bb_progress_free(p) do { \ 1682 if (ENABLE_UNICODE_SUPPORT) free((char*)((p)->curfile)); \ 1683 (p)->curfile = NULL; \ 1684 } while (0) 1685 void bb_progress_init(bb_progress_t *p, const char *curfile) FAST_FUNC; 1686 void bb_progress_update(bb_progress_t *p, 1687 uoff_t beg_range, 1688 uoff_t transferred, 1689 uoff_t totalsize) FAST_FUNC; 1690 1570 1691 1571 1692 extern const char *applet_name; … … 1581 1702 */ 1582 1703 /* "BusyBox vN.N.N (timestamp or extra_version)" */ 1583 extern const char bb_banner[] ;1584 extern const char bb_msg_memory_exhausted[] ;1585 extern const char bb_msg_invalid_date[] ;1704 extern const char bb_banner[] ALIGN1; 1705 extern const char bb_msg_memory_exhausted[] ALIGN1; 1706 extern const char bb_msg_invalid_date[] ALIGN1; 1586 1707 #define bb_msg_read_error "read error" 1587 1708 #define bb_msg_write_error "write error" 1588 extern const char bb_msg_unknown[] ;1589 extern const char bb_msg_can_not_create_raw_socket[] ;1590 extern const char bb_msg_perm_denied_are_you_root[] ;1591 extern const char bb_msg_you_must_be_root[] ;1592 extern const char bb_msg_requires_arg[] ;1593 extern const char bb_msg_invalid_arg[] ;1594 extern const char bb_msg_standard_input[] ;1595 extern const char bb_msg_standard_output[] ;1709 extern const char bb_msg_unknown[] ALIGN1; 1710 extern const char bb_msg_can_not_create_raw_socket[] ALIGN1; 1711 extern const char bb_msg_perm_denied_are_you_root[] ALIGN1; 1712 extern const char bb_msg_you_must_be_root[] ALIGN1; 1713 extern const char bb_msg_requires_arg[] ALIGN1; 1714 extern const char bb_msg_invalid_arg[] ALIGN1; 1715 extern const char bb_msg_standard_input[] ALIGN1; 1716 extern const char bb_msg_standard_output[] ALIGN1; 1596 1717 1597 1718 /* NB: (bb_hexdigits_upcase[i] | 0x20) -> lowercase hex digit */ 1598 extern const char bb_hexdigits_upcase[] ;1599 1600 extern const char bb_path_wtmp_file[] ;1719 extern const char bb_hexdigits_upcase[] ALIGN1; 1720 1721 extern const char bb_path_wtmp_file[] ALIGN1; 1601 1722 1602 1723 /* Busybox mount uses either /proc/mounts or /etc/mtab to … … 1604 1725 #define bb_path_mtab_file IF_FEATURE_MTAB_SUPPORT("/etc/mtab")IF_NOT_FEATURE_MTAB_SUPPORT("/proc/mounts") 1605 1726 1606 #define bb_path_passwd_file "/etc/passwd"1607 #define bb_path_ shadow_file "/etc/shadow"1608 #define bb_path_ gshadow_file "/etc/gshadow"1609 #define bb_path_g roup_file "/etc/group"1727 #define bb_path_passwd_file _PATH_PASSWD 1728 #define bb_path_group_file _PATH_GROUP 1729 #define bb_path_shadow_file _PATH_SHADOW 1730 #define bb_path_gshadow_file _PATH_GSHADOW 1610 1731 1611 1732 #define bb_path_motd_file "/etc/motd" 1612 1733 1613 1734 #define bb_dev_null "/dev/null" 1614 extern const char bb_busybox_exec_path[] ;1735 extern const char bb_busybox_exec_path[] ALIGN1; 1615 1736 /* util-linux manpage says /sbin:/bin:/usr/sbin:/usr/bin, 1616 1737 * but I want to save a few bytes here */ 1617 extern const char bb_PATH_root_path[] ; /* "PATH=/sbin:/usr/sbin:/bin:/usr/bin" */1738 extern const char bb_PATH_root_path[] ALIGN1; /* "PATH=/sbin:/usr/sbin:/bin:/usr/bin" */ 1618 1739 #define bb_default_root_path (bb_PATH_root_path + sizeof("PATH")) 1619 1740 #define bb_default_path (bb_PATH_root_path + sizeof("PATH=/sbin:/usr/sbin")) … … 1645 1766 * don't forget to change increment constant. */ 1646 1767 #define LIBBB_DEFAULT_LOGIN_SHELL "-/bin/sh" 1647 extern const char bb_default_login_shell[] ;1768 extern const char bb_default_login_shell[] ALIGN1; 1648 1769 /* "/bin/sh" */ 1649 1770 #define DEFAULT_SHELL (bb_default_login_shell+1) -
branches/3.2/mindi-busybox/include/platform.h
r3085 r3232 8 8 #define BB_PLATFORM_H 1 9 9 10 /* Assume all these functions exist by default. Platforms where it is not11 * true will #undef them below.12 */13 #define HAVE_FDPRINTF 114 #define HAVE_MEMRCHR 115 #define HAVE_MKDTEMP 116 #define HAVE_SETBIT 117 #define HAVE_STRCASESTR 118 #define HAVE_STRCHRNUL 119 #define HAVE_STRSEP 120 #define HAVE_STRSIGNAL 121 #define HAVE_VASPRINTF 122 10 23 11 /* Convenience macros to test the version of gcc. */ … … 36 24 # endif 37 25 #endif 38 39 /* Define macros for some gcc attributes. This permits us to use the40 macros freely, and know that they will come into play for the41 version of gcc in which they are supported. */42 26 43 27 #if !__GNUC_PREREQ(2,7) … … 94 78 95 79 /* -fwhole-program makes all symbols local. The attribute externally_visible 96 80 * forces a symbol global. */ 97 81 #if __GNUC_PREREQ(4,1) 98 82 # define EXTERNALLY_VISIBLE __attribute__(( visibility("default") )) … … 110 94 111 95 /* We use __extension__ in some places to suppress -pedantic warnings 112 113 96 * about GCC extensions. This feature didn't work properly before 97 * gcc 2.8. */ 114 98 #if !__GNUC_PREREQ(2,8) 115 99 # ifndef __extension__ 116 100 # define __extension__ 117 # endif118 #endif119 120 /* gcc-2.95 had no va_copy but only __va_copy. */121 #if !__GNUC_PREREQ(3,0)122 # include <stdarg.h>123 # if !defined va_copy && defined __va_copy124 # define va_copy(d,s) __va_copy((d),(s))125 101 # endif 126 102 #endif … … 141 117 /* Make all declarations hidden (-fvisibility flag only affects definitions) */ 142 118 /* (don't include system headers after this until corresponding pop!) */ 143 #if __GNUC_PREREQ(4,1) 119 #if __GNUC_PREREQ(4,1) && !defined(__CYGWIN__) 144 120 # define PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN _Pragma("GCC visibility push(hidden)") 145 121 # define POP_SAVED_FUNCTION_VISIBILITY _Pragma("GCC visibility pop") … … 148 124 # define POP_SAVED_FUNCTION_VISIBILITY 149 125 #endif 126 127 /* gcc-2.95 had no va_copy but only __va_copy. */ 128 #if !__GNUC_PREREQ(3,0) 129 # include <stdarg.h> 130 # if !defined va_copy && defined __va_copy 131 # define va_copy(d,s) __va_copy((d),(s)) 132 # endif 133 #endif 134 150 135 151 136 /* ---- Endian Detection ------------------------------------ */ … … 216 201 #endif 217 202 203 218 204 /* ---- Unaligned access ------------------------------------ */ 205 206 #include <stdint.h> 207 typedef int bb__aliased_int FIX_ALIASING; 208 typedef long bb__aliased_long FIX_ALIASING; 209 typedef uint16_t bb__aliased_uint16_t FIX_ALIASING; 210 typedef uint32_t bb__aliased_uint32_t FIX_ALIASING; 219 211 220 212 /* NB: unaligned parameter should be a pointer, aligned one - … … 222 214 */ 223 215 #if defined(i386) || defined(__x86_64__) || defined(__powerpc__) 224 # include <stdint.h> 225 typedef int bb__aliased_int FIX_ALIASING; 226 typedef uint16_t bb__aliased_uint16_t FIX_ALIASING; 227 typedef uint32_t bb__aliased_uint32_t FIX_ALIASING; 228 # define move_from_unaligned_int(v, intp) ((v) = *(bb__aliased_int*)(intp)) 216 # define move_from_unaligned_int(v, intp) ((v) = *(bb__aliased_int*)(intp)) 217 # define move_from_unaligned_long(v, longp) ((v) = *(bb__aliased_long*)(longp)) 229 218 # define move_from_unaligned16(v, u16p) ((v) = *(bb__aliased_uint16_t*)(u16p)) 230 219 # define move_from_unaligned32(v, u32p) ((v) = *(bb__aliased_uint32_t*)(u32p)) … … 235 224 /* performs reasonably well (gcc usually inlines memcpy here) */ 236 225 # define move_from_unaligned_int(v, intp) (memcpy(&(v), (intp), sizeof(int))) 226 # define move_from_unaligned_long(v, longp) (memcpy(&(v), (longp), sizeof(long))) 237 227 # define move_from_unaligned16(v, u16p) (memcpy(&(v), (u16p), 2)) 238 228 # define move_from_unaligned32(v, u32p) (memcpy(&(v), (u32p), 4)) 239 229 # define move_to_unaligned16(u16p, v) do { \ 240 230 uint16_t __t = (v); \ 241 memcpy((u16p), &__t, 4); \231 memcpy((u16p), &__t, 2); \ 242 232 } while (0) 243 233 # define move_to_unaligned32(u32p, v) do { \ … … 247 237 #endif 248 238 249 /* ---- Compiler dependent settings ------------------------- */ 250 251 #if (defined __digital__ && defined __unix__) \ 252 || defined __APPLE__ \ 253 || defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__ 254 # undef HAVE_MNTENT_H 255 # undef HAVE_SYS_STATFS_H 256 #else 257 # define HAVE_MNTENT_H 1 258 /* Patch bco to compile this busybox on rhel3 */ 259 #include <linux/version.h> 260 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0) 261 # define HAVE_SYS_STATFS_H 1 262 #endif 263 #endif 264 265 /*----- Kernel versioning ------------------------------------*/ 266 267 #ifndef KERNEL_VERSION 268 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) 269 #endif 270 271 /* ---- Miscellaneous --------------------------------------- */ 272 273 #if defined __GLIBC__ || defined __UCLIBC__ \ 274 || defined __dietlibc__ || defined _NEWLIB_VERSION 275 # include <features.h> 276 #endif 277 278 /* Size-saving "small" ints (arch-dependent) */ 239 240 /* ---- Size-saving "small" ints (arch-dependent) ----------- */ 241 279 242 #if defined(i386) || defined(__x86_64__) || defined(__mips__) || defined(__cris__) 280 243 /* add other arches which benefit from this... */ … … 296 259 #endif 297 260 298 /* Try to defeat gcc's alignment of "char message[]"-like data */ 299 #if 1 /* if needed: !defined(arch1) && !defined(arch2) */ 261 262 /*----- Kernel versioning ------------------------------------*/ 263 264 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) 265 266 267 /* ---- Miscellaneous --------------------------------------- */ 268 269 #if defined __GLIBC__ \ 270 || defined __UCLIBC__ \ 271 || defined __dietlibc__ \ 272 || defined __BIONIC__ \ 273 || defined _NEWLIB_VERSION 274 # include <features.h> 275 #endif 276 277 /* Define bb_setpgrp */ 278 #if defined(__digital__) && defined(__unix__) 279 /* use legacy setpgrp(pid_t, pid_t) for now. move to platform.c */ 280 # define bb_setpgrp() do { pid_t __me = getpid(); setpgrp(__me, __me); } while (0) 281 #else 282 # define bb_setpgrp() setpgrp() 283 #endif 284 285 /* fdprintf is more readable, we used it before dprintf was standardized */ 286 #include <unistd.h> 287 #define fdprintf dprintf 288 289 /* Useful for defeating gcc's alignment of "char message[]"-like data */ 290 #if !defined(__s390__) 291 /* on s390[x], non-word-aligned data accesses require larger code */ 300 292 # define ALIGN1 __attribute__((aligned(1))) 301 293 # define ALIGN2 __attribute__((aligned(2))) … … 308 300 #endif 309 301 310 311 /* uclibc does not implement daemon() for no-mmu systems. 302 /* 312 303 * For 0.9.29 and svn, __ARCH_USE_MMU__ indicates no-mmu reliably. 313 304 * For earlier versions there is no reliable way to check if we are building … … 326 317 #endif 327 318 328 /* Don't use lchown with glibc older than 2.1.x */329 #if defined(__GLIBC__) && __GLIBC__ <= 2 && __GLIBC_MINOR__ < 1330 # define lchown chown331 #endif332 333 319 #if defined(__digital__) && defined(__unix__) 334 335 320 # include <standards.h> 336 321 # include <inttypes.h> 337 322 # define PRIu32 "u" 338 /* use legacy setpgrp(pid_t,pid_t) for now. move to platform.c */339 # define bb_setpgrp() do { pid_t __me = getpid(); setpgrp(__me, __me); } while (0)340 323 # if !defined ADJ_OFFSET_SINGLESHOT && defined MOD_CLKA && defined MOD_OFFSET 341 324 # define ADJ_OFFSET_SINGLESHOT (MOD_CLKA | MOD_OFFSET) … … 350 333 # define ADJ_TICK MOD_CLKB 351 334 # endif 352 353 #else 354 355 # define bb_setpgrp() setpgrp() 356 357 #endif 358 359 #if defined(__GLIBC__) 360 # define fdprintf dprintf 335 #endif 336 337 #if defined(__CYGWIN__) 338 # define MAXSYMLINKS SYMLOOP_MAX 339 #endif 340 341 #if defined(ANDROID) || defined(__ANDROID__) 342 # define BB_ADDITIONAL_PATH ":/system/sbin:/system/bin:/system/xbin" 343 # define SYS_ioprio_set __NR_ioprio_set 344 # define SYS_ioprio_get __NR_ioprio_get 345 #endif 346 347 348 /* ---- Who misses what? ------------------------------------ */ 349 350 /* Assume all these functions and header files exist by default. 351 * Platforms where it is not true will #undef them below. 352 */ 353 #define HAVE_CLEARENV 1 354 #define HAVE_FDATASYNC 1 355 #define HAVE_DPRINTF 1 356 #define HAVE_MEMRCHR 1 357 #define HAVE_MKDTEMP 1 358 #define HAVE_PTSNAME_R 1 359 #define HAVE_SETBIT 1 360 #define HAVE_SIGHANDLER_T 1 361 #define HAVE_STPCPY 1 362 #define HAVE_STRCASESTR 1 363 #define HAVE_STRCHRNUL 1 364 #define HAVE_STRSEP 1 365 #define HAVE_STRSIGNAL 1 366 #define HAVE_STRVERSCMP 1 367 #define HAVE_VASPRINTF 1 368 #define HAVE_UNLOCKED_STDIO 1 369 #define HAVE_UNLOCKED_LINE_OPS 1 370 #define HAVE_GETLINE 1 371 #define HAVE_XTABS 1 372 #define HAVE_MNTENT_H 1 373 #define HAVE_NET_ETHERNET_H 1 374 #define HAVE_SYS_STATFS_H 1 375 376 #if defined(__UCLIBC_MAJOR__) 377 # if __UCLIBC_MAJOR__ == 0 \ 378 && ( __UCLIBC_MINOR__ < 9 \ 379 || (__UCLIBC_MINOR__ == 9 && __UCLIBC_SUBLEVEL__ < 32) \ 380 ) 381 # undef HAVE_STRVERSCMP 382 # endif 361 383 #endif 362 384 … … 366 388 367 389 #if defined(__WATCOMC__) 368 # undef HAVE_FDPRINTF 390 # undef HAVE_DPRINTF 391 # undef HAVE_GETLINE 369 392 # undef HAVE_MEMRCHR 370 393 # undef HAVE_MKDTEMP 371 394 # undef HAVE_SETBIT 395 # undef HAVE_STPCPY 372 396 # undef HAVE_STRCASESTR 373 397 # undef HAVE_STRCHRNUL 374 398 # undef HAVE_STRSEP 375 399 # undef HAVE_STRSIGNAL 400 # undef HAVE_STRVERSCMP 376 401 # undef HAVE_VASPRINTF 402 # undef HAVE_UNLOCKED_STDIO 403 # undef HAVE_UNLOCKED_LINE_OPS 404 # undef HAVE_NET_ETHERNET_H 405 #endif 406 407 #if defined(__CYGWIN__) 408 # undef HAVE_CLEARENV 409 # undef HAVE_FDPRINTF 410 # undef HAVE_MEMRCHR 411 # undef HAVE_PTSNAME_R 412 # undef HAVE_STRVERSCMP 413 # undef HAVE_UNLOCKED_LINE_OPS 414 #endif 415 416 /* These BSD-derived OSes share many similarities */ 417 #if (defined __digital__ && defined __unix__) \ 418 || defined __APPLE__ \ 419 || defined __FreeBSD__ || defined __OpenBSD__ || defined __NetBSD__ 420 # undef HAVE_CLEARENV 421 # undef HAVE_FDATASYNC 422 # undef HAVE_GETLINE 423 # undef HAVE_MNTENT_H 424 # undef HAVE_PTSNAME_R 425 # undef HAVE_SYS_STATFS_H 426 # undef HAVE_SIGHANDLER_T 427 # undef HAVE_STRVERSCMP 428 # undef HAVE_XTABS 429 # undef HAVE_DPRINTF 430 # undef HAVE_UNLOCKED_STDIO 431 # undef HAVE_UNLOCKED_LINE_OPS 377 432 #endif 378 433 379 434 #if defined(__FreeBSD__) 380 435 # undef HAVE_STRCHRNUL 436 #endif 437 438 #if defined(__NetBSD__) 439 # define HAVE_GETLINE 1 /* Recent NetBSD versions have getline() */ 440 #endif 441 442 #if defined(__digital__) && defined(__unix__) 443 # undef HAVE_STPCPY 444 #endif 445 446 #if defined(ANDROID) || defined(__ANDROID__) 447 # undef HAVE_DPRINTF 448 # undef HAVE_GETLINE 449 # undef HAVE_STPCPY 450 # undef HAVE_STRCHRNUL 451 # undef HAVE_STRVERSCMP 452 # undef HAVE_UNLOCKED_LINE_OPS 453 # undef HAVE_NET_ETHERNET_H 381 454 #endif 382 455 … … 386 459 */ 387 460 388 #ifndef HAVE_ FDPRINTF389 extern int fdprintf(int fd, const char *format, ...);461 #ifndef HAVE_DPRINTF 462 extern int dprintf(int fd, const char *format, ...); 390 463 #endif 391 464 … … 403 476 #endif 404 477 478 #ifndef HAVE_SIGHANDLER_T 479 typedef void (*sighandler_t)(int); 480 #endif 481 482 #ifndef HAVE_STPCPY 483 extern char *stpcpy(char *p, const char *to_add) FAST_FUNC; 484 #endif 485 405 486 #ifndef HAVE_STRCASESTR 406 487 extern char *strcasestr(const char *s, const char *pattern) FAST_FUNC; … … 424 505 #endif 425 506 426 #endif 507 #ifndef HAVE_GETLINE 508 # include <stdio.h> /* for FILE */ 509 # include <sys/types.h> /* size_t */ 510 extern ssize_t getline(char **lineptr, size_t *n, FILE *stream) FAST_FUNC; 511 #endif 512 513 #endif -
branches/3.2/mindi-busybox/include/pwd_.h
r2725 r3232 31 31 * so that function calls are directed to bb_internal_XXX replacements 32 32 */ 33 33 #undef endpwent 34 34 #define setpwent bb_internal_setpwent 35 35 #define endpwent bb_internal_endpwent … … 64 64 /* Write the given entry onto the given stream. */ 65 65 extern int putpwent(const struct passwd *__restrict __p, 66 66 FILE *__restrict __f); 67 67 #endif 68 68 … … 82 82 83 83 extern int getpwent_r(struct passwd *__restrict __resultbuf, 84 85 84 char *__restrict __buffer, size_t __buflen, 85 struct passwd **__restrict __result); 86 86 87 87 extern int getpwuid_r(uid_t __uid, 88 89 90 88 struct passwd *__restrict __resultbuf, 89 char *__restrict __buffer, size_t __buflen, 90 struct passwd **__restrict __result); 91 91 92 92 extern int getpwnam_r(const char *__restrict __name, 93 94 95 93 struct passwd *__restrict __resultbuf, 94 char *__restrict __buffer, size_t __buflen, 95 struct passwd **__restrict __result); 96 96 97 97 /* Read an entry from STREAM. This function is not standardized and 98 98 probably never will. */ 99 99 extern int fgetpwent_r(FILE *__restrict __stream, 100 101 102 100 struct passwd *__restrict __resultbuf, 101 char *__restrict __buffer, size_t __buflen, 102 struct passwd **__restrict __result); 103 103 104 104 POP_SAVED_FUNCTION_VISIBILITY -
branches/3.2/mindi-busybox/include/shadow_.h
r2725 r3232 37 37 unsigned long sp_flag; /* Reserved */ 38 38 }; 39 40 /* Paths to the user database files */41 #ifndef _PATH_SHADOW42 #define _PATH_SHADOW "/etc/shadow"43 #endif44 39 45 40 #define setspent bb_internal_setspent … … 85 80 /* Reentrant versions of some of the functions above */ 86 81 extern int getspent_r(struct spwd *__result_buf, char *__buffer, 87 82 size_t __buflen, struct spwd **__result); 88 83 #endif 89 84 90 85 extern int getspnam_r(const char *__name, struct spwd *__result_buf, 91 92 86 char *__buffer, size_t __buflen, 87 struct spwd **__result); 93 88 94 89 #ifdef UNUSED_FOR_NOW 95 90 extern int sgetspent_r(const char *__string, struct spwd *__result_buf, 96 97 91 char *__buffer, size_t __buflen, 92 struct spwd **__result); 98 93 99 94 extern int fgetspent_r(FILE *__stream, struct spwd *__result_buf, 100 101 95 char *__buffer, size_t __buflen, 96 struct spwd **__result); 102 97 /* Protect password file against multi writers */ 103 98 extern int lckpwdf(void); -
branches/3.2/mindi-busybox/include/unicode.h
r2725 r3232 28 28 # define unicode_status UNICODE_OFF 29 29 # define init_unicode() ((void)0) 30 # define reinit_unicode(LANG) ((void)0) 30 31 31 32 #else … … 61 62 //UNUSED: char* FAST_FUNC unicode_conv_to_printable2(uni_stat_t *stats, const char *src, unsigned width, int flags); 62 63 char* FAST_FUNC unicode_conv_to_printable(uni_stat_t *stats, const char *src); 63 char* FAST_FUNC unicode_conv_to_printable_maxwidth(uni_stat_t *stats, const char *src, unsigned maxwidth);64 char* FAST_FUNC unicode_conv_to_printable_fixedwidth( uni_stat_t *stats,const char *src, unsigned width);64 //UNUSED: char* FAST_FUNC unicode_conv_to_printable_maxwidth(uni_stat_t *stats, const char *src, unsigned maxwidth); 65 char* FAST_FUNC unicode_conv_to_printable_fixedwidth(/*uni_stat_t *stats,*/ const char *src, unsigned width); 65 66 66 67 # if ENABLE_UNICODE_USING_LOCALE … … 68 69 extern uint8_t unicode_status; 69 70 void init_unicode(void) FAST_FUNC; 71 void reinit_unicode(const char *LANG) FAST_FUNC; 70 72 71 73 # else … … 76 78 # define unicode_status UNICODE_ON 77 79 # define init_unicode() ((void)0) 80 # define reinit_unicode(LANG) ((void)0) 78 81 # else 79 82 extern uint8_t unicode_status; 80 83 void init_unicode(void) FAST_FUNC; 84 void reinit_unicode(const char *LANG) FAST_FUNC; 81 85 # endif 82 86 -
branches/3.2/mindi-busybox/include/usage.src.h
r2725 r3232 13 13 #define BB_USAGE_H 1 14 14 15 16 15 #define NOUSAGE_STR "\b" 17 16 18 17 INSERT 19 18 20 #define acpid_trivial_usage \21 "[-d] [-c CONFDIR] [-l LOGFILE] [-a ACTIONFILE] [-M MAPFILE] [-e PROC_EVENT_FILE] [-p PIDFILE]"22 #define acpid_full_usage "\n\n" \23 "Listen to ACPI events and spawn specific helpers on event arrival\n" \24 "\nOptions:" \25 "\n -c DIR Config directory [/etc/acpi]" \26 "\n -d Don't daemonize, (implies -f)" \27 "\n -e FILE /proc event file [/proc/acpi/event]" \28 "\n -f Run in foreground" \29 "\n -l FILE Log file [/var/log/acpid.log]" \30 "\n -p FILE Pid file [/var/run/acpid.pid]" \31 "\n -a FILE Action file [/etc/acpid.conf]" \32 "\n -M FILE Map file [/etc/acpi.map]" \33 IF_FEATURE_ACPID_COMPAT( \34 "\n\nAccept and ignore compatibility options -g -m -s -S -v" \35 )36 37 #define acpid_example_usage \38 "Without -e option, acpid uses all /dev/input/event* files\n" \39 "# acpid\n" \40 "# acpid -l /var/log/my-acpi-log\n" \41 "# acpid -e /proc/acpi/event\n"42 43 #define addgroup_trivial_usage \44 "[-g GID] " IF_FEATURE_ADDUSER_TO_GROUP("[USER] ") "GROUP"45 #define addgroup_full_usage "\n\n" \46 "Add a group " IF_FEATURE_ADDUSER_TO_GROUP("or add a user to a group") "\n" \47 "\nOptions:" \48 "\n -g GID Group id" \49 "\n -S Create a system group" \50 51 #define adduser_trivial_usage \52 "[OPTIONS] USER"53 #define adduser_full_usage "\n\n" \54 "Add a user\n" \55 "\nOptions:" \56 "\n -h DIR Home directory" \57 "\n -g GECOS GECOS field" \58 "\n -s SHELL Login shell" \59 "\n -G GRP Add user to existing group" \60 "\n -S Create a system user" \61 "\n -D Don't assign a password" \62 "\n -H Don't create home directory" \63 "\n -u UID User id" \64 65 #define adjtimex_trivial_usage \66 "[-q] [-o OFF] [-f FREQ] [-p TCONST] [-t TICK]"67 #define adjtimex_full_usage "\n\n" \68 "Read and optionally set system timebase parameters. See adjtimex(2)\n" \69 "\nOptions:" \70 "\n -q Quiet" \71 "\n -o OFF Time offset, microseconds" \72 "\n -f FREQ Frequency adjust, integer kernel units (65536 is 1ppm)" \73 "\n (positive values make clock run faster)" \74 "\n -t TICK Microseconds per tick, usually 10000" \75 "\n -p TCONST" \76 77 #define ar_trivial_usage \78 "[-o] [-v] [-p] [-t] [-x] ARCHIVE FILES"79 #define ar_full_usage "\n\n" \80 "Extract or list FILES from an ar archive\n" \81 "\nOptions:" \82 "\n -o Preserve original dates" \83 "\n -p Extract to stdout" \84 "\n -t List" \85 "\n -x Extract" \86 "\n -v Verbose" \87 88 #define arp_trivial_usage \89 "\n[-vn] [-H HWTYPE] [-i IF] -a [HOSTNAME]" \90 "\n[-v] [-i IF] -d HOSTNAME [pub]" \91 "\n[-v] [-H HWTYPE] [-i IF] -s HOSTNAME HWADDR [temp]" \92 "\n[-v] [-H HWTYPE] [-i IF] -s HOSTNAME HWADDR [netmask MASK] pub" \93 "\n[-v] [-H HWTYPE] [-i IF] -Ds HOSTNAME IFACE [netmask MASK] pub"94 #define arp_full_usage "\n\n" \95 "Manipulate ARP cache\n" \96 "\nOptions:" \97 "\n -a Display (all) hosts" \98 "\n -s Set new ARP entry" \99 "\n -d Delete a specified entry" \100 "\n -v Verbose" \101 "\n -n Don't resolve names" \102 "\n -i IF Network interface" \103 "\n -D Read <hwaddr> from given device" \104 "\n -A,-p AF Protocol family" \105 "\n -H HWTYPE Hardware address type" \106 107 #define arping_trivial_usage \108 "[-fqbDUA] [-c CNT] [-w TIMEOUT] [-I IFACE] [-s SRC_IP] DST_IP"109 #define arping_full_usage "\n\n" \110 "Send ARP requests/replies\n" \111 "\nOptions:" \112 "\n -f Quit on first ARP reply" \113 "\n -q Quiet" \114 "\n -b Keep broadcasting, don't go unicast" \115 "\n -D Duplicated address detection mode" \116 "\n -U Unsolicited ARP mode, update your neighbors" \117 "\n -A ARP answer mode, update your neighbors" \118 "\n -c N Stop after sending N ARP requests" \119 "\n -w TIMEOUT Time to wait for ARP reply, seconds" \120 "\n -I IFACE Interface to use (default eth0)" \121 "\n -s SRC_IP Sender IP address" \122 "\n DST_IP Target IP address" \123 124 #define awk_trivial_usage \125 "[OPTIONS] [AWK_PROGRAM] [FILE]..."126 #define awk_full_usage "\n\n" \127 "Options:" \128 "\n -v VAR=VAL Set variable" \129 "\n -F SEP Use SEP as field separator" \130 "\n -f FILE Read program from FILE" \131 132 #define basename_trivial_usage \133 "FILE [SUFFIX]"134 #define basename_full_usage "\n\n" \135 "Strip directory path and .SUFFIX from FILE\n"136 #define basename_example_usage \137 "$ basename /usr/local/bin/foo\n" \138 "foo\n" \139 "$ basename /usr/local/bin/\n" \140 "bin\n" \141 "$ basename /foo/bar.txt .txt\n" \142 "bar"143 144 #define beep_trivial_usage \145 "-f FREQ -l LEN -d DELAY -r COUNT -n"146 #define beep_full_usage "\n\n" \147 "Options:" \148 "\n -f Frequency in Hz" \149 "\n -l Length in ms" \150 "\n -d Delay in ms" \151 "\n -r Repetitions" \152 "\n -n Start new tone" \153 154 #define blkid_trivial_usage \155 ""156 #define blkid_full_usage "\n\n" \157 "Print UUIDs of all filesystems"158 159 #define brctl_trivial_usage \160 "COMMAND [BRIDGE [INTERFACE]]"161 #define brctl_full_usage "\n\n" \162 "Manage ethernet bridges\n" \163 "\nCommands:" \164 IF_FEATURE_BRCTL_SHOW( \165 "\n show Show a list of bridges" \166 ) \167 "\n addbr BRIDGE Create BRIDGE" \168 "\n delbr BRIDGE Delete BRIDGE" \169 "\n addif BRIDGE IFACE Add IFACE to BRIDGE" \170 "\n delif BRIDGE IFACE Delete IFACE from BRIDGE" \171 IF_FEATURE_BRCTL_FANCY( \172 "\n setageing BRIDGE TIME Set ageing time" \173 "\n setfd BRIDGE TIME Set bridge forward delay" \174 "\n sethello BRIDGE TIME Set hello time" \175 "\n setmaxage BRIDGE TIME Set max message age" \176 "\n setpathcost BRIDGE COST Set path cost" \177 "\n setportprio BRIDGE PRIO Set port priority" \178 "\n setbridgeprio BRIDGE PRIO Set bridge priority" \179 "\n stp BRIDGE [1/yes/on|0/no/off] STP on/off" \180 ) \181 182 #define bzip2_trivial_usage \183 "[OPTIONS] [FILE]..."184 #define bzip2_full_usage "\n\n" \185 "Compress FILEs (or stdin) with bzip2 algorithm\n" \186 "\nOptions:" \187 "\n -1..9 Compression level" \188 "\n -d Decompress" \189 "\n -c Write to stdout" \190 "\n -f Force" \191 192 19 #define busybox_notes_usage \ 193 20 "Hello world!\n" 194 21 195 #define lzop_trivial_usage \196 "[-cfvd123456789CF] [FILE]..."197 #define lzop_full_usage "\n\n" \198 "Options:" \199 "\n -1..9 Compression level" \200 "\n -d Decompress" \201 "\n -c Write to stdout" \202 "\n -f Force" \203 "\n -v Verbose" \204 "\n -F Don't store or verify checksum" \205 "\n -C Also write checksum of compressed block" \206 207 #define lzopcat_trivial_usage \208 "[-vCF] [FILE]..."209 #define lzopcat_full_usage "\n\n" \210 " -v Verbose" \211 "\n -F Don't store or verify checksum" \212 213 #define unlzop_trivial_usage \214 "[-cfvCF] [FILE]..."215 #define unlzop_full_usage "\n\n" \216 "Options:" \217 "\n -c Write to stdout" \218 "\n -f Force" \219 "\n -v Verbose" \220 "\n -F Don't store or verify checksum" \221 222 #define unlzma_trivial_usage \223 "[-cf] [FILE]..."224 #define unlzma_full_usage "\n\n" \225 "Decompress FILE (or stdin)\n" \226 "\nOptions:" \227 "\n -c Write to stdout" \228 "\n -f Force" \229 230 #define lzma_trivial_usage \231 "-d [-cf] [FILE]..."232 #define lzma_full_usage "\n\n" \233 "Decompress FILE (or stdin)\n" \234 "\nOptions:" \235 "\n -d Decompress" \236 "\n -c Write to stdout" \237 "\n -f Force" \238 239 #define lzcat_trivial_usage \240 "FILE"241 #define lzcat_full_usage "\n\n" \242 "Decompress to stdout"243 244 #define unxz_trivial_usage \245 "[-cf] [FILE]..."246 #define unxz_full_usage "\n\n" \247 "Decompress FILE (or stdin)\n" \248 "\nOptions:" \249 "\n -c Write to stdout" \250 "\n -f Force" \251 252 #define xz_trivial_usage \253 "-d [-cf] [FILE]..."254 #define xz_full_usage "\n\n" \255 "Decompress FILE (or stdin)\n" \256 "\nOptions:" \257 "\n -d Decompress" \258 "\n -c Write to stdout" \259 "\n -f Force" \260 261 #define xzcat_trivial_usage \262 "FILE"263 #define xzcat_full_usage "\n\n" \264 "Decompress to stdout"265 266 #define cal_trivial_usage \267 "[-jy] [[MONTH] YEAR]"268 #define cal_full_usage "\n\n" \269 "Display a calendar\n" \270 "\nOptions:" \271 "\n -j Use julian dates" \272 "\n -y Display the entire year" \273 274 #define cat_trivial_usage \275 "[FILE]..."276 #define cat_full_usage "\n\n" \277 "Concatenate FILEs and print them to stdout" \278 279 #define cat_example_usage \280 "$ cat /proc/uptime\n" \281 "110716.72 17.67"282 283 #define catv_trivial_usage \284 "[-etv] [FILE]..."285 #define catv_full_usage "\n\n" \286 "Display nonprinting characters as ^x or M-x\n" \287 "\nOptions:" \288 "\n -e End each line with $" \289 "\n -t Show tabs as ^I" \290 "\n -v Don't use ^x or M-x escapes" \291 292 #define chat_trivial_usage \293 "EXPECT [SEND [EXPECT [SEND...]]]"294 #define chat_full_usage "\n\n" \295 "Useful for interacting with a modem connected to stdin/stdout.\n" \296 "A script consists of one or more \"expect-send\" pairs of strings,\n" \297 "each pair is a pair of arguments. Example:\n" \298 "chat '' ATZ OK ATD123456 CONNECT '' ogin: pppuser word: ppppass '~'" \299 300 #define chattr_trivial_usage \301 "[-R] [-+=AacDdijsStTu] [-v VERSION] [FILE]..."302 #define chattr_full_usage "\n\n" \303 "Change file attributes on an ext2 fs\n" \304 "\nModifiers:" \305 "\n - Remove attributes" \306 "\n + Add attributes" \307 "\n = Set attributes" \308 "\nAttributes:" \309 "\n A Don't track atime" \310 "\n a Append mode only" \311 "\n c Enable compress" \312 "\n D Write dir contents synchronously" \313 "\n d Don't backup with dump" \314 "\n i Cannot be modified (immutable)" \315 "\n j Write all data to journal first" \316 "\n s Zero disk storage when deleted" \317 "\n S Write file contents synchronously" \318 "\n t Disable tail-merging of partial blocks with other files" \319 "\n u Allow file to be undeleted" \320 "\nOptions:" \321 "\n -R Recurse" \322 "\n -v Set the file's version/generation number" \323 324 #define chcon_trivial_usage \325 "[OPTIONS] CONTEXT FILE..." \326 "\n chcon [OPTIONS] [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE..." \327 IF_FEATURE_CHCON_LONG_OPTIONS( \328 "\n chcon [OPTIONS] --reference=RFILE FILE..." \329 )330 #define chcon_full_usage "\n\n" \331 "Change the security context of each FILE to CONTEXT\n" \332 IF_FEATURE_CHCON_LONG_OPTIONS( \333 "\n -v,--verbose Verbose" \334 "\n -c,--changes Report changes made" \335 "\n -h,--no-dereference Affect symlinks instead of their targets" \336 "\n -f,--silent,--quiet Suppress most error messages" \337 "\n --reference=RFILE Use RFILE's group instead of using a CONTEXT value" \338 "\n -u,--user=USER Set user/role/type/range in the target" \339 "\n -r,--role=ROLE security context" \340 "\n -t,--type=TYPE" \341 "\n -l,--range=RANGE" \342 "\n -R,--recursive Recurse" \343 ) \344 IF_NOT_FEATURE_CHCON_LONG_OPTIONS( \345 "\n -v Verbose" \346 "\n -c Report changes made" \347 "\n -h Affect symlinks instead of their targets" \348 "\n -f Suppress most error messages" \349 "\n -u USER Set user/role/type/range in the target security context" \350 "\n -r ROLE" \351 "\n -t TYPE" \352 "\n -l RNG" \353 "\n -R Recurse" \354 )355 356 #define chmod_trivial_usage \357 "[-R"IF_DESKTOP("cvf")"] MODE[,MODE]... FILE..."358 #define chmod_full_usage "\n\n" \359 "Each MODE is one or more of the letters ugoa, one of the\n" \360 "symbols +-= and one or more of the letters rwxst\n" \361 "\nOptions:" \362 "\n -R Recurse" \363 IF_DESKTOP( \364 "\n -c List changed files" \365 "\n -v List all files" \366 "\n -f Hide errors" \367 )368 #define chmod_example_usage \369 "$ ls -l /tmp/foo\n" \370 "-rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo\n" \371 "$ chmod u+x /tmp/foo\n" \372 "$ ls -l /tmp/foo\n" \373 "-rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*\n" \374 "$ chmod 444 /tmp/foo\n" \375 "$ ls -l /tmp/foo\n" \376 "-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo\n"377 378 #define chgrp_trivial_usage \379 "[-RhLHP"IF_DESKTOP("cvf")"]... GROUP FILE..."380 #define chgrp_full_usage "\n\n" \381 "Change the group membership of each FILE to GROUP\n" \382 "\nOptions:" \383 "\n -R Recurse" \384 "\n -h Affect symlinks instead of symlink targets" \385 "\n -L Traverse all symlinks to directories" \386 "\n -H Traverse symlinks on command line only" \387 "\n -P Don't traverse symlinks (default)" \388 IF_DESKTOP( \389 "\n -c List changed files" \390 "\n -v Verbose" \391 "\n -f Hide errors" \392 )393 #define chgrp_example_usage \394 "$ ls -l /tmp/foo\n" \395 "-r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo\n" \396 "$ chgrp root /tmp/foo\n" \397 "$ ls -l /tmp/foo\n" \398 "-r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo\n"399 400 #define chown_trivial_usage \401 "[-RhLHP"IF_DESKTOP("cvf")"]... OWNER[<.|:>[GROUP]] FILE..."402 #define chown_full_usage "\n\n" \403 "Change the owner and/or group of each FILE to OWNER and/or GROUP\n" \404 "\nOptions:" \405 "\n -R Recurse" \406 "\n -h Affect symlinks instead of symlink targets" \407 "\n -L Traverse all symlinks to directories" \408 "\n -H Traverse symlinks on command line only" \409 "\n -P Don't traverse symlinks (default)" \410 IF_DESKTOP( \411 "\n -c List changed files" \412 "\n -v List all files" \413 "\n -f Hide errors" \414 )415 #define chown_example_usage \416 "$ ls -l /tmp/foo\n" \417 "-r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo\n" \418 "$ chown root /tmp/foo\n" \419 "$ ls -l /tmp/foo\n" \420 "-r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo\n" \421 "$ chown root.root /tmp/foo\n" \422 "ls -l /tmp/foo\n" \423 "-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo\n"424 425 #define chpst_trivial_usage \426 "[-vP012] [-u USER[:GRP]] [-U USER[:GRP]] [-e DIR]\n" \427 " [-/ DIR] [-n NICE] [-m BYTES] [-d BYTES] [-o N]\n" \428 " [-p N] [-f BYTES] [-c BYTES] PROG ARGS"429 #define chpst_full_usage "\n\n" \430 "Change the process state, run PROG\n" \431 "\nOptions:" \432 "\n -u USER[:GRP] Set uid and gid" \433 "\n -U USER[:GRP] Set $UID and $GID in environment" \434 "\n -e DIR Set environment variables as specified by files" \435 "\n in DIR: file=1st_line_of_file" \436 "\n -/ DIR Chroot to DIR" \437 "\n -n NICE Add NICE to nice value" \438 "\n -m BYTES Same as -d BYTES -s BYTES -l BYTES" \439 "\n -d BYTES Limit data segment" \440 "\n -o N Limit number of open files per process" \441 "\n -p N Limit number of processes per uid" \442 "\n -f BYTES Limit output file sizes" \443 "\n -c BYTES Limit core file size" \444 "\n -v Verbose" \445 "\n -P Create new process group" \446 "\n -0 Close stdin" \447 "\n -1 Close stdout" \448 "\n -2 Close stderr" \449 450 #define setuidgid_trivial_usage \451 "USER PROG ARGS"452 #define setuidgid_full_usage "\n\n" \453 "Set uid and gid to USER's uid and gid, drop supplementary group ids,\n" \454 "run PROG"455 #define envuidgid_trivial_usage \456 "USER PROG ARGS"457 #define envuidgid_full_usage "\n\n" \458 "Set $UID to USER's uid and $GID to USER's gid, run PROG"459 #define envdir_trivial_usage \460 "DIR PROG ARGS"461 #define envdir_full_usage "\n\n" \462 "Set various environment variables as specified by files\n" \463 "in the directory DIR, run PROG"464 #define softlimit_trivial_usage \465 "[-a BYTES] [-m BYTES] [-d BYTES] [-s BYTES] [-l BYTES]\n" \466 " [-f BYTES] [-c BYTES] [-r BYTES] [-o N] [-p N] [-t N]\n" \467 " PROG ARGS"468 #define softlimit_full_usage "\n\n" \469 "Set soft resource limits, then run PROG\n" \470 "\nOptions:" \471 "\n -a BYTES Limit total size of all segments" \472 "\n -m BYTES Same as -d BYTES -s BYTES -l BYTES -a BYTES" \473 "\n -d BYTES Limit data segment" \474 "\n -s BYTES Limit stack segment" \475 "\n -l BYTES Limit locked memory size" \476 "\n -o N Limit number of open files per process" \477 "\n -p N Limit number of processes per uid" \478 "\nOptions controlling file sizes:" \479 "\n -f BYTES Limit output file sizes" \480 "\n -c BYTES Limit core file size" \481 "\nEfficiency opts:" \482 "\n -r BYTES Limit resident set size" \483 "\n -t N Limit CPU time, process receives" \484 "\n a SIGXCPU after N seconds" \485 486 #define chroot_trivial_usage \487 "NEWROOT [PROG ARGS]"488 #define chroot_full_usage "\n\n" \489 "Run PROG with root directory set to NEWROOT"490 #define chroot_example_usage \491 "$ ls -l /bin/ls\n" \492 "lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox\n" \493 "# mount /dev/hdc1 /mnt -t minix\n" \494 "# chroot /mnt\n" \495 "# ls -l /bin/ls\n" \496 "-rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*\n"497 498 #define chvt_trivial_usage \499 "N"500 #define chvt_full_usage "\n\n" \501 "Change the foreground virtual terminal to /dev/ttyN"502 503 #define cksum_trivial_usage \504 "FILES..."505 #define cksum_full_usage "\n\n" \506 "Calculate the CRC32 checksums of FILES"507 508 #define clear_trivial_usage \509 ""510 #define clear_full_usage "\n\n" \511 "Clear screen"512 513 #define cmp_trivial_usage \514 "[-l] [-s] FILE1 [FILE2" IF_DESKTOP(" [SKIP1 [SKIP2]]") "]"515 #define cmp_full_usage "\n\n" \516 "Compare FILE1 with FILE2 (or stdin)\n" \517 "\nOptions:" \518 "\n -l Write the byte numbers (decimal) and values (octal)" \519 "\n for all differing bytes" \520 "\n -s Quiet" \521 522 #define comm_trivial_usage \523 "[-123] FILE1 FILE2"524 #define comm_full_usage "\n\n" \525 "Compare FILE1 with FILE2\n" \526 "\nOptions:" \527 "\n -1 Suppress lines unique to FILE1" \528 "\n -2 Suppress lines unique to FILE2" \529 "\n -3 Suppress lines common to both files" \530 531 #define bbconfig_trivial_usage \532 ""533 #define bbconfig_full_usage "\n\n" \534 "Print the config file used by busybox build"535 536 #define chrt_trivial_usage \537 "[-prfom] [PRIO] [PID | PROG ARGS]"538 #define chrt_full_usage "\n\n" \539 "Change scheduling priority and class for a process\n" \540 "\nOptions:" \541 "\n -p Operate on PID" \542 "\n -r Set SCHED_RR class" \543 "\n -f Set SCHED_FIFO class" \544 "\n -o Set SCHED_OTHER class" \545 "\n -m Show min/max priorities" \546 547 #define chrt_example_usage \548 "$ chrt -r 4 sleep 900; x=$!\n" \549 "$ chrt -f -p 3 $x\n" \550 "You need CAP_SYS_NICE privileges to set scheduling attributes of a process"551 552 #define nice_trivial_usage \553 "[-n ADJUST] [PROG ARGS]"554 #define nice_full_usage "\n\n" \555 "Change scheduling priority, run PROG\n" \556 "\nOptions:" \557 "\n -n ADJUST Adjust priority by ADJUST" \558 559 #define renice_trivial_usage \560 "{{-n INCREMENT} | PRIORITY} [[-p | -g | -u] ID...]"561 #define renice_full_usage "\n\n" \562 "Change scheduling priority for a running process\n" \563 "\nOptions:" \564 "\n -n Adjust current nice value (smaller is faster)" \565 "\n -p Process id(s) (default)" \566 "\n -g Process group id(s)" \567 "\n -u Process user name(s) and/or id(s)" \568 569 #define ionice_trivial_usage \570 "[-c 1-3] [-n 0-7] [-p PID] [PROG]"571 #define ionice_full_usage "\n\n" \572 "Change I/O priority and class\n" \573 "\nOptions:" \574 "\n -c Class. 1:realtime 2:best-effort 3:idle" \575 "\n -n Priority" \576 577 #define cp_trivial_usage \578 "[OPTIONS] SOURCE DEST"579 #define cp_full_usage "\n\n" \580 "Copy SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY\n" \581 "\nOptions:" \582 "\n -a Same as -dpR" \583 IF_SELINUX( \584 "\n -c Preserve security context" \585 ) \586 "\n -R,-r Recurse" \587 "\n -d,-P Preserve symlinks (default if -R)" \588 "\n -L Follow all symlinks" \589 "\n -H Follow symlinks on command line" \590 "\n -p Preserve file attributes if possible" \591 "\n -f Overwrite" \592 "\n -i Prompt before overwrite" \593 "\n -l,-s Create (sym)links" \594 595 #define cpio_trivial_usage \596 "[-dmvu] [-F FILE]" IF_FEATURE_CPIO_O(" [-H newc]") \597 " [-ti"IF_FEATURE_CPIO_O("o")"]" IF_FEATURE_CPIO_P(" [-p DIR]")598 #define cpio_full_usage "\n\n" \599 "Extract or list files from a cpio archive" \600 IF_FEATURE_CPIO_O(", or" \601 "\ncreate an archive" IF_FEATURE_CPIO_P(" (-o) or copy files (-p)") \602 " using file list on stdin" \603 ) \604 "\n" \605 "\nMain operation mode:" \606 "\n -t List" \607 "\n -i Extract" \608 IF_FEATURE_CPIO_O( \609 "\n -o Create (requires -H newc)" \610 ) \611 IF_FEATURE_CPIO_P( \612 "\n -p DIR Copy files to DIR" \613 ) \614 "\nOptions:" \615 "\n -d Make leading directories" \616 "\n -m Preserve mtime" \617 "\n -v Verbose" \618 "\n -u Overwrite" \619 "\n -F FILE Input (-t,-i,-p) or output (-o) file" \620 IF_FEATURE_CPIO_O( \621 "\n -H newc Archive format" \622 ) \623 624 #define crond_trivial_usage \625 "-fbS -l N " IF_FEATURE_CROND_D("-d N ") "-L LOGFILE -c DIR"626 #define crond_full_usage "\n\n" \627 " -f Foreground" \628 "\n -b Background (default)" \629 "\n -S Log to syslog (default)" \630 "\n -l Set log level. 0 is the most verbose, default 8" \631 IF_FEATURE_CROND_D( \632 "\n -d Set log level, log to stderr" \633 ) \634 "\n -L Log to file" \635 "\n -c Working dir" \636 637 #define crontab_trivial_usage \638 "[-c DIR] [-u USER] [-ler]|[FILE]"639 #define crontab_full_usage "\n\n" \640 " -c Crontab directory" \641 "\n -u User" \642 "\n -l List crontab" \643 "\n -e Edit crontab" \644 "\n -r Delete crontab" \645 "\n FILE Replace crontab by FILE ('-': stdin)" \646 647 #define cryptpw_trivial_usage \648 "[OPTIONS] [PASSWORD] [SALT]"649 /* We do support -s, we just don't mention it */650 #define cryptpw_full_usage "\n\n" \651 "Crypt the PASSWORD using crypt(3)\n" \652 "\nOptions:" \653 IF_LONG_OPTS( \654 "\n -P,--password-fd=N Read password from fd N" \655 /* "\n -s,--stdin Use stdin; like -P0" */ \656 "\n -m,--method=TYPE Encryption method TYPE" \657 "\n -S,--salt=SALT" \658 ) \659 IF_NOT_LONG_OPTS( \660 "\n -P N Read password from fd N" \661 /* "\n -s Use stdin; like -P0" */ \662 "\n -m TYPE Encryption method TYPE" \663 "\n -S SALT" \664 ) \665 666 /* mkpasswd is an alias to cryptpw */667 668 #define mkpasswd_trivial_usage \669 "[OPTIONS] [PASSWORD] [SALT]"670 /* We do support -s, we just don't mention it */671 #define mkpasswd_full_usage "\n\n" \672 "Crypt the PASSWORD using crypt(3)\n" \673 "\nOptions:" \674 IF_LONG_OPTS( \675 "\n -P,--password-fd=N Read password from fd N" \676 /* "\n -s,--stdin Use stdin; like -P0" */ \677 "\n -m,--method=TYPE Encryption method TYPE" \678 "\n -S,--salt=SALT" \679 ) \680 IF_NOT_LONG_OPTS( \681 "\n -P N Read password from fd N" \682 /* "\n -s Use stdin; like -P0" */ \683 "\n -m TYPE Encryption method TYPE" \684 "\n -S SALT" \685 ) \686 687 #define cut_trivial_usage \688 "[OPTIONS] [FILE]..."689 #define cut_full_usage "\n\n" \690 "Print selected fields from each input FILE to stdout\n" \691 "\nOptions:" \692 "\n -b LIST Output only bytes from LIST" \693 "\n -c LIST Output only characters from LIST" \694 "\n -d CHAR Use CHAR instead of tab as the field delimiter" \695 "\n -s Output only the lines containing delimiter" \696 "\n -f N Print only these fields" \697 "\n -n Ignored" \698 699 #define cut_example_usage \700 "$ echo \"Hello world\" | cut -f 1 -d ' '\n" \701 "Hello\n" \702 "$ echo \"Hello world\" | cut -f 2 -d ' '\n" \703 "world\n"704 705 #define dd_trivial_usage \706 "[if=FILE] [of=FILE] " IF_FEATURE_DD_IBS_OBS("[ibs=N] [obs=N] ") "[bs=N] [count=N] [skip=N]\n" \707 " [seek=N]" IF_FEATURE_DD_IBS_OBS(" [conv=notrunc|noerror|sync|fsync]")708 #define dd_full_usage "\n\n" \709 "Copy a file with converting and formatting\n" \710 "\nOptions:" \711 "\n if=FILE Read from FILE instead of stdin" \712 "\n of=FILE Write to FILE instead of stdout" \713 "\n bs=N Read and write N bytes at a time" \714 IF_FEATURE_DD_IBS_OBS( \715 "\n ibs=N Read N bytes at a time" \716 ) \717 IF_FEATURE_DD_IBS_OBS( \718 "\n obs=N Write N bytes at a time" \719 ) \720 "\n count=N Copy only N input blocks" \721 "\n skip=N Skip N input blocks" \722 "\n seek=N Skip N output blocks" \723 IF_FEATURE_DD_IBS_OBS( \724 "\n conv=notrunc Don't truncate output file" \725 "\n conv=noerror Continue after read errors" \726 "\n conv=sync Pad blocks with zeros" \727 "\n conv=fsync Physically write data out before finishing" \728 ) \729 "\n" \730 "\nNumbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024)," \731 "\nMD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824)" \732 733 #define dd_example_usage \734 "$ dd if=/dev/zero of=/dev/ram1 bs=1M count=4\n" \735 "4+0 records in\n" \736 "4+0 records out\n"737 738 #define deallocvt_trivial_usage \739 "[N]"740 #define deallocvt_full_usage "\n\n" \741 "Deallocate unused virtual terminal /dev/ttyN"742 743 #define delgroup_trivial_usage \744 IF_FEATURE_DEL_USER_FROM_GROUP("[USER] ")"GROUP"745 #define delgroup_full_usage "\n\n" \746 "Delete group GROUP from the system" \747 IF_FEATURE_DEL_USER_FROM_GROUP(" or user USER from group GROUP")748 749 #define deluser_trivial_usage \750 "USER"751 #define deluser_full_usage "\n\n" \752 "Delete USER from the system"753 754 #define devmem_trivial_usage \755 "ADDRESS [WIDTH [VALUE]]"756 757 #define devmem_full_usage "\n\n" \758 "Read/write from physical address\n" \759 "\n ADDRESS Address to act upon" \760 "\n WIDTH Width (8/16/...)" \761 "\n VALUE Data to be written" \762 763 #define devfsd_trivial_usage \764 "mntpnt [-v]" IF_DEVFSD_FG_NP("[-fg][-np]")765 #define devfsd_full_usage "\n\n" \766 "Manage devfs permissions and old device name symlinks\n" \767 "\nOptions:" \768 "\n mntpnt The mount point where devfs is mounted" \769 "\n -v Print the protocol version numbers for devfsd" \770 "\n and the kernel-side protocol version and exit" \771 IF_DEVFSD_FG_NP( \772 "\n -fg Run in foreground" \773 "\n -np Exit after parsing the configuration file" \774 "\n and processing synthetic REGISTER events," \775 "\n don't poll for events" \776 )777 778 #define df_trivial_usage \779 "[-Pk" \780 IF_FEATURE_HUMAN_READABLE("mh") \781 IF_FEATURE_DF_FANCY("ai] [-B SIZE") \782 "] [FILESYSTEM]..."783 #define df_full_usage "\n\n" \784 "Print filesystem usage statistics\n" \785 "\nOptions:" \786 "\n -P POSIX output format" \787 "\n -k 1024-byte blocks (default)" \788 IF_FEATURE_HUMAN_READABLE( \789 "\n -m 1M-byte blocks" \790 "\n -h Human readable (e.g. 1K 243M 2G)" \791 ) \792 IF_FEATURE_DF_FANCY( \793 "\n -a Show all filesystems" \794 "\n -i Inodes" \795 "\n -B SIZE Blocksize" \796 ) \797 798 #define df_example_usage \799 "$ df\n" \800 "Filesystem 1K-blocks Used Available Use% Mounted on\n" \801 "/dev/sda3 8690864 8553540 137324 98% /\n" \802 "/dev/sda1 64216 36364 27852 57% /boot\n" \803 "$ df /dev/sda3\n" \804 "Filesystem 1K-blocks Used Available Use% Mounted on\n" \805 "/dev/sda3 8690864 8553540 137324 98% /\n" \806 "$ POSIXLY_CORRECT=sure df /dev/sda3\n" \807 "Filesystem 512B-blocks Used Available Use% Mounted on\n" \808 "/dev/sda3 17381728 17107080 274648 98% /\n" \809 "$ POSIXLY_CORRECT=yep df -P /dev/sda3\n" \810 "Filesystem 512-blocks Used Available Capacity Mounted on\n" \811 "/dev/sda3 17381728 17107080 274648 98% /\n"812 813 #define dhcprelay_trivial_usage \814 "CLIENT_IFACE[,CLIENT_IFACE2]... SERVER_IFACE [SERVER_IP]"815 #define dhcprelay_full_usage "\n\n" \816 "Relay DHCP requests between clients and server" \817 818 #define diff_trivial_usage \819 "[-abBdiNqrTstw] [-L LABEL] [-S FILE] [-U LINES] FILE1 FILE2"820 #define diff_full_usage "\n\n" \821 "Compare files line by line and output the differences between them.\n" \822 "This implementation supports unified diffs only.\n" \823 "\nOptions:" \824 "\n -a Treat all files as text" \825 "\n -b Ignore changes in the amount of whitespace" \826 "\n -B Ignore changes whose lines are all blank" \827 "\n -d Try hard to find a smaller set of changes" \828 "\n -i Ignore case differences" \829 "\n -L Use LABEL instead of the filename in the unified header" \830 "\n -N Treat absent files as empty" \831 "\n -q Output only whether files differ" \832 "\n -r Recurse" \833 "\n -S Start with FILE when comparing directories" \834 "\n -T Make tabs line up by prefixing a tab when necessary" \835 "\n -s Report when two files are the same" \836 "\n -t Expand tabs to spaces in output" \837 "\n -U Output LINES lines of context" \838 "\n -w Ignore all whitespace" \839 840 #define dirname_trivial_usage \841 "FILENAME"842 #define dirname_full_usage "\n\n" \843 "Strip non-directory suffix from FILENAME"844 #define dirname_example_usage \845 "$ dirname /tmp/foo\n" \846 "/tmp\n" \847 "$ dirname /tmp/foo/\n" \848 "/tmp\n"849 850 #define dmesg_trivial_usage \851 "[-c] [-n LEVEL] [-s SIZE]"852 #define dmesg_full_usage "\n\n" \853 "Print or control the kernel ring buffer\n" \854 "\nOptions:" \855 "\n -c Clear ring buffer after printing" \856 "\n -n LEVEL Set console logging level" \857 "\n -s SIZE Buffer size" \858 859 #define dnsd_trivial_usage \860 "[-dvs] [-c CONFFILE] [-t TTL_SEC] [-p PORT] [-i ADDR]"861 #define dnsd_full_usage "\n\n" \862 "Small static DNS server daemon\n" \863 "\nOptions:" \864 "\n -c FILE Config file" \865 "\n -t SEC TTL" \866 "\n -p PORT Listen on PORT" \867 "\n -i ADDR Listen on ADDR" \868 "\n -d Daemonize" \869 "\n -v Verbose" \870 "\n -s Send successful replies only. Use this if you want" \871 "\n to use /etc/resolv.conf with two nameserver lines:" \872 "\n nameserver DNSD_SERVER" \873 "\n nameserver NORNAL_DNS_SERVER" \874 875 #define dos2unix_trivial_usage \876 "[-ud] [FILE]"877 #define dos2unix_full_usage "\n\n" \878 "Convert FILE in-place from DOS to Unix format.\n" \879 "When no file is given, use stdin/stdout.\n" \880 "\nOptions:" \881 "\n -u dos2unix" \882 "\n -d unix2dos" \883 884 #define unix2dos_trivial_usage \885 "[-ud] [FILE]"886 #define unix2dos_full_usage "\n\n" \887 "Convert FILE in-place from Unix to DOS format.\n" \888 "When no file is given, use stdin/stdout.\n" \889 "\nOptions:" \890 "\n -u dos2unix" \891 "\n -d unix2dos" \892 893 #define dpkg_trivial_usage \894 "[-ilCPru] [-F OPT] PACKAGE"895 #define dpkg_full_usage "\n\n" \896 "Install, remove and manage Debian packages\n" \897 "\nOptions:" \898 IF_LONG_OPTS( \899 "\n -i,--install Install the package" \900 "\n -l,--list List of installed packages" \901 "\n --configure Configure an unpackaged package" \902 "\n -P,--purge Purge all files of a package" \903 "\n -r,--remove Remove all but the configuration files for a package" \904 "\n --unpack Unpack a package, but don't configure it" \905 "\n --force-depends Ignore dependency problems" \906 "\n --force-confnew Overwrite existing config files when installing" \907 "\n --force-confold Keep old config files when installing" \908 ) \909 IF_NOT_LONG_OPTS( \910 "\n -i Install the package" \911 "\n -l List of installed packages" \912 "\n -C Configure an unpackaged package" \913 "\n -P Purge all files of a package" \914 "\n -r Remove all but the configuration files for a package" \915 "\n -u Unpack a package, but don't configure it" \916 "\n -F depends Ignore dependency problems" \917 "\n -F confnew Overwrite existing config files when installing" \918 "\n -F confold Keep old config files when installing" \919 )920 921 #define dpkg_deb_trivial_usage \922 "[-cefxX] FILE [argument]"923 #define dpkg_deb_full_usage "\n\n" \924 "Perform actions on Debian packages (.debs)\n" \925 "\nOptions:" \926 "\n -c List contents of filesystem tree" \927 "\n -e Extract control files to [argument] directory" \928 "\n -f Display control field name starting with [argument]" \929 "\n -x Extract packages filesystem tree to directory" \930 "\n -X Verbose extract" \931 932 #define dpkg_deb_example_usage \933 "$ dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp\n"934 935 #define du_trivial_usage \936 "[-aHLdclsx" IF_FEATURE_HUMAN_READABLE("hm") "k] [FILE]..."937 #define du_full_usage "\n\n" \938 "Summarize disk space used for each FILE and/or directory.\n" \939 "Disk space is printed in units of " \940 IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("1024") \941 IF_NOT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K("512") \942 " bytes.\n" \943 "\nOptions:" \944 "\n -a Show file sizes too" \945 "\n -L Follow all symlinks" \946 "\n -H Follow symlinks on command line" \947 "\n -d N Limit output to directories (and files with -a) of depth < N" \948 "\n -c Show grand total" \949 "\n -l Count sizes many times if hard linked" \950 "\n -s Display only a total for each argument" \951 "\n -x Skip directories on different filesystems" \952 IF_FEATURE_HUMAN_READABLE( \953 "\n -h Sizes in human readable format (e.g., 1K 243M 2G )" \954 "\n -m Sizes in megabytes" \955 ) \956 "\n -k Sizes in kilobytes" \957 IF_FEATURE_DU_DEFAULT_BLOCKSIZE_1K(" (default)") \958 959 #define du_example_usage \960 "$ du\n" \961 "16 ./CVS\n" \962 "12 ./kernel-patches/CVS\n" \963 "80 ./kernel-patches\n" \964 "12 ./tests/CVS\n" \965 "36 ./tests\n" \966 "12 ./scripts/CVS\n" \967 "16 ./scripts\n" \968 "12 ./docs/CVS\n" \969 "104 ./docs\n" \970 "2417 .\n"971 972 #define dumpkmap_trivial_usage \973 "> keymap"974 #define dumpkmap_full_usage "\n\n" \975 "Print a binary keyboard translation table to stdout"976 #define dumpkmap_example_usage \977 "$ dumpkmap > keymap\n"978 979 #define dumpleases_trivial_usage \980 "[-r|-a] [-f LEASEFILE]"981 #define dumpleases_full_usage "\n\n" \982 "Display DHCP leases granted by udhcpd\n" \983 "\nOptions:" \984 IF_LONG_OPTS( \985 "\n -f,--file=FILE Lease file" \986 "\n -r,--remaining Show remaining time" \987 "\n -a,--absolute Show expiration time" \988 ) \989 IF_NOT_LONG_OPTS( \990 "\n -f FILE Lease file" \991 "\n -r Show remaining time" \992 "\n -a Show expiration time" \993 )994 995 /*996 #define e2fsck_trivial_usage \997 "[-panyrcdfvstDFSV] [-b superblock] [-B blocksize] " \998 "[-I inode_buffer_blocks] [-P process_inode_size] " \999 "[-l|-L bad_blocks_file] [-C fd] [-j external_journal] " \1000 "[-E extended-options] device"1001 #define e2fsck_full_usage "\n\n" \1002 "Check ext2/ext3 file system\n" \1003 "\nOptions:" \1004 "\n -p Automatic repair (no questions)" \1005 "\n -n Make no changes to the filesystem" \1006 "\n -y Assume 'yes' to all questions" \1007 "\n -c Check for bad blocks and add them to the badblock list" \1008 "\n -f Force checking even if filesystem is marked clean" \1009 "\n -v Verbose" \1010 "\n -b superblock Use alternative superblock" \1011 "\n -B blocksize Force blocksize when looking for superblock" \1012 "\n -j journal Set location of the external journal" \1013 "\n -l file Add to badblocks list" \1014 "\n -L file Set badblocks list" \1015 */1016 1017 #define echo_trivial_usage \1018 IF_FEATURE_FANCY_ECHO("[-neE] ") "[ARG]..."1019 #define echo_full_usage "\n\n" \1020 "Print the specified ARGs to stdout" \1021 IF_FEATURE_FANCY_ECHO( "\n" \1022 "\nOptions:" \1023 "\n -n Suppress trailing newline" \1024 "\n -e Interpret backslash escapes (i.e., \\t=tab)" \1025 "\n -E Don't interpret backslash escapes (default)" \1026 )1027 #define echo_example_usage \1028 "$ echo \"Erik is cool\"\n" \1029 "Erik is cool\n" \1030 IF_FEATURE_FANCY_ECHO("$ echo -e \"Erik\\nis\\ncool\"\n" \1031 "Erik\n" \1032 "is\n" \1033 "cool\n" \1034 "$ echo \"Erik\\nis\\ncool\"\n" \1035 "Erik\\nis\\ncool\n")1036 1037 #define eject_trivial_usage \1038 "[-t] [-T] [DEVICE]"1039 #define eject_full_usage "\n\n" \1040 "Eject DEVICE or default /dev/cdrom\n" \1041 "\nOptions:" \1042 IF_FEATURE_EJECT_SCSI( \1043 "\n -s SCSI device" \1044 ) \1045 "\n -t Close tray" \1046 "\n -T Open/close tray (toggle)" \1047 1048 #define ed_trivial_usage ""1049 #define ed_full_usage ""1050 1051 #define env_trivial_usage \1052 "[-iu] [-] [name=value]... [PROG ARGS]"1053 #define env_full_usage "\n\n" \1054 "Print the current environment or run PROG after setting up\n" \1055 "the specified environment\n" \1056 "\nOptions:" \1057 "\n -, -i Start with an empty environment" \1058 "\n -u Remove variable from the environment" \1059 1060 #define ether_wake_trivial_usage \1061 "[-b] [-i iface] [-p aa:bb:cc:dd[:ee:ff]] MAC"1062 #define ether_wake_full_usage "\n\n" \1063 "Send a magic packet to wake up sleeping machines.\n" \1064 "MAC must be a station address (00:11:22:33:44:55) or\n" \1065 "a hostname with a known 'ethers' entry.\n" \1066 "\nOptions:" \1067 "\n -b Send wake-up packet to the broadcast address" \1068 "\n -i iface Interface to use (default eth0)" \1069 "\n -p pass Append four or six byte password PW to the packet" \1070 1071 #define expand_trivial_usage \1072 "[-i] [-t N] [FILE]..."1073 #define expand_full_usage "\n\n" \1074 "Convert tabs to spaces, writing to stdout\n" \1075 "\nOptions:" \1076 IF_FEATURE_EXPAND_LONG_OPTIONS( \1077 "\n -i,--initial Don't convert tabs after non blanks" \1078 "\n -t,--tabs=N Tabstops every N chars" \1079 ) \1080 IF_NOT_FEATURE_EXPAND_LONG_OPTIONS( \1081 "\n -i Don't convert tabs after non blanks" \1082 "\n -t Tabstops every N chars" \1083 )1084 1085 #define expr_trivial_usage \1086 "EXPRESSION"1087 #define expr_full_usage "\n\n" \1088 "Print the value of EXPRESSION to stdout\n" \1089 "\n" \1090 "EXPRESSION may be:\n" \1091 " ARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n" \1092 " ARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n" \1093 " ARG1 < ARG2 1 if ARG1 is less than ARG2, else 0. Similarly:\n" \1094 " ARG1 <= ARG2\n" \1095 " ARG1 = ARG2\n" \1096 " ARG1 != ARG2\n" \1097 " ARG1 >= ARG2\n" \1098 " ARG1 > ARG2\n" \1099 " ARG1 + ARG2 Sum of ARG1 and ARG2. Similarly:\n" \1100 " ARG1 - ARG2\n" \1101 " ARG1 * ARG2\n" \1102 " ARG1 / ARG2\n" \1103 " ARG1 % ARG2\n" \1104 " STRING : REGEXP Anchored pattern match of REGEXP in STRING\n" \1105 " match STRING REGEXP Same as STRING : REGEXP\n" \1106 " substr STRING POS LENGTH Substring of STRING, POS counted from 1\n" \1107 " index STRING CHARS Index in STRING where any CHARS is found, or 0\n" \1108 " length STRING Length of STRING\n" \1109 " quote TOKEN Interpret TOKEN as a string, even if\n" \1110 " it is a keyword like 'match' or an\n" \1111 " operator like '/'\n" \1112 " (EXPRESSION) Value of EXPRESSION\n" \1113 "\n" \1114 "Beware that many operators need to be escaped or quoted for shells.\n" \1115 "Comparisons are arithmetic if both ARGs are numbers, else\n" \1116 "lexicographical. Pattern matches return the string matched between\n" \1117 "\\( and \\) or null; if \\( and \\) are not used, they return the number\n" \1118 "of characters matched or 0."1119 1120 #define fakeidentd_trivial_usage \1121 "[-fiw] [-b ADDR] [STRING]"1122 #define fakeidentd_full_usage "\n\n" \1123 "Provide fake ident (auth) service\n" \1124 "\nOptions:" \1125 "\n -f Run in foreground" \1126 "\n -i Inetd mode" \1127 "\n -w Inetd 'wait' mode" \1128 "\n -b ADDR Bind to specified address" \1129 "\n STRING Ident answer string (default: nobody)" \1130 1131 #define false_trivial_usage \1132 ""1133 #define false_full_usage "\n\n" \1134 "Return an exit code of FALSE (1)"1135 1136 #define false_example_usage \1137 "$ false\n" \1138 "$ echo $?\n" \1139 "1\n"1140 1141 #define fbsplash_trivial_usage \1142 "-s IMGFILE [-c] [-d DEV] [-i INIFILE] [-f CMD]"1143 #define fbsplash_full_usage "\n\n" \1144 "Options:" \1145 "\n -s Image" \1146 "\n -c Hide cursor" \1147 "\n -d Framebuffer device (default /dev/fb0)" \1148 "\n -i Config file (var=value):" \1149 "\n BAR_LEFT,BAR_TOP,BAR_WIDTH,BAR_HEIGHT" \1150 "\n BAR_R,BAR_G,BAR_B" \1151 "\n -f Control pipe (else exit after drawing image)" \1152 "\n commands: 'NN' (% for progress bar) or 'exit'" \1153 1154 #define fbset_trivial_usage \1155 "[OPTIONS] [MODE]"1156 #define fbset_full_usage "\n\n" \1157 "Show and modify frame buffer settings"1158 1159 #define fbset_example_usage \1160 "$ fbset\n" \1161 "mode \"1024x768-76\"\n" \1162 " # D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz\n" \1163 " geometry 1024 768 1024 768 16\n" \1164 " timings 12714 128 32 16 4 128 4\n" \1165 " accel false\n" \1166 " rgba 5/11,6/5,5/0,0/0\n" \1167 "endmode\n"1168 1169 #define fdflush_trivial_usage \1170 "DEVICE"1171 #define fdflush_full_usage "\n\n" \1172 "Force floppy disk drive to detect disk change"1173 1174 #define fdformat_trivial_usage \1175 "[-n] DEVICE"1176 #define fdformat_full_usage "\n\n" \1177 "Format floppy disk\n" \1178 "\nOptions:" \1179 "\n -n Don't verify after format" \1180 1181 /* Looks like someone forgot to add this to config system */1182 #ifndef ENABLE_FEATURE_FDISK_BLKSIZE1183 # define ENABLE_FEATURE_FDISK_BLKSIZE 01184 # define IF_FEATURE_FDISK_BLKSIZE(a)1185 22 #endif 1186 1187 #define fdisk_trivial_usage \1188 "[-ul" IF_FEATURE_FDISK_BLKSIZE("s") "] " \1189 "[-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISK"1190 #define fdisk_full_usage "\n\n" \1191 "Change partition table\n" \1192 "\nOptions:" \1193 "\n -u Start and End are in sectors (instead of cylinders)" \1194 "\n -l Show partition table for each DISK, then exit" \1195 IF_FEATURE_FDISK_BLKSIZE( \1196 "\n -s Show partition sizes in kb for each DISK, then exit" \1197 ) \1198 "\n -b 2048 (for certain MO disks) use 2048-byte sectors" \1199 "\n -C CYLINDERS Set number of cylinders/heads/sectors" \1200 "\n -H HEADS" \1201 "\n -S SECTORS" \1202 1203 #define fgconsole_trivial_usage \1204 ""1205 #define fgconsole_full_usage "\n\n" \1206 "Get active console"1207 1208 #define findfs_trivial_usage \1209 "LABEL=label or UUID=uuid"1210 #define findfs_full_usage "\n\n" \1211 "Find a filesystem device based on a label or UUID"1212 #define findfs_example_usage \1213 "$ findfs LABEL=MyDevice"1214 1215 #define flash_lock_trivial_usage \1216 "MTD_DEVICE OFFSET SECTORS"1217 #define flash_lock_full_usage "\n\n" \1218 "Lock part or all of an MTD device. If SECTORS is -1, then all sectors\n" \1219 "will be locked, regardless of the value of OFFSET"1220 1221 #define flash_unlock_trivial_usage \1222 "MTD_DEVICE"1223 #define flash_unlock_full_usage "\n\n" \1224 "Unlock an MTD device"1225 1226 #define flash_eraseall_trivial_usage \1227 "[-jq] MTD_DEVICE"1228 #define flash_eraseall_full_usage "\n\n" \1229 "Erase an MTD device\n" \1230 "\nOptions:" \1231 "\n -j Format the device for jffs2" \1232 "\n -q Don't display progress messages" \1233 1234 #define flashcp_trivial_usage \1235 "-v FILE MTD_DEVICE"1236 #define flashcp_full_usage "\n\n" \1237 "Copy an image to MTD device\n" \1238 "\nOptions:" \1239 "\n -v Verbose" \1240 1241 #define flock_trivial_usage \1242 "[-sxun] FD|{FILE [-c] PROG ARGS}"1243 #define flock_full_usage "\n\n" \1244 "[Un]lock file descriptor, or lock FILE, run PROG\n" \1245 "\nOptions:" \1246 "\n -s Shared lock" \1247 "\n -x Exclusive lock (default)" \1248 "\n -u Unlock FD" \1249 "\n -n Fail rather than wait" \1250 1251 #define fold_trivial_usage \1252 "[-bs] [-w WIDTH] [FILE]..."1253 #define fold_full_usage "\n\n" \1254 "Wrap input lines in each FILE (or stdin), writing to stdout\n" \1255 "\nOptions:" \1256 "\n -b Count bytes rather than columns" \1257 "\n -s Break at spaces" \1258 "\n -w Use WIDTH columns instead of 80" \1259 1260 #define free_trivial_usage \1261 "" IF_DESKTOP("[-b/k/m/g]")1262 #define free_full_usage "\n\n" \1263 "Display the amount of free and used system memory"1264 #define free_example_usage \1265 "$ free\n" \1266 " total used free shared buffers\n" \1267 " Mem: 257628 248724 8904 59644 93124\n" \1268 " Swap: 128516 8404 120112\n" \1269 "Total: 386144 257128 129016\n" \1270 1271 #define freeramdisk_trivial_usage \1272 "DEVICE"1273 #define freeramdisk_full_usage "\n\n" \1274 "Free all memory used by the specified ramdisk"1275 #define freeramdisk_example_usage \1276 "$ freeramdisk /dev/ram2\n"1277 1278 #define fsck_trivial_usage \1279 "[-ANPRTV] [-C FD] [-t FSTYPE] [FS_OPTS] [BLOCKDEV]..."1280 #define fsck_full_usage "\n\n" \1281 "Check and repair filesystems\n" \1282 "\nOptions:" \1283 "\n -A Walk /etc/fstab and check all filesystems" \1284 "\n -N Don't execute, just show what would be done" \1285 "\n -P With -A, check filesystems in parallel" \1286 "\n -R With -A, skip the root filesystem" \1287 "\n -T Don't show title on startup" \1288 "\n -V Verbose" \1289 "\n -C n Write status information to specified filedescriptor" \1290 "\n -t TYPE List of filesystem types to check" \1291 1292 #define fsck_minix_trivial_usage \1293 "[-larvsmf] BLOCKDEV"1294 #define fsck_minix_full_usage "\n\n" \1295 "Check MINIX filesystem\n" \1296 "\nOptions:" \1297 "\n -l List all filenames" \1298 "\n -r Perform interactive repairs" \1299 "\n -a Perform automatic repairs" \1300 "\n -v Verbose" \1301 "\n -s Output superblock information" \1302 "\n -m Show \"mode not cleared\" warnings" \1303 "\n -f Force file system check" \1304 1305 #define ftpd_trivial_usage \1306 "[-wvS] [-t N] [-T N] [DIR]"1307 #define ftpd_full_usage "\n\n" \1308 "Anonymous FTP server\n" \1309 "\n" \1310 "ftpd should be used as an inetd service.\n" \1311 "ftpd's line for inetd.conf:\n" \1312 " 21 stream tcp nowait root ftpd ftpd /files/to/serve\n" \1313 "It also can be ran from tcpsvd:\n" \1314 " tcpsvd -vE 0.0.0.0 21 ftpd /files/to/serve\n" \1315 "\nOptions:" \1316 "\n -w Allow upload" \1317 "\n -v Log to stderr" \1318 "\n -S Log to syslog" \1319 "\n -t,-T Idle and absolute timeouts" \1320 "\n DIR Change root to this directory" \1321 1322 #define ftpget_trivial_usage \1323 "[OPTIONS] HOST [LOCAL_FILE] REMOTE_FILE"1324 #define ftpget_full_usage "\n\n" \1325 "Retrieve a remote file via FTP\n" \1326 "\nOptions:" \1327 IF_FEATURE_FTPGETPUT_LONG_OPTIONS( \1328 "\n -c,--continue Continue previous transfer" \1329 "\n -v,--verbose Verbose" \1330 "\n -u,--username Username" \1331 "\n -p,--password Password" \1332 "\n -P,--port Port number" \1333 ) \1334 IF_NOT_FEATURE_FTPGETPUT_LONG_OPTIONS( \1335 "\n -c Continue previous transfer" \1336 "\n -v Verbose" \1337 "\n -u Username" \1338 "\n -p Password" \1339 "\n -P Port number" \1340 )1341 1342 #define ftpput_trivial_usage \1343 "[OPTIONS] HOST [REMOTE_FILE] LOCAL_FILE"1344 #define ftpput_full_usage "\n\n" \1345 "Store a local file on a remote machine via FTP\n" \1346 "\nOptions:" \1347 IF_FEATURE_FTPGETPUT_LONG_OPTIONS( \1348 "\n -v,--verbose Verbose" \1349 "\n -u,--username Username" \1350 "\n -p,--password Password" \1351 "\n -P,--port Port number" \1352 ) \1353 IF_NOT_FEATURE_FTPGETPUT_LONG_OPTIONS( \1354 "\n -v Verbose" \1355 "\n -u Username" \1356 "\n -p Password" \1357 "\n -P Port number" \1358 )1359 1360 #define fuser_trivial_usage \1361 "[OPTIONS] FILE or PORT/PROTO"1362 #define fuser_full_usage "\n\n" \1363 "Find processes which use FILEs or PORTs\n" \1364 "\nOptions:" \1365 "\n -m Find processes which use same fs as FILEs" \1366 "\n -4,-6 Search only IPv4/IPv6 space" \1367 "\n -s Don't display PIDs" \1368 "\n -k Kill found processes" \1369 "\n -SIGNAL Signal to send (default: KILL)" \1370 1371 #define getenforce_trivial_usage NOUSAGE_STR1372 #define getenforce_full_usage ""1373 1374 #define getopt_trivial_usage \1375 "[OPTIONS]"1376 #define getopt_full_usage "\n\n" \1377 "Options:" \1378 IF_LONG_OPTS( \1379 "\n -a,--alternative Allow long options starting with single -" \1380 "\n -l,--longoptions=longopts Long options to be recognized" \1381 "\n -n,--name=progname The name under which errors are reported" \1382 "\n -o,--options=optstring Short options to be recognized" \1383 "\n -q,--quiet Disable error reporting by getopt(3)" \1384 "\n -Q,--quiet-output No normal output" \1385 "\n -s,--shell=shell Set shell quoting conventions" \1386 "\n -T,--test Test for getopt(1) version" \1387 "\n -u,--unquoted Don't quote the output" \1388 ) \1389 IF_NOT_LONG_OPTS( \1390 "\n -a Allow long options starting with single -" \1391 "\n -l longopts Long options to be recognized" \1392 "\n -n progname The name under which errors are reported" \1393 "\n -o optstring Short options to be recognized" \1394 "\n -q Disable error reporting by getopt(3)" \1395 "\n -Q No normal output" \1396 "\n -s shell Set shell quoting conventions" \1397 "\n -T Test for getopt(1) version" \1398 "\n -u Don't quote the output" \1399 )1400 #define getopt_example_usage \1401 "$ cat getopt.test\n" \1402 "#!/bin/sh\n" \1403 "GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \\\n" \1404 " -n 'example.busybox' -- \"$@\"`\n" \1405 "if [ $? != 0 ]; then exit 1; fi\n" \1406 "eval set -- \"$GETOPT\"\n" \1407 "while true; do\n" \1408 " case $1 in\n" \1409 " -a|--a-long) echo \"Option a\"; shift;;\n" \1410 " -b|--b-long) echo \"Option b, argument '$2'\"; shift 2;;\n" \1411 " -c|--c-long)\n" \1412 " case \"$2\" in\n" \1413 " \"\") echo \"Option c, no argument\"; shift 2;;\n" \1414 " *) echo \"Option c, argument '$2'\"; shift 2;;\n" \1415 " esac;;\n" \1416 " --) shift; break;;\n" \1417 " *) echo \"Internal error!\"; exit 1;;\n" \1418 " esac\n" \1419 "done\n"1420 1421 #define getsebool_trivial_usage \1422 "-a or getsebool boolean..."1423 #define getsebool_full_usage "\n\n" \1424 " -a Show all selinux booleans"1425 1426 #define getty_trivial_usage \1427 "[OPTIONS] BAUD_RATE TTY [TERMTYPE]"1428 #define getty_full_usage "\n\n" \1429 "Open a tty, prompt for a login name, then invoke /bin/login\n" \1430 "\nOptions:" \1431 "\n -h Enable hardware (RTS/CTS) flow control" \1432 "\n -i Don't display /etc/issue before running login" \1433 "\n -L Local line, don't do carrier detect" \1434 "\n -m Get baud rate from modem's CONNECT status message" \1435 "\n -w Wait for a CR or LF before sending /etc/issue" \1436 "\n -n Don't prompt the user for a login name" \1437 "\n -f ISSUE_FILE Display ISSUE_FILE instead of /etc/issue" \1438 "\n -l LOGIN Invoke LOGIN instead of /bin/login" \1439 "\n -t SEC Terminate after SEC if no username is read" \1440 "\n -I INITSTR Send INITSTR before anything else" \1441 "\n -H HOST Log HOST into the utmp file as the hostname" \1442 1443 #define gunzip_trivial_usage \1444 "[-cft] [FILE]..."1445 #define gunzip_full_usage "\n\n" \1446 "Decompress FILEs (or stdin)\n" \1447 "\nOptions:" \1448 "\n -c Write to stdout" \1449 "\n -f Force" \1450 "\n -t Test file integrity" \1451 1452 #define gunzip_example_usage \1453 "$ ls -la /tmp/BusyBox*\n" \1454 "-rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz\n" \1455 "$ gunzip /tmp/BusyBox-0.43.tar.gz\n" \1456 "$ ls -la /tmp/BusyBox*\n" \1457 "-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar\n"1458 1459 #define gzip_trivial_usage \1460 "[-cfd] [FILE]..."1461 #define gzip_full_usage "\n\n" \1462 "Compress FILEs (or stdin)\n" \1463 "\nOptions:" \1464 "\n -d Decompress" \1465 "\n -c Write to stdout" \1466 "\n -f Force" \1467 1468 #define gzip_example_usage \1469 "$ ls -la /tmp/busybox*\n" \1470 "-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/busybox.tar\n" \1471 "$ gzip /tmp/busybox.tar\n" \1472 "$ ls -la /tmp/busybox*\n" \1473 "-rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"1474 1475 #define hdparm_trivial_usage \1476 "[OPTIONS] [DEVICE]"1477 #define hdparm_full_usage "\n\n" \1478 "Options:" \1479 "\n -a Get/set fs readahead" \1480 "\n -A Set drive read-lookahead flag (0/1)" \1481 "\n -b Get/set bus state (0 == off, 1 == on, 2 == tristate)" \1482 "\n -B Set Advanced Power Management setting (1-255)" \1483 "\n -c Get/set IDE 32-bit IO setting" \1484 "\n -C Check IDE power mode status" \1485 IF_FEATURE_HDPARM_HDIO_GETSET_DMA( \1486 "\n -d Get/set using_dma flag") \1487 "\n -D Enable/disable drive defect-mgmt" \1488 "\n -f Flush buffer cache for device on exit" \1489 "\n -g Display drive geometry" \1490 "\n -h Display terse usage information" \1491 IF_FEATURE_HDPARM_GET_IDENTITY( \1492 "\n -i Display drive identification") \1493 IF_FEATURE_HDPARM_GET_IDENTITY( \1494 "\n -I Detailed/current information directly from drive") \1495 "\n -k Get/set keep_settings_over_reset flag (0/1)" \1496 "\n -K Set drive keep_features_over_reset flag (0/1)" \1497 "\n -L Set drive doorlock (0/1) (removable harddisks only)" \1498 "\n -m Get/set multiple sector count" \1499 "\n -n Get/set ignore-write-errors flag (0/1)" \1500 "\n -p Set PIO mode on IDE interface chipset (0,1,2,3,4,...)" \1501 "\n -P Set drive prefetch count" \1502 /* "\n -q Change next setting quietly" - not supported ib bbox */ \1503 "\n -Q Get/set DMA tagged-queuing depth (if supported)" \1504 "\n -r Get/set readonly flag (DANGEROUS to set)" \1505 IF_FEATURE_HDPARM_HDIO_SCAN_HWIF( \1506 "\n -R Register an IDE interface (DANGEROUS)") \1507 "\n -S Set standby (spindown) timeout" \1508 "\n -t Perform device read timings" \1509 "\n -T Perform cache read timings" \1510 "\n -u Get/set unmaskirq flag (0/1)" \1511 IF_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF( \1512 "\n -U Unregister an IDE interface (DANGEROUS)") \1513 "\n -v Defaults; same as -mcudkrag for IDE drives" \1514 "\n -V Display program version and exit immediately" \1515 IF_FEATURE_HDPARM_HDIO_DRIVE_RESET( \1516 "\n -w Perform device reset (DANGEROUS)") \1517 "\n -W Set drive write-caching flag (0/1) (DANGEROUS)" \1518 IF_FEATURE_HDPARM_HDIO_TRISTATE_HWIF( \1519 "\n -x Tristate device for hotswap (0/1) (DANGEROUS)") \1520 "\n -X Set IDE xfer mode (DANGEROUS)" \1521 "\n -y Put IDE drive in standby mode" \1522 "\n -Y Put IDE drive to sleep" \1523 "\n -Z Disable Seagate auto-powersaving mode" \1524 "\n -z Reread partition table" \1525 1526 #define head_trivial_usage \1527 "[OPTIONS] [FILE]..."1528 #define head_full_usage "\n\n" \1529 "Print first 10 lines of each FILE (or stdin) to stdout.\n" \1530 "With more than one FILE, precede each with a filename header.\n" \1531 "\nOptions:" \1532 "\n -n N[kbm] Print first N lines" \1533 IF_FEATURE_FANCY_HEAD( \1534 "\n -c N[kbm] Print first N bytes" \1535 "\n -q Never print headers" \1536 "\n -v Always print headers" \1537 ) \1538 "\n" \1539 "\nN may be suffixed by k (x1024), b (x512), or m (x1024^2)." \1540 1541 #define head_example_usage \1542 "$ head -n 2 /etc/passwd\n" \1543 "root:x:0:0:root:/root:/bin/bash\n" \1544 "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n"1545 1546 #define tail_trivial_usage \1547 "[OPTIONS] [FILE]..."1548 #define tail_full_usage "\n\n" \1549 "Print last 10 lines of each FILE (or stdin) to stdout.\n" \1550 "With more than one FILE, precede each with a filename header.\n" \1551 "\nOptions:" \1552 "\n -f Print data as file grows" \1553 IF_FEATURE_FANCY_TAIL( \1554 "\n -s SECONDS Wait SECONDS between reads with -f" \1555 ) \1556 "\n -n N[kbm] Print last N lines" \1557 IF_FEATURE_FANCY_TAIL( \1558 "\n -c N[kbm] Print last N bytes" \1559 "\n -q Never print headers" \1560 "\n -v Always print headers" \1561 "\n" \1562 "\nN may be suffixed by k (x1024), b (x512), or m (x1024^2)." \1563 "\nIf N starts with a '+', output begins with the Nth item from the start" \1564 "\nof each file, not from the end." \1565 ) \1566 1567 #define tail_example_usage \1568 "$ tail -n 1 /etc/resolv.conf\n" \1569 "nameserver 10.0.0.1\n"1570 1571 #define hexdump_trivial_usage \1572 "[-bcCdefnosvx" IF_FEATURE_HEXDUMP_REVERSE("R") "] [FILE]..."1573 #define hexdump_full_usage "\n\n" \1574 "Display FILEs (or stdin) in a user specified format\n" \1575 "\nOptions:" \1576 "\n -b One-byte octal display" \1577 "\n -c One-byte character display" \1578 "\n -C Canonical hex+ASCII, 16 bytes per line" \1579 "\n -d Two-byte decimal display" \1580 "\n -e FORMAT STRING" \1581 "\n -f FORMAT FILE" \1582 "\n -n LENGTH Interpret only LENGTH bytes of input" \1583 "\n -o Two-byte octal display" \1584 "\n -s OFFSET Skip OFFSET bytes" \1585 "\n -v Display all input data" \1586 "\n -x Two-byte hexadecimal display" \1587 IF_FEATURE_HEXDUMP_REVERSE( \1588 "\n -R Reverse of 'hexdump -Cv'") \1589 1590 #define hd_trivial_usage \1591 "FILE..."1592 #define hd_full_usage "\n\n" \1593 "hd is an alias for hexdump -C"1594 1595 #define hostid_trivial_usage \1596 ""1597 #define hostid_full_usage "\n\n" \1598 "Print out a unique 32-bit identifier for the machine"1599 1600 #define hostname_trivial_usage \1601 "[OPTIONS] [HOSTNAME | -F FILE]"1602 #define hostname_full_usage "\n\n" \1603 "Get or set hostname or DNS domain name\n" \1604 "\nOptions:" \1605 "\n -s Short" \1606 "\n -i Addresses for the hostname" \1607 "\n -d DNS domain name" \1608 "\n -f Fully qualified domain name" \1609 "\n -F FILE Use FILE's content as hostname" \1610 1611 #define hostname_example_usage \1612 "$ hostname\n" \1613 "sage\n"1614 1615 #define dnsdomainname_trivial_usage NOUSAGE_STR1616 #define dnsdomainname_full_usage ""1617 1618 #define httpd_trivial_usage \1619 "[-ifv[v]]" \1620 " [-c CONFFILE]" \1621 " [-p [IP:]PORT]" \1622 IF_FEATURE_HTTPD_SETUID(" [-u USER[:GRP]]") \1623 IF_FEATURE_HTTPD_BASIC_AUTH(" [-r REALM]") \1624 " [-h HOME]\n" \1625 "or httpd -d/-e" IF_FEATURE_HTTPD_AUTH_MD5("/-m") " STRING"1626 #define httpd_full_usage "\n\n" \1627 "Listen for incoming HTTP requests\n" \1628 "\nOptions:" \1629 "\n -i Inetd mode" \1630 "\n -f Don't daemonize" \1631 "\n -v[v] Verbose" \1632 "\n -p [IP:]PORT Bind to IP:PORT (default *:80)" \1633 IF_FEATURE_HTTPD_SETUID( \1634 "\n -u USER[:GRP] Set uid/gid after binding to port") \1635 IF_FEATURE_HTTPD_BASIC_AUTH( \1636 "\n -r REALM Authentication Realm for Basic Authentication") \1637 "\n -h HOME Home directory (default .)" \1638 "\n -c FILE Configuration file (default {/etc,HOME}/httpd.conf)" \1639 IF_FEATURE_HTTPD_AUTH_MD5( \1640 "\n -m STRING MD5 crypt STRING") \1641 "\n -e STRING HTML encode STRING" \1642 "\n -d STRING URL decode STRING" \1643 1644 #define hwclock_trivial_usage \1645 IF_FEATURE_HWCLOCK_LONG_OPTIONS( \1646 "[-r|--show] [-s|--hctosys] [-w|--systohc]" \1647 " [-l|--localtime] [-u|--utc]" \1648 " [-f FILE]" \1649 ) \1650 IF_NOT_FEATURE_HWCLOCK_LONG_OPTIONS( \1651 "[-r] [-s] [-w] [-l] [-u] [-f FILE]" \1652 )1653 #define hwclock_full_usage "\n\n" \1654 "Query and set hardware clock (RTC)\n" \1655 "\nOptions:" \1656 "\n -r Show hardware clock time" \1657 "\n -s Set system time from hardware clock" \1658 "\n -w Set hardware clock to system time" \1659 "\n -u Hardware clock is in UTC" \1660 "\n -l Hardware clock is in local time" \1661 "\n -f FILE Use specified device (e.g. /dev/rtc2)" \1662 1663 #define id_trivial_usage \1664 "[OPTIONS] [USER]"1665 #define id_full_usage "\n\n" \1666 "Print information about USER or the current user\n" \1667 "\nOptions:" \1668 IF_SELINUX( \1669 "\n -Z Security context" \1670 ) \1671 "\n -u User ID" \1672 "\n -g Group ID" \1673 "\n -G Supplementary group IDs" \1674 "\n -n Print names instead of numbers" \1675 "\n -r Print real ID instead of effective ID" \1676 1677 #define id_example_usage \1678 "$ id\n" \1679 "uid=1000(andersen) gid=1000(andersen)\n"1680 1681 #define ifconfig_trivial_usage \1682 IF_FEATURE_IFCONFIG_STATUS("[-a]") " interface [address]"1683 #define ifconfig_full_usage "\n\n" \1684 "Configure a network interface\n" \1685 "\nOptions:" \1686 "\n" \1687 IF_FEATURE_IPV6( \1688 " [add ADDRESS[/PREFIXLEN]]\n") \1689 IF_FEATURE_IPV6( \1690 " [del ADDRESS[/PREFIXLEN]]\n") \1691 " [[-]broadcast [ADDRESS]] [[-]pointopoint [ADDRESS]]\n" \1692 " [netmask ADDRESS] [dstaddr ADDRESS]\n" \1693 IF_FEATURE_IFCONFIG_SLIP( \1694 " [outfill NN] [keepalive NN]\n") \1695 " " IF_FEATURE_IFCONFIG_HW("[hw ether" IF_FEATURE_HWIB("|infiniband")" ADDRESS] ") "[metric NN] [mtu NN]\n" \1696 " [[-]trailers] [[-]arp] [[-]allmulti]\n" \1697 " [multicast] [[-]promisc] [txqueuelen NN] [[-]dynamic]\n" \1698 IF_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ( \1699 " [mem_start NN] [io_addr NN] [irq NN]\n") \1700 " [up|down] ..."1701 1702 #define ifenslave_trivial_usage \1703 "[-cdf] MASTER_IFACE SLAVE_IFACE..."1704 #define ifenslave_full_usage "\n\n" \1705 "Configure network interfaces for parallel routing\n" \1706 "\nOptions:" \1707 "\n -c,--change-active Change active slave" \1708 "\n -d,--detach Remove slave interface from bonding device" \1709 "\n -f,--force Force, even if interface is not Ethernet" \1710 /* "\n -r,--receive-slave Create a receive-only slave" */1711 1712 #define ifenslave_example_usage \1713 "To create a bond device, simply follow these three steps:\n" \1714 "- ensure that the required drivers are properly loaded:\n" \1715 " # modprobe bonding ; modprobe <3c59x|eepro100|pcnet32|tulip|...>\n" \1716 "- assign an IP address to the bond device:\n" \1717 " # ifconfig bond0 <addr> netmask <mask> broadcast <bcast>\n" \1718 "- attach all the interfaces you need to the bond device:\n" \1719 " # ifenslave bond0 eth0 eth1 eth2\n" \1720 " If bond0 didn't have a MAC address, it will take eth0's. Then, all\n" \1721 " interfaces attached AFTER this assignment will get the same MAC addr.\n\n" \1722 " To detach a dead interface without setting the bond device down:\n" \1723 " # ifenslave -d bond0 eth1\n\n" \1724 " To set the bond device down and automatically release all the slaves:\n" \1725 " # ifconfig bond0 down\n\n" \1726 " To change active slave:\n" \1727 " # ifenslave -c bond0 eth0\n" \1728 1729 #define ifplugd_trivial_usage \1730 "[OPTIONS]"1731 #define ifplugd_full_usage "\n\n" \1732 "Network interface plug detection daemon\n" \1733 "\nOptions:" \1734 "\n -n Don't daemonize" \1735 "\n -s Don't log to syslog" \1736 "\n -i IFACE Interface" \1737 "\n -f/-F Treat link detection error as link down/link up" \1738 "\n (otherwise exit on error)" \1739 "\n -a Don't up interface at each link probe" \1740 "\n -M Monitor creation/destruction of interface" \1741 "\n (otherwise it must exist)" \1742 "\n -r PROG Script to run" \1743 "\n -x ARG Extra argument for script" \1744 "\n -I Don't exit on nonzero exit code from script" \1745 "\n -p Don't run script on daemon startup" \1746 "\n -q Don't run script on daemon quit" \1747 "\n -l Run script on startup even if no cable is detected" \1748 "\n -t SECS Poll time in seconds" \1749 "\n -u SECS Delay before running script after link up" \1750 "\n -d SECS Delay after link down" \1751 "\n -m MODE API mode (mii, priv, ethtool, wlan, iff, auto)" \1752 "\n -k Kill running daemon" \1753 1754 #define ifup_trivial_usage \1755 "[-an"IF_FEATURE_IFUPDOWN_MAPPING("m")"vf] [-i FILE] IFACE..."1756 #define ifup_full_usage "\n\n" \1757 "Options:" \1758 "\n -a De/configure all interfaces automatically" \1759 "\n -i FILE Use FILE for interface definitions" \1760 "\n -n Print out what would happen, but don't do it" \1761 IF_FEATURE_IFUPDOWN_MAPPING( \1762 "\n (note: doesn't disable mappings)" \1763 "\n -m Don't run any mappings" \1764 ) \1765 "\n -v Print out what would happen before doing it" \1766 "\n -f Force de/configuration" \1767 1768 #define ifdown_trivial_usage \1769 "[-an"IF_FEATURE_IFUPDOWN_MAPPING("m")"vf] [-i FILE] IFACE..."1770 #define ifdown_full_usage "\n\n" \1771 "Options:" \1772 "\n -a De/configure all interfaces automatically" \1773 "\n -i FILE Use FILE for interface definitions" \1774 "\n -n Print out what would happen, but don't do it" \1775 IF_FEATURE_IFUPDOWN_MAPPING( \1776 "\n (note: doesn't disable mappings)" \1777 "\n -m Don't run any mappings" \1778 ) \1779 "\n -v Print out what would happen before doing it" \1780 "\n -f Force de/configuration" \1781 1782 #define inetd_trivial_usage \1783 "[-fe] [-q N] [-R N] [CONFFILE]"1784 #define inetd_full_usage "\n\n" \1785 "Listen for network connections and launch programs\n" \1786 "\nOptions:" \1787 "\n -f Run in foreground" \1788 "\n -e Log to stderr" \1789 "\n -q N Socket listen queue (default: 128)" \1790 "\n -R N Pause services after N connects/min" \1791 "\n (default: 0 - disabled)" \1792 1793 #define inotifyd_trivial_usage \1794 "PROG FILE1[:MASK]..."1795 #define inotifyd_full_usage "\n\n" \1796 "Run PROG on filesystem changes." \1797 "\nWhen a filesystem event matching MASK occurs on FILEn," \1798 "\nPROG ACTUAL_EVENTS FILEn [SUBFILE] is run." \1799 "\nEvents:" \1800 "\n a File is accessed" \1801 "\n c File is modified" \1802 "\n e Metadata changed" \1803 "\n w Writable file is closed" \1804 "\n 0 Unwritable file is closed" \1805 "\n r File is opened" \1806 "\n D File is deleted" \1807 "\n M File is moved" \1808 "\n u Backing fs is unmounted" \1809 "\n o Event queue overflowed" \1810 "\n x File can't be watched anymore" \1811 "\nIf watching a directory:" \1812 "\n m Subfile is moved into dir" \1813 "\n y Subfile is moved out of dir" \1814 "\n n Subfile is created" \1815 "\n d Subfile is deleted" \1816 "\n" \1817 "\ninotifyd waits for PROG to exit." \1818 "\nWhen x event happens for all FILEs, inotifyd exits." \1819 1820 /* -v, -b, -c are ignored */1821 #define install_trivial_usage \1822 "[-cdDsp] [-o USER] [-g GRP] [-m MODE] [SOURCE]... DEST"1823 #define install_full_usage "\n\n" \1824 "Copy files and set attributes\n" \1825 "\nOptions:" \1826 "\n -c Just copy (default)" \1827 "\n -d Create directories" \1828 "\n -D Create leading target directories" \1829 "\n -s Strip symbol table" \1830 "\n -p Preserve date" \1831 "\n -o USER Set ownership" \1832 "\n -g GRP Set group ownership" \1833 "\n -m MODE Set permissions" \1834 IF_SELINUX( \1835 "\n -Z Set security context" \1836 )1837 1838 /* would need to make the " | " optional depending on more than one selected: */1839 #define ip_trivial_usage \1840 "[OPTIONS] {" \1841 IF_FEATURE_IP_ADDRESS("address | ") \1842 IF_FEATURE_IP_ROUTE("route | ") \1843 IF_FEATURE_IP_LINK("link | ") \1844 IF_FEATURE_IP_TUNNEL("tunnel | ") \1845 IF_FEATURE_IP_RULE("rule") \1846 "} {COMMAND}"1847 #define ip_full_usage "\n\n" \1848 "ip [OPTIONS] OBJECT {COMMAND}\n" \1849 "where OBJECT := {" \1850 IF_FEATURE_IP_ADDRESS("address | ") \1851 IF_FEATURE_IP_ROUTE("route | ") \1852 IF_FEATURE_IP_LINK("link | ") \1853 IF_FEATURE_IP_TUNNEL("tunnel | ") \1854 IF_FEATURE_IP_RULE("rule") \1855 "}\n" \1856 "OPTIONS := { -f[amily] { inet | inet6 | link } | -o[neline] }" \1857 1858 #define ipaddr_trivial_usage \1859 "{ {add|del} IFADDR dev STRING | {show|flush}\n" \1860 " [dev STRING] [to PREFIX] }"1861 #define ipaddr_full_usage "\n\n" \1862 "ipaddr {add|delete} IFADDR dev STRING\n" \1863 "ipaddr {show|flush} [dev STRING] [scope SCOPE-ID]\n" \1864 " [to PREFIX] [label PATTERN]\n" \1865 " IFADDR := PREFIX | ADDR peer PREFIX\n" \1866 " [broadcast ADDR] [anycast ADDR]\n" \1867 " [label STRING] [scope SCOPE-ID]\n" \1868 " SCOPE-ID := [host | link | global | NUMBER]" \1869 1870 #define ipcalc_trivial_usage \1871 "[OPTIONS] ADDRESS[[/]NETMASK] [NETMASK]"1872 #define ipcalc_full_usage "\n\n" \1873 "Calculate IP network settings from a IP address\n" \1874 "\nOptions:" \1875 IF_FEATURE_IPCALC_LONG_OPTIONS( \1876 "\n -b,--broadcast Display calculated broadcast address" \1877 "\n -n,--network Display calculated network address" \1878 "\n -m,--netmask Display default netmask for IP" \1879 IF_FEATURE_IPCALC_FANCY( \1880 "\n -p,--prefix Display the prefix for IP/NETMASK" \1881 "\n -h,--hostname Display first resolved host name" \1882 "\n -s,--silent Don't ever display error messages" \1883 ) \1884 ) \1885 IF_NOT_FEATURE_IPCALC_LONG_OPTIONS( \1886 "\n -b Display calculated broadcast address" \1887 "\n -n Display calculated network address" \1888 "\n -m Display default netmask for IP" \1889 IF_FEATURE_IPCALC_FANCY( \1890 "\n -p Display the prefix for IP/NETMASK" \1891 "\n -h Display first resolved host name" \1892 "\n -s Don't ever display error messages" \1893 ) \1894 )1895 1896 #define ipcrm_trivial_usage \1897 "[-MQS key] [-mqs id]"1898 #define ipcrm_full_usage "\n\n" \1899 "Upper-case options MQS remove an object by shmkey value.\n" \1900 "Lower-case options remove an object by shmid value.\n" \1901 "\nOptions:" \1902 "\n -mM Remove memory segment after last detach" \1903 "\n -qQ Remove message queue" \1904 "\n -sS Remove semaphore" \1905 1906 #define ipcs_trivial_usage \1907 "[[-smq] -i shmid] | [[-asmq] [-tcplu]]"1908 #define ipcs_full_usage "\n\n" \1909 " -i Show specific resource" \1910 "\nResource specification:" \1911 "\n -m Shared memory segments" \1912 "\n -q Message queues" \1913 "\n -s Semaphore arrays" \1914 "\n -a All (default)" \1915 "\nOutput format:" \1916 "\n -t Time" \1917 "\n -c Creator" \1918 "\n -p Pid" \1919 "\n -l Limits" \1920 "\n -u Summary" \1921 1922 #define iplink_trivial_usage \1923 "{ set DEVICE { up | down | arp { on | off } | show [DEVICE] }"1924 #define iplink_full_usage "\n\n" \1925 "iplink set DEVICE { up | down | arp | multicast { on | off } |\n" \1926 " dynamic { on | off } |\n" \1927 " mtu MTU }\n" \1928 "iplink show [DEVICE]" \1929 1930 #define iproute_trivial_usage \1931 "{ list | flush | { add | del | change | append |\n" \1932 " replace | monitor } ROUTE }"1933 #define iproute_full_usage "\n\n" \1934 "iproute { list | flush } SELECTOR\n" \1935 "iproute get ADDRESS [from ADDRESS iif STRING]\n" \1936 " [oif STRING] [tos TOS]\n" \1937 "iproute { add | del | change | append | replace | monitor } ROUTE\n" \1938 " SELECTOR := [root PREFIX] [match PREFIX] [proto RTPROTO]\n" \1939 " ROUTE := [TYPE] PREFIX [tos TOS] [proto RTPROTO]\n" \1940 " [metric METRIC]" \1941 1942 #define iprule_trivial_usage \1943 "{[list | add | del] RULE}"1944 #define iprule_full_usage "\n\n" \1945 "iprule [list | add | del] SELECTOR ACTION\n" \1946 " SELECTOR := [from PREFIX] [to PREFIX] [tos TOS] [fwmark FWMARK]\n" \1947 " [dev STRING] [pref NUMBER]\n" \1948 " ACTION := [table TABLE_ID] [nat ADDRESS]\n" \1949 " [prohibit | reject | unreachable]\n" \1950 " [realms [SRCREALM/]DSTREALM]\n" \1951 " TABLE_ID := [local | main | default | NUMBER]" \1952 1953 #define iptunnel_trivial_usage \1954 "{ add | change | del | show } [NAME]\n" \1955 " [mode { ipip | gre | sit }]\n" \1956 " [remote ADDR] [local ADDR] [ttl TTL]"1957 #define iptunnel_full_usage "\n\n" \1958 "iptunnel { add | change | del | show } [NAME]\n" \1959 " [mode { ipip | gre | sit }] [remote ADDR] [local ADDR]\n" \1960 " [[i|o]seq] [[i|o]key KEY] [[i|o]csum]\n" \1961 " [ttl TTL] [tos TOS] [[no]pmtudisc] [dev PHYS_DEV]" \1962 1963 #define kbd_mode_trivial_usage \1964 "[-a|k|s|u] [-C TTY]"1965 #define kbd_mode_full_usage "\n\n" \1966 "Report or set the keyboard mode\n" \1967 "\nOptions:" \1968 "\n -a Default (ASCII)" \1969 "\n -k Medium-raw (keyboard)" \1970 "\n -s Raw (scancode)" \1971 "\n -u Unicode (utf-8)" \1972 "\n -C TTY Affect TTY instead of /dev/tty" \1973 1974 #define kill_trivial_usage \1975 "[-l] [-SIG] PID..."1976 #define kill_full_usage "\n\n" \1977 "Send a signal (default: TERM) to given PIDs\n" \1978 "\nOptions:" \1979 "\n -l List all signal names and numbers" \1980 /* "\n -s SIG Yet another way of specifying SIG" */ \1981 1982 #define kill_example_usage \1983 "$ ps | grep apache\n" \1984 "252 root root S [apache]\n" \1985 "263 www-data www-data S [apache]\n" \1986 "264 www-data www-data S [apache]\n" \1987 "265 www-data www-data S [apache]\n" \1988 "266 www-data www-data S [apache]\n" \1989 "267 www-data www-data S [apache]\n" \1990 "$ kill 252\n"1991 1992 #define killall_trivial_usage \1993 "[-l] [-q] [-SIG] PROCESS_NAME..."1994 #define killall_full_usage "\n\n" \1995 "Send a signal (default: TERM) to given processes\n" \1996 "\nOptions:" \1997 "\n -l List all signal names and numbers" \1998 /* "\n -s SIG Yet another way of specifying SIG" */ \1999 "\n -q Don't complain if no processes were killed" \2000 2001 #define killall_example_usage \2002 "$ killall apache\n"2003 2004 #define killall5_trivial_usage \2005 "[-l] [-SIG] [-o PID]..."2006 #define killall5_full_usage "\n\n" \2007 "Send a signal (default: TERM) to all processes outside current session\n" \2008 "\nOptions:" \2009 "\n -l List all signal names and numbers" \2010 "\n -o PID Don't signal this PID" \2011 /* "\n -s SIG Yet another way of specifying SIG" */ \2012 2013 #define klogd_trivial_usage \2014 "[-c N] [-n]"2015 #define klogd_full_usage "\n\n" \2016 "Kernel logger\n" \2017 "\nOptions:" \2018 "\n -c N Only messages with level < N are printed to console" \2019 "\n -n Run in foreground" \2020 2021 #define length_trivial_usage \2022 "STRING"2023 #define length_full_usage "\n\n" \2024 "Print STRING's length"2025 2026 #define length_example_usage \2027 "$ length Hello\n" \2028 "5\n"2029 2030 #define less_trivial_usage \2031 "[-EMNmh~I?] [FILE]..."2032 #define less_full_usage "\n\n" \2033 "View FILE (or stdin) one screenful at a time\n" \2034 "\nOptions:" \2035 "\n -E Quit once the end of a file is reached" \2036 "\n -M,-m Display status line with line numbers" \2037 "\n and percentage through the file" \2038 "\n -N Prefix line number to each line" \2039 "\n -I Ignore case in all searches" \2040 "\n -~ Suppress ~s displayed past the end of the file" \2041 2042 #define linux32_trivial_usage NOUSAGE_STR2043 #define linux32_full_usage ""2044 #define linux64_trivial_usage NOUSAGE_STR2045 #define linux64_full_usage ""2046 2047 #define setarch_trivial_usage \2048 "personality PROG ARGS"2049 #define setarch_full_usage "\n\n" \2050 "Personality may be:\n" \2051 " linux32 Set 32bit uname emulation\n" \2052 " linux64 Set 64bit uname emulation" \2053 2054 #define ln_trivial_usage \2055 "[OPTIONS] TARGET... LINK|DIR"2056 #define ln_full_usage "\n\n" \2057 "Create a link LINK or DIR/TARGET to the specified TARGET(s)\n" \2058 "\nOptions:" \2059 "\n -s Make symlinks instead of hardlinks" \2060 "\n -f Remove existing destinations" \2061 "\n -n Don't dereference symlinks - treat like normal file" \2062 "\n -b Make a backup of the target (if exists) before link operation" \2063 "\n -S suf Use suffix instead of ~ when making backup files" \2064 2065 #define ln_example_usage \2066 "$ ln -s BusyBox /tmp/ls\n" \2067 "$ ls -l /tmp/ls\n" \2068 "lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox*\n"2069 2070 #define load_policy_trivial_usage NOUSAGE_STR2071 #define load_policy_full_usage ""2072 2073 #define loadfont_trivial_usage \2074 "< font"2075 #define loadfont_full_usage "\n\n" \2076 "Load a console font from stdin" \2077 /* "\n -C TTY Affect TTY instead of /dev/tty" */ \2078 2079 #define loadfont_example_usage \2080 "$ loadfont < /etc/i18n/fontname\n"2081 2082 #define loadkmap_trivial_usage \2083 "< keymap"2084 #define loadkmap_full_usage "\n\n" \2085 "Load a binary keyboard translation table from stdin\n" \2086 /* "\n -C TTY Affect TTY instead of /dev/tty" */ \2087 2088 #define loadkmap_example_usage \2089 "$ loadkmap < /etc/i18n/lang-keymap\n"2090 2091 #define logger_trivial_usage \2092 "[OPTIONS] [MESSAGE]"2093 #define logger_full_usage "\n\n" \2094 "Write MESSAGE (or stdin) to syslog\n" \2095 "\nOptions:" \2096 "\n -s Log to stderr as well as the system log" \2097 "\n -t TAG Log using the specified tag (defaults to user name)" \2098 "\n -p PRIO Priority (numeric or facility.level pair)" \2099 2100 #define logger_example_usage \2101 "$ logger \"hello\"\n"2102 2103 #define login_trivial_usage \2104 "[-p] [-h HOST] [[-f] USER]"2105 #define login_full_usage "\n\n" \2106 "Begin a new session on the system\n" \2107 "\nOptions:" \2108 "\n -f Don't authenticate (user already authenticated)" \2109 "\n -h Name of the remote host" \2110 "\n -p Preserve environment" \2111 2112 #define logname_trivial_usage \2113 ""2114 #define logname_full_usage "\n\n" \2115 "Print the name of the current user"2116 #define logname_example_usage \2117 "$ logname\n" \2118 "root\n"2119 2120 #define logread_trivial_usage \2121 "[-f]"2122 #define logread_full_usage "\n\n" \2123 "Show messages in syslogd's circular buffer\n" \2124 "\nOptions:" \2125 "\n -f Output data as log grows" \2126 2127 #define losetup_trivial_usage \2128 "[-o OFS] LOOPDEV FILE - associate loop devices\n" \2129 " losetup -d LOOPDEV - disassociate\n" \2130 " losetup [-f] - show"2131 #define losetup_full_usage "\n\n" \2132 "Options:" \2133 "\n -o OFS Start OFS bytes into FILE" \2134 "\n -f Show first free loop device" \2135 2136 #define losetup_notes_usage \2137 "No arguments will display all current associations.\n" \2138 "One argument (losetup /dev/loop1) will display the current association\n" \2139 "(if any), or disassociate it (with -d). The display shows the offset\n" \2140 "and filename of the file the loop device is currently bound to.\n\n" \2141 "Two arguments (losetup /dev/loop1 file.img) create a new association,\n" \2142 "with an optional offset (-o 12345). Encryption is not yet supported.\n" \2143 "losetup -f will show the first loop free loop device\n\n"2144 2145 #define lpd_trivial_usage \2146 "SPOOLDIR [HELPER [ARGS]]"2147 #define lpd_full_usage "\n\n" \2148 "SPOOLDIR must contain (symlinks to) device nodes or directories" \2149 "\nwith names matching print queue names. In the first case, jobs are" \2150 "\nsent directly to the device. Otherwise each job is stored in queue" \2151 "\ndirectory and HELPER program is called. Name of file to print" \2152 "\nis passed in $DATAFILE variable." \2153 "\nExample:" \2154 "\n tcpsvd -E 0 515 softlimit -m 999999 lpd /var/spool ./print" \2155 2156 #define lpq_trivial_usage \2157 "[-P queue[@host[:port]]] [-U USERNAME] [-d JOBID]... [-fs]"2158 #define lpq_full_usage "\n\n" \2159 "Options:" \2160 "\n -P lp service to connect to (else uses $PRINTER)" \2161 "\n -d Delete jobs" \2162 "\n -f Force any waiting job to be printed" \2163 "\n -s Short display" \2164 2165 #define lpr_trivial_usage \2166 "-P queue[@host[:port]] -U USERNAME -J TITLE -Vmh [FILE]..."2167 /* -C CLASS exists too, not shown.2168 * CLASS is supposed to be printed on banner page, if one is requested */2169 #define lpr_full_usage "\n\n" \2170 "Options:" \2171 "\n -P lp service to connect to (else uses $PRINTER)"\2172 "\n -m Send mail on completion" \2173 "\n -h Print banner page too" \2174 "\n -V Verbose" \2175 2176 #define ls_trivial_usage \2177 "[-1Aa" IF_FEATURE_LS_TIMESTAMPS("c") "Cd" \2178 IF_FEATURE_LS_TIMESTAMPS("e") IF_FEATURE_LS_FILETYPES("F") "iln" \2179 IF_FEATURE_LS_FILETYPES("p") IF_FEATURE_LS_FOLLOWLINKS("L") \2180 IF_FEATURE_LS_RECURSIVE("R") IF_FEATURE_LS_SORTFILES("rS") "s" \2181 IF_FEATURE_AUTOWIDTH("T") IF_FEATURE_LS_TIMESTAMPS("tu") \2182 IF_FEATURE_LS_SORTFILES("v") IF_FEATURE_AUTOWIDTH("w") "x" \2183 IF_FEATURE_LS_SORTFILES("X") IF_FEATURE_HUMAN_READABLE("h") "k" \2184 IF_SELINUX("K") "] [FILE]..."2185 #define ls_full_usage "\n\n" \2186 "List directory contents\n" \2187 "\nOptions:" \2188 "\n -1 List in a single column" \2189 "\n -A Don't list . and .." \2190 "\n -a Don't hide entries starting with ." \2191 "\n -C List by columns" \2192 IF_FEATURE_LS_TIMESTAMPS( \2193 "\n -c With -l: sort by ctime") \2194 IF_FEATURE_LS_COLOR( \2195 "\n --color[={always,never,auto}] Control coloring") \2196 "\n -d List directory entries instead of contents" \2197 IF_FEATURE_LS_TIMESTAMPS( \2198 "\n -e List full date and time") \2199 IF_FEATURE_LS_FILETYPES( \2200 "\n -F Append indicator (one of */=@|) to entries") \2201 "\n -i List inode numbers" \2202 "\n -l Long listing format" \2203 "\n -n List numeric UIDs and GIDs instead of names" \2204 IF_FEATURE_LS_FILETYPES( \2205 "\n -p Append indicator (one of /=@|) to entries") \2206 IF_FEATURE_LS_FOLLOWLINKS( \2207 "\n -L List entries pointed to by symlinks") \2208 IF_FEATURE_LS_RECURSIVE( \2209 "\n -R Recurse") \2210 IF_FEATURE_LS_SORTFILES( \2211 "\n -r Sort in reverse order") \2212 IF_FEATURE_LS_SORTFILES( \2213 "\n -S Sort by file size") \2214 "\n -s List the size of each file, in blocks" \2215 IF_FEATURE_AUTOWIDTH( \2216 "\n -T N Assume tabstop every N columns") \2217 IF_FEATURE_LS_TIMESTAMPS( \2218 "\n -t With -l: sort by modification time") \2219 IF_FEATURE_LS_TIMESTAMPS( \2220 "\n -u With -l: sort by access time") \2221 IF_FEATURE_LS_SORTFILES( \2222 "\n -v Sort by version") \2223 IF_FEATURE_AUTOWIDTH( \2224 "\n -w N Assume the terminal is N columns wide") \2225 "\n -x List by lines" \2226 IF_FEATURE_LS_SORTFILES( \2227 "\n -X Sort by extension") \2228 IF_FEATURE_HUMAN_READABLE( \2229 "\n -h List sizes in human readable format (1K 243M 2G)") \2230 IF_SELINUX( \2231 "\n -k List security context") \2232 IF_SELINUX( \2233 "\n -K List security context in long format") \2234 IF_SELINUX( \2235 "\n -Z List security context and permission") \2236 2237 #define lsattr_trivial_usage \2238 "[-Radlv] [FILE]..."2239 #define lsattr_full_usage "\n\n" \2240 "List file attributes on an ext2 fs\n" \2241 "\nOptions:" \2242 "\n -R Recurse" \2243 "\n -a Don't hide entries starting with ." \2244 "\n -d List directory entries instead of contents" \2245 "\n -l List long flag names" \2246 "\n -v List the file's version/generation number" \2247 2248 #define lspci_trivial_usage \2249 "[-mk]"2250 #define lspci_full_usage "\n\n" \2251 "List all PCI devices" \2252 "\n" \2253 "\n -m Parseable output" \2254 "\n -k Show driver" \2255 2256 #define lsusb_trivial_usage NOUSAGE_STR2257 #define lsusb_full_usage ""2258 2259 #if ENABLE_FEATURE_MAKEDEVS_LEAF2260 #define makedevs_trivial_usage \2261 "NAME TYPE MAJOR MINOR FIRST LAST [s]"2262 #define makedevs_full_usage "\n\n" \2263 "Create a range of block or character special files" \2264 "\n" \2265 "\nTYPE is:" \2266 "\n b Block device" \2267 "\n c Character device" \2268 "\n f FIFO, MAJOR and MINOR are ignored" \2269 "\n" \2270 "\nFIRST..LAST specify numbers appended to NAME." \2271 "\nIf 's' is the last argument, the base device is created as well." \2272 "\n" \2273 "\nExamples:" \2274 "\n makedevs /dev/ttyS c 4 66 2 63 -> ttyS2-ttyS63" \2275 "\n makedevs /dev/hda b 3 0 0 8 s -> hda,hda1-hda8"2276 #define makedevs_example_usage \2277 "# makedevs /dev/ttyS c 4 66 2 63\n" \2278 "[creates ttyS2-ttyS63]\n" \2279 "# makedevs /dev/hda b 3 0 0 8 s\n" \2280 "[creates hda,hda1-hda8]\n"2281 #endif2282 2283 #if ENABLE_FEATURE_MAKEDEVS_TABLE2284 #define makedevs_trivial_usage \2285 "[-d device_table] rootdir"2286 #define makedevs_full_usage "\n\n" \2287 "Create a range of special files as specified in a device table.\n" \2288 "Device table entries take the form of:\n" \2289 "<type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count>\n" \2290 "Where name is the file name, type can be one of:\n" \2291 " f Regular file\n" \2292 " d Directory\n" \2293 " c Character device\n" \2294 " b Block device\n" \2295 " p Fifo (named pipe)\n" \2296 "uid is the user id for the target file, gid is the group id for the\n" \2297 "target file. The rest of the entries (major, minor, etc) apply to\n" \2298 "to device special files. A '-' may be used for blank entries."2299 #define makedevs_example_usage \2300 "For example:\n" \2301 "<name> <type> <mode><uid><gid><major><minor><start><inc><count>\n" \2302 "/dev d 755 0 0 - - - - -\n" \2303 "/dev/console c 666 0 0 5 1 - - -\n" \2304 "/dev/null c 666 0 0 1 3 0 0 -\n" \2305 "/dev/zero c 666 0 0 1 5 0 0 -\n" \2306 "/dev/hda b 640 0 0 3 0 0 0 -\n" \2307 "/dev/hda b 640 0 0 3 1 1 1 15\n\n" \2308 "Will Produce:\n" \2309 "/dev\n" \2310 "/dev/console\n" \2311 "/dev/null\n" \2312 "/dev/zero\n" \2313 "/dev/hda\n" \2314 "/dev/hda[0-15]\n"2315 #endif2316 2317 #define makemime_trivial_usage \2318 "[OPTIONS] [FILE]..."2319 #define makemime_full_usage "\n\n" \2320 "Create multipart MIME-encoded message from FILEs\n" \2321 /* "Transfer encoding is base64, disposition is inline (not attachment)\n" */ \2322 "\nOptions:" \2323 "\n -o FILE Output. Default: stdout" \2324 "\n -a HDR Add header. Examples:" \2325 "\n \"From: user@host.org\", \"Date: `date -R`\"" \2326 "\n -c CT Content type. Default: text/plain" \2327 "\n -C CS Charset. Default: " CONFIG_FEATURE_MIME_CHARSET \2328 /* "\n -e ENC Transfer encoding. Ignored. base64 is assumed" */ \2329 "\n" \2330 "\nOther options are silently ignored" \2331 2332 #define man_trivial_usage \2333 "[-aw] [MANPAGE]..."2334 #define man_full_usage "\n\n" \2335 "Format and display manual page\n" \2336 "\nOptions:" \2337 "\n -a Display all pages" \2338 "\n -w Show page locations" \2339 2340 #define matchpathcon_trivial_usage \2341 "[-n] [-N] [-f file_contexts_file] [-p prefix] [-V]"2342 #define matchpathcon_full_usage "\n\n" \2343 " -n Don't display path" \2344 "\n -N Don't use translations" \2345 "\n -f Use alternate file_context file" \2346 "\n -p Use prefix to speed translations" \2347 "\n -V Verify file context on disk matches defaults" \2348 2349 #define md5sum_trivial_usage \2350 "[FILE]..." \2351 IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: md5sum -c [-sw] [FILE]")2352 #define md5sum_full_usage "\n\n" \2353 "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums" \2354 IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \2355 "\nOptions:" \2356 "\n -c Check sums against given list" \2357 "\n -s Don't output anything, status code shows success" \2358 "\n -w Warn about improperly formatted checksum lines" \2359 )2360 2361 #define md5sum_example_usage \2362 "$ md5sum < busybox\n" \2363 "6fd11e98b98a58f64ff3398d7b324003\n" \2364 "$ md5sum busybox\n" \2365 "6fd11e98b98a58f64ff3398d7b324003 busybox\n" \2366 "$ md5sum -c -\n" \2367 "6fd11e98b98a58f64ff3398d7b324003 busybox\n" \2368 "busybox: OK\n" \2369 "^D\n"2370 2371 #define sha1sum_trivial_usage \2372 "[FILE]..." \2373 IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: sha1sum -c [-sw] [FILE]")2374 #define sha1sum_full_usage "\n\n" \2375 "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums" \2376 IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \2377 "\nOptions:" \2378 "\n -c Check sums against given list" \2379 "\n -s Don't output anything, status code shows success" \2380 "\n -w Warn about improperly formatted checksum lines" \2381 )2382 2383 #define sha256sum_trivial_usage \2384 "[FILE]..." \2385 IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: sha256sum -c [-sw] [FILE]")2386 #define sha256sum_full_usage "\n\n" \2387 "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA256 checksums" \2388 IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \2389 "\nOptions:" \2390 "\n -c Check sums against given list" \2391 "\n -s Don't output anything, status code shows success" \2392 "\n -w Warn about improperly formatted checksum lines" \2393 )2394 2395 #define sha512sum_trivial_usage \2396 "[FILE]..." \2397 IF_FEATURE_MD5_SHA1_SUM_CHECK("\n or: sha512sum -c [-sw] [FILE]")2398 #define sha512sum_full_usage "\n\n" \2399 "Print" IF_FEATURE_MD5_SHA1_SUM_CHECK(" or check") " SHA512 checksums" \2400 IF_FEATURE_MD5_SHA1_SUM_CHECK( "\n" \2401 "\nOptions:" \2402 "\n -c Check sums against given list" \2403 "\n -s Don't output anything, status code shows success" \2404 "\n -w Warn about improperly formatted checksum lines" \2405 )2406 2407 #define mdev_trivial_usage \2408 "[-s]"2409 #define mdev_full_usage "\n\n" \2410 " -s Scan /sys and populate /dev during system boot\n" \2411 "\n" \2412 "It can be run by kernel as a hotplug helper. To activate it:\n" \2413 " echo /sbin/mdev > /proc/sys/kernel/hotplug\n" \2414 IF_FEATURE_MDEV_CONF( \2415 "It uses /etc/mdev.conf with lines\n" \2416 "[-]DEVNAME UID:GID PERM" \2417 IF_FEATURE_MDEV_RENAME(" [>|=PATH]") \2418 IF_FEATURE_MDEV_EXEC(" [@|$|*PROG]") \2419 ) \2420 2421 #define mdev_notes_usage "" \2422 IF_FEATURE_MDEV_CONFIG( \2423 "The mdev config file contains lines that look like:\n" \2424 " hd[a-z][0-9]* 0:3 660\n\n" \2425 "That's device name (with regex match), uid:gid, and permissions.\n\n" \2426 IF_FEATURE_MDEV_EXEC( \2427 "Optionally, that can be followed (on the same line) by a special character\n" \2428 "and a command line to run after creating/before deleting the corresponding\n" \2429 "device(s). The environment variable $MDEV indicates the active device node\n" \2430 "(which is useful if it's a regex match). For example:\n\n" \2431 " hdc root:cdrom 660 *ln -s $MDEV cdrom\n\n" \2432 "The special characters are @ (run after creating), $ (run before deleting),\n" \2433 "and * (run both after creating and before deleting). The commands run in\n" \2434 "the /dev directory, and use system() which calls /bin/sh.\n\n" \2435 ) \2436 "Config file parsing stops on the first matching line. If no config\n" \2437 "entry is matched, devices are created with default 0:0 660. (Make\n" \2438 "the last line match .* to override this.)\n\n" \2439 )2440 2441 #define microcom_trivial_usage \2442 "[-d DELAY] [-t TIMEOUT] [-s SPEED] [-X] TTY"2443 #define microcom_full_usage "\n\n" \2444 "Copy bytes for stdin to TTY and from TTY to stdout\n" \2445 "\nOptions:" \2446 "\n -d Wait up to DELAY ms for TTY output before sending every" \2447 "\n next byte to it" \2448 "\n -t Exit if both stdin and TTY are silent for TIMEOUT ms" \2449 "\n -s Set serial line to SPEED" \2450 "\n -X Disable special meaning of NUL and Ctrl-X from stdin" \2451 2452 #define mkdir_trivial_usage \2453 "[OPTIONS] DIRECTORY..."2454 #define mkdir_full_usage "\n\n" \2455 "Create DIRECTORY\n" \2456 "\nOptions:" \2457 "\n -m MODE Mode" \2458 "\n -p No error if exists; make parent directories as needed" \2459 IF_SELINUX( \2460 "\n -Z Set security context" \2461 )2462 2463 #define mkdir_example_usage \2464 "$ mkdir /tmp/foo\n" \2465 "$ mkdir /tmp/foo\n" \2466 "/tmp/foo: File exists\n" \2467 "$ mkdir /tmp/foo/bar/baz\n" \2468 "/tmp/foo/bar/baz: No such file or directory\n" \2469 "$ mkdir -p /tmp/foo/bar/baz\n"2470 2471 #define mkfifo_trivial_usage \2472 "[-m MODE] " IF_SELINUX("[-Z] ") "NAME"2473 #define mkfifo_full_usage "\n\n" \2474 "Create named pipe\n" \2475 "\nOptions:" \2476 "\n -m MODE Mode (default a=rw)" \2477 IF_SELINUX( \2478 "\n -Z Set security context" \2479 )2480 2481 #define mkfs_ext2_trivial_usage \2482 "[-Fn] " \2483 /* "[-c|-l filename] " */ \2484 "[-b BLK_SIZE] " \2485 /* "[-f fragment-size] [-g blocks-per-group] " */ \2486 "[-i INODE_RATIO] [-I INODE_SIZE] " \2487 /* "[-j] [-J journal-options] [-N number-of-inodes] " */ \2488 "[-m RESERVED_PERCENT] " \2489 /* "[-o creator-os] [-O feature[,...]] [-q] " */ \2490 /* "[r fs-revision-level] [-E extended-options] [-v] [-F] " */ \2491 "[-L LABEL] " \2492 /* "[-M last-mounted-directory] [-S] [-T filesystem-type] " */ \2493 "BLOCKDEV [KBYTES]"2494 #define mkfs_ext2_full_usage "\n\n" \2495 " -b BLK_SIZE Block size, bytes" \2496 /* "\n -c Check device for bad blocks" */ \2497 /* "\n -E opts Set extended options" */ \2498 /* "\n -f size Fragment size in bytes" */ \2499 "\n -F Force" \2500 /* "\n -g N Number of blocks in a block group" */ \2501 "\n -i RATIO Max number of files is filesystem_size / RATIO" \2502 "\n -I BYTES Inode size (min 128)" \2503 /* "\n -j Create a journal (ext3)" */ \2504 /* "\n -J opts Set journal options (size/device)" */ \2505 /* "\n -l file Read bad blocks list from file" */ \2506 "\n -L LBL Volume label" \2507 "\n -m PERCENT Percent of blocks to reserve for admin" \2508 /* "\n -M dir Set last mounted directory" */ \2509 "\n -n Dry run" \2510 /* "\n -N N Number of inodes to create" */ \2511 /* "\n -o os Set the 'creator os' field" */ \2512 /* "\n -O features Dir_index/filetype/has_journal/journal_dev/sparse_super" */ \2513 /* "\n -q Quiet" */ \2514 /* "\n -r rev Set filesystem revision" */ \2515 /* "\n -S Write superblock and group descriptors only" */ \2516 /* "\n -T fs-type Set usage type (news/largefile/largefile4)" */ \2517 /* "\n -v Verbose" */ \2518 2519 #define mkfs_minix_trivial_usage \2520 "[-c | -l FILE] [-nXX] [-iXX] BLOCKDEV [KBYTES]"2521 #define mkfs_minix_full_usage "\n\n" \2522 "Make a MINIX filesystem\n" \2523 "\nOptions:" \2524 "\n -c Check device for bad blocks" \2525 "\n -n [14|30] Maximum length of filenames" \2526 "\n -i INODES Number of inodes for the filesystem" \2527 "\n -l FILE Read bad blocks list from FILE" \2528 "\n -v Make version 2 filesystem" \2529 2530 #define mkfs_reiser_trivial_usage \2531 "[-f] [-l LABEL] BLOCKDEV [4K-BLOCKS]"2532 2533 #define mkfs_reiser_full_usage "\n\n" \2534 "Make a ReiserFS V3 filesystem\n" \2535 "\nOptions:" \2536 "\n -f Force" \2537 "\n -l LBL Volume label" \2538 2539 #define mkfs_vfat_trivial_usage \2540 "[-v] [-n LABEL] BLOCKDEV [KBYTES]"2541 /* Accepted but ignored:2542 "[-c] [-C] [-I] [-l bad-block-file] [-b backup-boot-sector] "2543 "[-m boot-msg-file] [-i volume-id] "2544 "[-s sectors-per-cluster] [-S logical-sector-size] [-f number-of-FATs] "2545 "[-h hidden-sectors] [-F fat-size] [-r root-dir-entries] [-R reserved-sectors] "2546 */2547 #define mkfs_vfat_full_usage "\n\n" \2548 "Make a FAT32 filesystem\n" \2549 "\nOptions:" \2550 /* "\n -c Check device for bad blocks" */ \2551 "\n -v Verbose" \2552 /* "\n -I Allow to use entire disk device (e.g. /dev/hda)" */ \2553 "\n -n LBL Volume label" \2554 2555 #define mknod_trivial_usage \2556 "[-m MODE] " IF_SELINUX("[-Z] ") "NAME TYPE MAJOR MINOR"2557 #define mknod_full_usage "\n\n" \2558 "Create a special file (block, character, or pipe)\n" \2559 "\nOptions:" \2560 "\n -m MODE Creation mode (default a=rw)" \2561 IF_SELINUX( \2562 "\n -Z Set security context" \2563 ) \2564 "\nTYPE:" \2565 "\n b Block device" \2566 "\n c or u Character device" \2567 "\n p Named pipe (MAJOR and MINOR are ignored)" \2568 2569 #define mknod_example_usage \2570 "$ mknod /dev/fd0 b 2 0\n" \2571 "$ mknod -m 644 /tmp/pipe p\n"2572 2573 #define mkswap_trivial_usage \2574 "[-L LBL] BLOCKDEV [KBYTES]"2575 #define mkswap_full_usage "\n\n" \2576 "Prepare BLOCKDEV to be used as swap partition\n" \2577 "\nOptions:" \2578 "\n -L LBL Label" \2579 2580 #define mktemp_trivial_usage \2581 "[-dt] [-p DIR] [TEMPLATE]"2582 #define mktemp_full_usage "\n\n" \2583 "Create a temporary file with name based on TEMPLATE and print its name.\n" \2584 "TEMPLATE must end with XXXXXX (e.g. [/dir/]nameXXXXXX).\n" \2585 "\nOptions:" \2586 "\n -d Make a directory instead of a file" \2587 /* "\n -q Fail silently if an error occurs" - we ignore it */ \2588 "\n -t Generate a path rooted in temporary directory" \2589 "\n -p DIR Use DIR as a temporary directory (implies -t)" \2590 "\n" \2591 "\nFor -t or -p, directory is chosen as follows:" \2592 "\n$TMPDIR if set, else -p DIR, else /tmp" \2593 2594 #define mktemp_example_usage \2595 "$ mktemp /tmp/temp.XXXXXX\n" \2596 "/tmp/temp.mWiLjM\n" \2597 "$ ls -la /tmp/temp.mWiLjM\n" \2598 "-rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM\n"2599 2600 #define more_trivial_usage \2601 "[FILE]..."2602 #define more_full_usage "\n\n" \2603 "View FILE (or stdin) one screenful at a time"2604 2605 #define more_example_usage \2606 "$ dmesg | more\n"2607 2608 #define mount_trivial_usage \2609 "[OPTIONS] [-o OPTS] DEVICE NODE"2610 #define mount_full_usage "\n\n" \2611 "Mount a filesystem. Filesystem autodetection requires /proc.\n" \2612 "\nOptions:" \2613 "\n -a Mount all filesystems in fstab" \2614 IF_FEATURE_MOUNT_FAKE( \2615 IF_FEATURE_MTAB_SUPPORT( \2616 "\n -f Update /etc/mtab, but don't mount" \2617 ) \2618 IF_NOT_FEATURE_MTAB_SUPPORT( \2619 "\n -f Dry run" \2620 ) \2621 ) \2622 IF_FEATURE_MOUNT_HELPERS( \2623 "\n -i Don't run mount helper" \2624 ) \2625 IF_FEATURE_MTAB_SUPPORT( \2626 "\n -n Don't update /etc/mtab" \2627 ) \2628 "\n -r Read-only mount" \2629 "\n -w Read-write mount (default)" \2630 "\n -t FSTYPE Filesystem type" \2631 "\n -O OPT Mount only filesystems with option OPT (-a only)" \2632 "\n-o OPT:" \2633 IF_FEATURE_MOUNT_LOOP( \2634 "\n loop Ignored (loop devices are autodetected)" \2635 ) \2636 IF_FEATURE_MOUNT_FLAGS( \2637 "\n [a]sync Writes are [a]synchronous" \2638 "\n [no]atime Disable/enable updates to inode access times" \2639 "\n [no]diratime Disable/enable atime updates to directories" \2640 "\n [no]relatime Disable/enable atime updates relative to modification time" \2641 "\n [no]dev (Dis)allow use of special device files" \2642 "\n [no]exec (Dis)allow use of executable files" \2643 "\n [no]suid (Dis)allow set-user-id-root programs" \2644 "\n [r]shared Convert [recursively] to a shared subtree" \2645 "\n [r]slave Convert [recursively] to a slave subtree" \2646 "\n [r]private Convert [recursively] to a private subtree" \2647 "\n [un]bindable Make mount point [un]able to be bind mounted" \2648 "\n bind Bind a file or directory to another location" \2649 "\n move Relocate an existing mount point" \2650 ) \2651 "\n remount Remount a mounted filesystem, changing flags" \2652 "\n ro/rw Same as -r/-w" \2653 "\n" \2654 "\nThere are filesystem-specific -o flags." \2655 2656 #define mount_example_usage \2657 "$ mount\n" \2658 "/dev/hda3 on / type minix (rw)\n" \2659 "proc on /proc type proc (rw)\n" \2660 "devpts on /dev/pts type devpts (rw)\n" \2661 "$ mount /dev/fd0 /mnt -t msdos -o ro\n" \2662 "$ mount /tmp/diskimage /opt -t ext2 -o loop\n" \2663 "$ mount cd_image.iso mydir\n"2664 #define mount_notes_usage \2665 "Returns 0 for success, number of failed mounts for -a, or errno for one mount."2666 2667 #define mountpoint_trivial_usage \2668 "[-q] <[-dn] DIR | -x DEVICE>"2669 #define mountpoint_full_usage "\n\n" \2670 "Check if the directory is a mountpoint\n" \2671 "\nOptions:" \2672 "\n -q Quiet" \2673 "\n -d Print major/minor device number of the filesystem" \2674 "\n -n Print device name of the filesystem" \2675 "\n -x Print major/minor device number of the blockdevice" \2676 2677 #define mountpoint_example_usage \2678 "$ mountpoint /proc\n" \2679 "/proc is not a mountpoint\n" \2680 "$ mountpoint /sys\n" \2681 "/sys is a mountpoint\n"2682 2683 #define mt_trivial_usage \2684 "[-f device] opcode value"2685 #define mt_full_usage "\n\n" \2686 "Control magnetic tape drive operation\n" \2687 "\n" \2688 "Available Opcodes:\n" \2689 "\n" \2690 "bsf bsfm bsr bss datacompression drvbuffer eof eom erase\n" \2691 "fsf fsfm fsr fss load lock mkpart nop offline ras1 ras2\n" \2692 "ras3 reset retension rewind rewoffline seek setblk setdensity\n" \2693 "setpart tell unload unlock weof wset" \2694 2695 #define nameif_trivial_usage \2696 "[-s] [-c FILE] [{IFNAME MACADDR}]"2697 #define nameif_full_usage "\n\n" \2698 "Rename network interface while it in the down state\n" \2699 "\nOptions:" \2700 "\n -c FILE Use configuration file (default: /etc/mactab)" \2701 "\n -s Use syslog (LOCAL0 facility)" \2702 "\n IFNAME MACADDR new_interface_name interface_mac_address" \2703 2704 #define nameif_example_usage \2705 "$ nameif -s dmz0 00:A0:C9:8C:F6:3F\n" \2706 " or\n" \2707 "$ nameif -c /etc/my_mactab_file\n" \2708 2709 #define nmeter_trivial_usage \2710 "format_string"2711 #define nmeter_full_usage "\n\n" \2712 "Monitor system in real time\n\n" \2713 "Format specifiers:\n" \2714 " %Nc or %[cN] Monitor CPU. N - bar size, default 10\n" \2715 " (displays: S:system U:user N:niced D:iowait I:irq i:softirq)\n" \2716 " %[niface] Monitor network interface 'iface'\n" \2717 " %m Monitor allocated memory\n" \2718 " %[mf] Monitor free memory\n" \2719 " %[mt] Monitor total memory\n" \2720 " %s Monitor allocated swap\n" \2721 " %f Monitor number of used file descriptors\n" \2722 " %Ni Monitor total/specific IRQ rate\n" \2723 " %x Monitor context switch rate\n" \2724 " %p Monitor forks\n" \2725 " %[pn] Monitor # of processes\n" \2726 " %b Monitor block io\n" \2727 " %Nt Show time (with N decimal points)\n" \2728 " %Nd Milliseconds between updates (default:1000)\n" \2729 " %r Print <cr> instead of <lf> at EOL" \2730 2731 #define nmeter_example_usage \2732 "nmeter '%250d%t %20c int %i bio %b mem %m forks%p'"2733 2734 #define nohup_trivial_usage \2735 "PROG ARGS"2736 #define nohup_full_usage "\n\n" \2737 "Run PROG immune to hangups, with output to a non-tty"2738 #define nohup_example_usage \2739 "$ nohup make &"2740 2741 #define nslookup_trivial_usage \2742 "[HOST] [SERVER]"2743 #define nslookup_full_usage "\n\n" \2744 "Query the nameserver for the IP address of the given HOST\n" \2745 "optionally using a specified DNS server"2746 #define nslookup_example_usage \2747 "$ nslookup localhost\n" \2748 "Server: default\n" \2749 "Address: default\n" \2750 "\n" \2751 "Name: debian\n" \2752 "Address: 127.0.0.1\n"2753 2754 #define ntpd_trivial_usage \2755 "[-dnqNw"IF_FEATURE_NTPD_SERVER("l")"] [-S PROG] [-p PEER]..."2756 #define ntpd_full_usage "\n\n" \2757 "NTP client/server\n" \2758 "\nOptions:" \2759 "\n -d Verbose" \2760 "\n -n Do not daemonize" \2761 "\n -q Quit after clock is set" \2762 "\n -N Run at high priority" \2763 "\n -w Do not set time (only query peers), implies -n" \2764 IF_FEATURE_NTPD_SERVER( \2765 "\n -l Run as server on port 123" \2766 ) \2767 "\n -S PROG Run PROG after stepping time, stratum change, and every 11 mins" \2768 "\n -p PEER Obtain time from PEER (may be repeated)" \2769 2770 #define od_trivial_usage \2771 "[-aBbcDdeFfHhIiLlOovXx] " IF_DESKTOP("[-t TYPE] ") "[FILE]"2772 #define od_full_usage "\n\n" \2773 "Write an unambiguous representation, octal bytes by default, of FILE\n" \2774 "(or stdin) to stdout"2775 2776 #define openvt_trivial_usage \2777 "[-c N] [-sw] [PROG ARGS]"2778 #define openvt_full_usage "\n\n" \2779 "Start PROG on a new virtual terminal\n" \2780 "\nOptions:" \2781 "\n -c N Use specified VT" \2782 "\n -s Switch to the VT" \2783 /* "\n -l Run PROG as login shell (by prepending '-')" */ \2784 "\n -w Wait for PROG to exit" \2785 2786 #define openvt_example_usage \2787 "openvt 2 /bin/ash\n"2788 2789 /*2790 #define parse_trivial_usage \2791 "[-n MAXTOKENS] [-m MINTOKENS] [-d DELIMS] [-f FLAGS] FILE..."2792 #define parse_full_usage ""2793 */2794 2795 #define passwd_trivial_usage \2796 "[OPTIONS] [USER]"2797 #define passwd_full_usage "\n\n" \2798 "Change USER's password. If no USER is specified,\n" \2799 "changes the password for the current user.\n" \2800 "\nOptions:" \2801 "\n -a ALG Algorithm to use for password (des, md5)" /* ", sha1)" */ \2802 "\n -d Delete password for the account" \2803 "\n -l Lock (disable) account" \2804 "\n -u Unlock (re-enable) account" \2805 2806 #define chpasswd_trivial_usage \2807 IF_LONG_OPTS("[--md5|--encrypted]") IF_NOT_LONG_OPTS("[-m|-e]")2808 #define chpasswd_full_usage "\n\n" \2809 "Read user:password from stdin and update /etc/passwd\n" \2810 "\nOptions:" \2811 IF_LONG_OPTS( \2812 "\n -e,--encrypted Supplied passwords are in encrypted form" \2813 "\n -m,--md5 Use MD5 encryption instead of DES" \2814 ) \2815 IF_NOT_LONG_OPTS( \2816 "\n -e Supplied passwords are in encrypted form" \2817 "\n -m Use MD5 encryption instead of DES" \2818 )2819 2820 #define pgrep_trivial_usage \2821 "[-flnovx] [-s SID|-P PPID|PATTERN]"2822 #define pgrep_full_usage "\n\n" \2823 "Display process(es) selected by regex PATTERN\n" \2824 "\nOptions:" \2825 "\n -l Show command name too" \2826 "\n -f Match against entire command line" \2827 "\n -n Show the newest process only" \2828 "\n -o Show the oldest process only" \2829 "\n -v Negate the match" \2830 "\n -x Match whole name (not substring)" \2831 "\n -s Match session ID (0 for current)" \2832 "\n -P Match parent process ID" \2833 2834 #if (ENABLE_FEATURE_PIDOF_SINGLE || ENABLE_FEATURE_PIDOF_OMIT)2835 #define pidof_trivial_usage \2836 "[OPTIONS] [NAME]..."2837 #define USAGE_PIDOF "\n\nOptions:"2838 #else2839 #define pidof_trivial_usage \2840 "[NAME]..."2841 #define USAGE_PIDOF /* none */2842 #endif2843 #define pidof_full_usage "\n\n" \2844 "List PIDs of all processes with names that match NAMEs" \2845 USAGE_PIDOF \2846 IF_FEATURE_PIDOF_SINGLE( \2847 "\n -s Show only one PID" \2848 ) \2849 IF_FEATURE_PIDOF_OMIT( \2850 "\n -o PID Omit given pid" \2851 "\n Use %PPID to omit pid of pidof's parent" \2852 ) \2853 2854 #define pidof_example_usage \2855 "$ pidof init\n" \2856 "1\n" \2857 IF_FEATURE_PIDOF_OMIT( \2858 "$ pidof /bin/sh\n20351 5973 5950\n") \2859 IF_FEATURE_PIDOF_OMIT( \2860 "$ pidof /bin/sh -o %PPID\n20351 5950")2861 2862 #if !ENABLE_FEATURE_FANCY_PING2863 #define ping_trivial_usage \2864 "host"2865 #define ping_full_usage "\n\n" \2866 "Send ICMP ECHO_REQUEST packets to network hosts"2867 #define ping6_trivial_usage \2868 "host"2869 #define ping6_full_usage "\n\n" \2870 "Send ICMP ECHO_REQUEST packets to network hosts"2871 #else2872 #define ping_trivial_usage \2873 "[OPTIONS] HOST"2874 #define ping_full_usage "\n\n" \2875 "Send ICMP ECHO_REQUEST packets to network hosts\n" \2876 "\nOptions:" \2877 "\n -4,-6 Force IP or IPv6 name resolution" \2878 "\n -c CNT Send only CNT pings" \2879 "\n -s SIZE Send SIZE data bytes in packets (default:56)" \2880 "\n -I IFACE/IP Use interface or IP address as source" \2881 "\n -W SEC Seconds to wait for the first response (default:10)" \2882 "\n (after all -c CNT packets are sent)" \2883 "\n -w SEC Seconds until ping exits (default:infinite)" \2884 "\n (can exit earlier with -c CNT)" \2885 "\n -q Quiet, only displays output at start" \2886 "\n and when finished" \2887 2888 #define ping6_trivial_usage \2889 "[OPTIONS] HOST"2890 #define ping6_full_usage "\n\n" \2891 "Send ICMP ECHO_REQUEST packets to network hosts\n" \2892 "\nOptions:" \2893 "\n -c CNT Send only CNT pings" \2894 "\n -s SIZE Send SIZE data bytes in packets (default:56)" \2895 "\n -I IFACE/IP Use interface or IP address as source" \2896 "\n -q Quiet, only displays output at start" \2897 "\n and when finished" \2898 2899 #endif2900 #define ping_example_usage \2901 "$ ping localhost\n" \2902 "PING slag (127.0.0.1): 56 data bytes\n" \2903 "64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms\n" \2904 "\n" \2905 "--- debian ping statistics ---\n" \2906 "1 packets transmitted, 1 packets received, 0% packet loss\n" \2907 "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"2908 #define ping6_example_usage \2909 "$ ping6 ip6-localhost\n" \2910 "PING ip6-localhost (::1): 56 data bytes\n" \2911 "64 bytes from ::1: icmp6_seq=0 ttl=64 time=20.1 ms\n" \2912 "\n" \2913 "--- ip6-localhost ping statistics ---\n" \2914 "1 packets transmitted, 1 packets received, 0% packet loss\n" \2915 "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"2916 2917 #define pipe_progress_trivial_usage NOUSAGE_STR2918 #define pipe_progress_full_usage ""2919 2920 #define pivot_root_trivial_usage \2921 "NEW_ROOT PUT_OLD"2922 #define pivot_root_full_usage "\n\n" \2923 "Move the current root file system to PUT_OLD and make NEW_ROOT\n" \2924 "the new root file system"2925 2926 #define pkill_trivial_usage \2927 "[-l|-SIGNAL] [-fnovx] [-s SID|-P PPID|PATTERN]"2928 #define pkill_full_usage "\n\n" \2929 "Send a signal to process(es) selected by regex PATTERN\n" \2930 "\nOptions:" \2931 "\n -l List all signals" \2932 "\n -f Match against entire command line" \2933 "\n -n Signal the newest process only" \2934 "\n -o Signal the oldest process only" \2935 "\n -v Negate the match" \2936 "\n -x Match whole name (not substring)" \2937 "\n -s Match session ID (0 for current)" \2938 "\n -P Match parent process ID" \2939 2940 #define popmaildir_trivial_usage \2941 "[OPTIONS] MAILDIR [CONN_HELPER ARGS]"2942 #define popmaildir_full_usage "\n\n" \2943 "Fetch content of remote mailbox to local maildir\n" \2944 "\nOptions:" \2945 /* "\n -b Binary mode. Ignored" */ \2946 /* "\n -d Debug. Ignored" */ \2947 /* "\n -m Show used memory. Ignored" */ \2948 /* "\n -V Show version. Ignored" */ \2949 /* "\n -c Use tcpclient. Ignored" */ \2950 /* "\n -a Use APOP protocol. Implied. If server supports APOP -> use it" */ \2951 "\n -s Skip authorization" \2952 "\n -T Get messages with TOP instead of RETR" \2953 "\n -k Keep retrieved messages on the server" \2954 "\n -t SEC Network timeout" \2955 IF_FEATURE_POPMAILDIR_DELIVERY( \2956 "\n -F \"PROG ARGS\" Filter program (may be repeated)" \2957 "\n -M \"PROG ARGS\" Delivery program" \2958 ) \2959 "\n" \2960 "\nFetch from plain POP3 server:" \2961 "\npopmaildir -k DIR nc pop3.server.com 110 <user_and_pass.txt" \2962 "\nFetch from SSLed POP3 server and delete fetched emails:" \2963 "\npopmaildir DIR -- openssl s_client -quiet -connect pop3.server.com:995 <user_and_pass.txt"2964 /* "\n -R BYTES Remove old messages on the server >= BYTES. Ignored" */2965 /* "\n -Z N1-N2 Remove messages from N1 to N2 (dangerous). Ignored" */2966 /* "\n -L BYTES Don't retrieve new messages >= BYTES. Ignored" */2967 /* "\n -H LINES Type first LINES of a message. Ignored" */2968 #define popmaildir_example_usage \2969 "$ popmaildir -k ~/Maildir -- nc pop.drvv.ru 110 [<password_file]\n" \2970 "$ popmaildir ~/Maildir -- openssl s_client -quiet -connect pop.gmail.com:995 [<password_file]\n"2971 2972 #define printenv_trivial_usage \2973 "[VARIABLE]..."2974 #define printenv_full_usage "\n\n" \2975 "Print environment VARIABLEs.\n" \2976 "If no VARIABLE specified, print all."2977 2978 #define printf_trivial_usage \2979 "FORMAT [ARGUMENT]..."2980 #define printf_full_usage "\n\n" \2981 "Format and print ARGUMENT(s) according to FORMAT,\n" \2982 "where FORMAT controls the output exactly as in C printf"2983 #define printf_example_usage \2984 "$ printf \"Val=%d\\n\" 5\n" \2985 "Val=5\n"2986 2987 2988 #if ENABLE_DESKTOP2989 2990 #define ps_trivial_usage \2991 "[-o COL1,COL2=HEADER]" IF_FEATURE_SHOW_THREADS(" [-T]")2992 #define ps_full_usage "\n\n" \2993 "Show list of processes\n" \2994 "\nOptions:" \2995 "\n -o COL1,COL2=HEADER Select columns for display" \2996 IF_FEATURE_SHOW_THREADS( \2997 "\n -T Show threads" \2998 )2999 3000 #else /* !ENABLE_DESKTOP */3001 3002 #if !ENABLE_SELINUX && !ENABLE_FEATURE_PS_WIDE3003 #define USAGE_PS "\nThis version of ps accepts no options"3004 #else3005 #define USAGE_PS "\nOptions:"3006 #endif3007 3008 #define ps_trivial_usage \3009 ""3010 #define ps_full_usage "\n\n" \3011 "Show list of processes\n" \3012 USAGE_PS \3013 IF_SELINUX( \3014 "\n -Z Show selinux context" \3015 ) \3016 IF_FEATURE_PS_WIDE( \3017 "\n w Wide output" \3018 )3019 3020 #endif /* ENABLE_DESKTOP */3021 3022 #define ps_example_usage \3023 "$ ps\n" \3024 " PID Uid Gid State Command\n" \3025 " 1 root root S init\n" \3026 " 2 root root S [kflushd]\n" \3027 " 3 root root S [kupdate]\n" \3028 " 4 root root S [kpiod]\n" \3029 " 5 root root S [kswapd]\n" \3030 " 742 andersen andersen S [bash]\n" \3031 " 743 andersen andersen S -bash\n" \3032 " 745 root root S [getty]\n" \3033 " 2990 andersen andersen R ps\n" \3034 3035 #define pscan_trivial_usage \3036 "[-cb] [-p MIN_PORT] [-P MAX_PORT] [-t TIMEOUT] [-T MIN_RTT] HOST"3037 #define pscan_full_usage "\n\n" \3038 "Scan a host, print all open ports\n" \3039 "\nOptions:" \3040 "\n -c Show closed ports too" \3041 "\n -b Show blocked ports too" \3042 "\n -p Scan from this port (default 1)" \3043 "\n -P Scan up to this port (default 1024)" \3044 "\n -t Timeout (default 5000 ms)" \3045 "\n -T Minimum rtt (default 5 ms, increase for congested hosts)" \3046 3047 #define pwd_trivial_usage \3048 ""3049 #define pwd_full_usage "\n\n" \3050 "Print the full filename of the current working directory"3051 #define pwd_example_usage \3052 "$ pwd\n" \3053 "/root\n"3054 3055 #define raidautorun_trivial_usage \3056 "DEVICE"3057 #define raidautorun_full_usage "\n\n" \3058 "Tell the kernel to automatically search and start RAID arrays"3059 #define raidautorun_example_usage \3060 "$ raidautorun /dev/md0"3061 3062 #define rdate_trivial_usage \3063 "[-sp] HOST"3064 #define rdate_full_usage "\n\n" \3065 "Get and possibly set the system date and time from a remote HOST\n" \3066 "\nOptions:" \3067 "\n -s Set the system date and time (default)" \3068 "\n -p Print the date and time" \3069 3070 #define rdev_trivial_usage \3071 ""3072 #define rdev_full_usage "\n\n" \3073 "Print the device node associated with the filesystem mounted at '/'"3074 #define rdev_example_usage \3075 "$ rdev\n" \3076 "/dev/mtdblock9 /\n"3077 3078 #define readahead_trivial_usage \3079 "[FILE]..."3080 #define readahead_full_usage "\n\n" \3081 "Preload FILEs to RAM"3082 3083 #define readlink_trivial_usage \3084 IF_FEATURE_READLINK_FOLLOW("[-fnv] ") "FILE"3085 #define readlink_full_usage "\n\n" \3086 "Display the value of a symlink" \3087 IF_FEATURE_READLINK_FOLLOW( "\n" \3088 "\nOptions:" \3089 "\n -f Canonicalize by following all symlinks" \3090 "\n -n Don't add newline" \3091 "\n -v Verbose" \3092 ) \3093 3094 #define readprofile_trivial_usage \3095 "[OPTIONS]"3096 #define readprofile_full_usage "\n\n" \3097 "Options:" \3098 "\n -m mapfile (Default: /boot/System.map)" \3099 "\n -p profile (Default: /proc/profile)" \3100 "\n -M NUM Set the profiling multiplier to NUM" \3101 "\n -i Print only info about the sampling step" \3102 "\n -v Verbose" \3103 "\n -a Print all symbols, even if count is 0" \3104 "\n -b Print individual histogram-bin counts" \3105 "\n -s Print individual counters within functions" \3106 "\n -r Reset all the counters (root only)" \3107 "\n -n Disable byte order auto-detection" \3108 3109 #define realpath_trivial_usage \3110 "FILE..."3111 #define realpath_full_usage "\n\n" \3112 "Return the absolute pathnames of given FILE"3113 3114 #define reformime_trivial_usage \3115 "[OPTIONS] [FILE]..."3116 #define reformime_full_usage "\n\n" \3117 "Parse MIME-encoded message\n" \3118 "\nOptions:" \3119 "\n -x PREFIX Extract content of MIME sections to files" \3120 "\n -X PROG ARGS Filter content of MIME sections through PROG" \3121 "\n Must be the last option" \3122 "\n" \3123 "\nOther options are silently ignored" \3124 3125 #define scriptreplay_trivial_usage \3126 "timingfile [typescript [divisor]]"3127 #define scriptreplay_full_usage "\n\n" \3128 "Play back typescripts, using timing information"3129 3130 #define reset_trivial_usage \3131 ""3132 #define reset_full_usage "\n\n" \3133 "Reset the screen"3134 3135 #define resize_trivial_usage \3136 ""3137 #define resize_full_usage "\n\n" \3138 "Resize the screen"3139 3140 #define restorecon_trivial_usage \3141 "[-iFnRv] [-e EXCLUDEDIR]... [-o FILE] [-f FILE]"3142 #define restorecon_full_usage "\n\n" \3143 "Reset security contexts of files in pathname\n" \3144 "\n -i Ignore files that don't exist" \3145 "\n -f FILE File with list of files to process" \3146 "\n -e DIR Directory to exclude" \3147 "\n -R,-r Recurse" \3148 "\n -n Don't change any file labels" \3149 "\n -o FILE Save list of files with incorrect context" \3150 "\n -v Verbose" \3151 "\n -vv Show changed labels" \3152 "\n -F Force reset of context to match file_context" \3153 "\n for customizable files, or the user section," \3154 "\n if it has changed" \3155 3156 #define rfkill_trivial_usage \3157 "COMMAND [INDEX|TYPE]"3158 #define rfkill_full_usage "\n\n" \3159 "Enable/disable wireless devices\n" \3160 "\nCommands:" \3161 "\n list [INDEX|TYPE] List current state" \3162 "\n block INDEX|TYPE Disable device" \3163 "\n unblock INDEX|TYPE Enable device" \3164 "\n" \3165 "\n TYPE: all, wlan(wifi), bluetooth, uwb(ultrawideband)," \3166 "\n wimax, wwan, gps, fm" \3167 3168 #define rm_trivial_usage \3169 "[-irf] FILE..."3170 #define rm_full_usage "\n\n" \3171 "Remove (unlink) FILEs\n" \3172 "\nOptions:" \3173 "\n -i Always prompt before removing" \3174 "\n -f Never prompt" \3175 "\n -R,-r Recurse" \3176 3177 #define rm_example_usage \3178 "$ rm -rf /tmp/foo\n"3179 3180 #define rmdir_trivial_usage \3181 "[OPTIONS] DIRECTORY..."3182 #define rmdir_full_usage "\n\n" \3183 "Remove DIRECTORY if it is empty\n" \3184 "\nOptions:" \3185 IF_FEATURE_RMDIR_LONG_OPTIONS( \3186 "\n -p|--parents Include parents" \3187 "\n --ignore-fail-on-non-empty" \3188 ) \3189 IF_NOT_FEATURE_RMDIR_LONG_OPTIONS( \3190 "\n -p Include parents" \3191 )3192 3193 #define rmdir_example_usage \3194 "# rmdir /tmp/foo\n"3195 3196 #define route_trivial_usage \3197 "[{add|del|delete}]"3198 #define route_full_usage "\n\n" \3199 "Edit kernel routing tables\n" \3200 "\nOptions:" \3201 "\n -n Don't resolve names" \3202 "\n -e Display other/more information" \3203 "\n -A inet" IF_FEATURE_IPV6("{6}") " Select address family" \3204 3205 #define rpm_trivial_usage \3206 "-i PACKAGE.rpm; rpm -qp[ildc] PACKAGE.rpm"3207 #define rpm_full_usage "\n\n" \3208 "Manipulate RPM packages\n" \3209 "\nCommands:" \3210 "\n -i Install package" \3211 "\n -qp Query package" \3212 "\nOptions:" \3213 "\n -i Show information" \3214 "\n -l List contents" \3215 "\n -d List documents" \3216 "\n -c List config files" \3217 3218 #define rpm2cpio_trivial_usage \3219 "package.rpm"3220 #define rpm2cpio_full_usage "\n\n" \3221 "Output a cpio archive of the rpm file"3222 3223 #define rtcwake_trivial_usage \3224 "[-a | -l | -u] [-d DEV] [-m MODE] [-s SEC | -t TIME]"3225 #define rtcwake_full_usage "\n\n" \3226 "Enter a system sleep state until specified wakeup time\n" \3227 IF_LONG_OPTS( \3228 "\n -a,--auto Read clock mode from adjtime" \3229 "\n -l,--local Clock is set to local time" \3230 "\n -u,--utc Clock is set to UTC time" \3231 "\n -d,--device=DEV Specify the RTC device" \3232 "\n -m,--mode=MODE Set the sleep state (default: standby)" \3233 "\n -s,--seconds=SEC Set the timeout in SEC seconds from now" \3234 "\n -t,--time=TIME Set the timeout to TIME seconds from epoch" \3235 ) \3236 IF_NOT_LONG_OPTS( \3237 "\n -a Read clock mode from adjtime" \3238 "\n -l Clock is set to local time" \3239 "\n -u Clock is set to UTC time" \3240 "\n -d DEV Specify the RTC device" \3241 "\n -m MODE Set the sleep state (default: standby)" \3242 "\n -s SEC Set the timeout in SEC seconds from now" \3243 "\n -t TIME Set the timeout to TIME seconds from epoch" \3244 )3245 3246 #define runcon_trivial_usage \3247 "[-c] [-u USER] [-r ROLE] [-t TYPE] [-l RANGE] PROG ARGS\n" \3248 "runcon CONTEXT PROG ARGS"3249 #define runcon_full_usage "\n\n" \3250 "Run PROG in a different security context\n" \3251 "\n CONTEXT Complete security context\n" \3252 IF_FEATURE_RUNCON_LONG_OPTIONS( \3253 "\n -c,--compute Compute process transition context before modifying" \3254 "\n -t,--type=TYPE Type (for same role as parent)" \3255 "\n -u,--user=USER User identity" \3256 "\n -r,--role=ROLE Role" \3257 "\n -l,--range=RNG Levelrange" \3258 ) \3259 IF_NOT_FEATURE_RUNCON_LONG_OPTIONS( \3260 "\n -c Compute process transition context before modifying" \3261 "\n -t TYPE Type (for same role as parent)" \3262 "\n -u USER User identity" \3263 "\n -r ROLE Role" \3264 "\n -l RNG Levelrange" \3265 )3266 3267 #define run_parts_trivial_usage \3268 "[-t] "IF_FEATURE_RUN_PARTS_FANCY("[-l] ")"[-a ARG] [-u MASK] DIRECTORY"3269 #define run_parts_full_usage "\n\n" \3270 "Run a bunch of scripts in DIRECTORY\n" \3271 "\nOptions:" \3272 "\n -t Print what would be run, but don't actually run anything" \3273 "\n -a ARG Pass ARG as argument for every program" \3274 "\n -u MASK Set the umask to MASK before running every program" \3275 IF_FEATURE_RUN_PARTS_FANCY( \3276 "\n -l Print names of all matching files even if they are not executable" \3277 )3278 3279 #define run_parts_example_usage \3280 "$ run-parts -a start /etc/init.d\n" \3281 "$ run-parts -a stop=now /etc/init.d\n\n" \3282 "Let's assume you have a script foo/dosomething:\n" \3283 "#!/bin/sh\n" \3284 "for i in $*; do eval $i; done; unset i\n" \3285 "case \"$1\" in\n" \3286 "start*) echo starting something;;\n" \3287 "stop*) set -x; shutdown -h $stop;;\n" \3288 "esac\n\n" \3289 "Running this yields:\n" \3290 "$run-parts -a stop=+4m foo/\n" \3291 "+ shutdown -h +4m"3292 3293 #define runlevel_trivial_usage \3294 "[FILE]"3295 #define runlevel_full_usage "\n\n" \3296 "Find the current and previous system runlevel\n" \3297 "\n" \3298 "If no utmp FILE exists or if no runlevel record can be found,\n" \3299 "print \"unknown\""3300 #define runlevel_example_usage \3301 "$ runlevel /var/run/utmp\n" \3302 "N 2"3303 3304 #define runsv_trivial_usage \3305 "DIR"3306 #define runsv_full_usage "\n\n" \3307 "Start and monitor a service and optionally an appendant log service"3308 3309 #define runsvdir_trivial_usage \3310 "[-P] [-s SCRIPT] DIR"3311 #define runsvdir_full_usage "\n\n" \3312 "Start a runsv process for each subdirectory. If it exits, restart it.\n" \3313 "\n -P Put each runsv in a new session" \3314 "\n -s SCRIPT Run SCRIPT <signo> after signal is processed" \3315 3316 #define rx_trivial_usage \3317 "FILE"3318 #define rx_full_usage "\n\n" \3319 "Receive a file using the xmodem protocol"3320 #define rx_example_usage \3321 "$ rx /tmp/foo\n"3322 3323 #define script_trivial_usage \3324 "[-afq" IF_SCRIPTREPLAY("t") "] [-c PROG] [OUTFILE]"3325 #define script_full_usage "\n\n" \3326 "Options:" \3327 "\n -a Append output" \3328 "\n -c PROG Run PROG, not shell" \3329 "\n -f Flush output after each write" \3330 "\n -q Quiet" \3331 IF_SCRIPTREPLAY( \3332 "\n -t Send timing to stderr" \3333 )3334 3335 #define sed_trivial_usage \3336 "[-efinr] SED_CMD [FILE]..."3337 #define sed_full_usage "\n\n" \3338 "Options:" \3339 "\n -e CMD Add CMD to sed commands to be executed" \3340 "\n -f FILE Add FILE contents to sed commands to be executed" \3341 "\n -i Edit files in-place (else sends result to stdout)" \3342 "\n -n Suppress automatic printing of pattern space" \3343 "\n -r Use extended regex syntax" \3344 "\n" \3345 "\nIf no -e or -f, the first non-option argument is the sed command string." \3346 "\nRemaining arguments are input files (stdin if none)."3347 3348 #define sed_example_usage \3349 "$ echo \"foo\" | sed -e 's/f[a-zA-Z]o/bar/g'\n" \3350 "bar\n"3351 3352 #define selinuxenabled_trivial_usage NOUSAGE_STR3353 #define selinuxenabled_full_usage ""3354 3355 #define sendmail_trivial_usage \3356 "[OPTIONS] [RECIPIENT_EMAIL]..."3357 #define sendmail_full_usage "\n\n" \3358 "Read email from stdin and send it\n" \3359 "\nStandard options:" \3360 "\n -t Read additional recipients from message body" \3361 "\n -f sender Sender (required)" \3362 "\n -o options Various options. -oi implied, others are ignored" \3363 "\n -i -oi synonym. implied and ignored" \3364 "\n" \3365 "\nBusybox specific options:" \3366 "\n -w seconds Network timeout" \3367 "\n -H 'PROG ARGS' Run connection helper" \3368 "\n Examples:" \3369 "\n -H 'exec openssl s_client -quiet -tls1 -starttls smtp" \3370 "\n -connect smtp.gmail.com:25' <email.txt" \3371 "\n [4<username_and_passwd.txt | -au<username> -ap<password>]" \3372 "\n -H 'exec openssl s_client -quiet -tls1" \3373 "\n -connect smtp.gmail.com:465' <email.txt" \3374 "\n [4<username_and_passwd.txt | -au<username> -ap<password>]" \3375 "\n -S server[:port] Server" \3376 "\n -au<username> Username for AUTH LOGIN" \3377 "\n -ap<password> Password for AUTH LOGIN" \3378 "\n -am<method> Authentication method. Ignored. LOGIN is implied" \3379 "\n" \3380 "\nOther options are silently ignored; -oi -t is implied" \3381 IF_MAKEMIME( \3382 "\nUse makemime applet to create message with attachments" \3383 )3384 3385 #define seq_trivial_usage \3386 "[-w] [-s SEP] [FIRST [INC]] LAST"3387 #define seq_full_usage "\n\n" \3388 "Print numbers from FIRST to LAST, in steps of INC.\n" \3389 "FIRST, INC default to 1.\n" \3390 "\nOptions:" \3391 "\n -w Pad to last with leading zeros" \3392 "\n -s SEP String separator" \3393 3394 #define sestatus_trivial_usage \3395 "[-vb]"3396 #define sestatus_full_usage "\n\n" \3397 " -v Verbose" \3398 "\n -b Display current state of booleans" \3399 3400 #define setconsole_trivial_usage \3401 "[-r" IF_FEATURE_SETCONSOLE_LONG_OPTIONS("|--reset") "] [DEVICE]"3402 #define setconsole_full_usage "\n\n" \3403 "Redirect system console output to DEVICE (default: /dev/tty)\n" \3404 "\nOptions:" \3405 "\n -r Reset output to /dev/console" \3406 3407 #define setenforce_trivial_usage \3408 "[Enforcing | Permissive | 1 | 0]"3409 #define setenforce_full_usage ""3410 3411 #define setfiles_trivial_usage \3412 "[-dnpqsvW] [-e DIR]... [-o FILE] [-r alt_root_path]" \3413 IF_FEATURE_SETFILES_CHECK_OPTION( \3414 " [-c policyfile] spec_file" \3415 ) \3416 " pathname"3417 #define setfiles_full_usage "\n\n" \3418 "Reset file contexts under pathname according to spec_file\n" \3419 IF_FEATURE_SETFILES_CHECK_OPTION( \3420 "\n -c FILE Check the validity of the contexts against the specified binary policy" \3421 ) \3422 "\n -d Show which specification matched each file" \3423 "\n -l Log changes in file labels to syslog" \3424 "\n -n Don't change any file labels" \3425 "\n -q Suppress warnings" \3426 "\n -r DIR Use an alternate root path" \3427 "\n -e DIR Exclude DIR" \3428 "\n -F Force reset of context to match file_context for customizable files" \3429 "\n -o FILE Save list of files with incorrect context" \3430 "\n -s Take a list of files from stdin (instead of command line)" \3431 "\n -v Show changes in file labels, if type or role are changing" \3432 "\n -vv Show changes in file labels, if type, role, or user are changing" \3433 "\n -W Display warnings about entries that had no matching files" \3434 3435 #define setfont_trivial_usage \3436 "FONT [-m MAPFILE] [-C TTY]"3437 #define setfont_full_usage "\n\n" \3438 "Load a console font\n" \3439 "\nOptions:" \3440 "\n -m MAPFILE Load console screen map" \3441 "\n -C TTY Affect TTY instead of /dev/tty" \3442 3443 #define setfont_example_usage \3444 "$ setfont -m koi8-r /etc/i18n/fontname\n"3445 3446 #define setkeycodes_trivial_usage \3447 "SCANCODE KEYCODE..."3448 #define setkeycodes_full_usage "\n\n" \3449 "Set entries into the kernel's scancode-to-keycode map,\n" \3450 "allowing unusual keyboards to generate usable keycodes.\n\n" \3451 "SCANCODE may be either xx or e0xx (hexadecimal),\n" \3452 "and KEYCODE is given in decimal." \3453 3454 #define setkeycodes_example_usage \3455 "$ setkeycodes e030 127\n"3456 3457 #define setlogcons_trivial_usage \3458 "N"3459 #define setlogcons_full_usage "\n\n" \3460 "Redirect the kernel output to console N (0 for current)"3461 3462 #define setsebool_trivial_usage \3463 "boolean value"3464 3465 #define setsebool_full_usage "\n\n" \3466 "Change boolean setting"3467 3468 #define setsid_trivial_usage \3469 "PROG ARGS"3470 #define setsid_full_usage "\n\n" \3471 "Run PROG in a new session. PROG will have no controlling terminal\n" \3472 "and will not be affected by keyboard signals (Ctrl-C etc).\n" \3473 "See setsid(2) for details." \3474 3475 #define last_trivial_usage \3476 ""IF_FEATURE_LAST_FANCY("[-HW] [-f FILE]")3477 #define last_full_usage "\n\n" \3478 "Show listing of the last users that logged into the system" \3479 IF_FEATURE_LAST_FANCY( "\n" \3480 "\nOptions:" \3481 /* "\n -H Show header line" */ \3482 "\n -W Display with no host column truncation" \3483 "\n -f FILE Read from FILE instead of /var/log/wtmp" \3484 )3485 3486 #define showkey_trivial_usage \3487 "[-a | -k | -s]"3488 #define showkey_full_usage "\n\n" \3489 "Show keys pressed\n" \3490 "\nOptions:" \3491 "\n -a Display decimal/octal/hex values of the keys" \3492 "\n -k Display interpreted keycodes (default)" \3493 "\n -s Display raw scan-codes" \3494 3495 #define slattach_trivial_usage \3496 "[-cehmLF] [-s SPEED] [-p PROTOCOL] DEVICE"3497 #define slattach_full_usage "\n\n" \3498 "Attach network interface(s) to serial line(s)\n" \3499 "\nOptions:" \3500 "\n -p PROT Set protocol (slip, cslip, slip6, clisp6 or adaptive)" \3501 "\n -s SPD Set line speed" \3502 "\n -e Exit after initializing device" \3503 "\n -h Exit when the carrier is lost" \3504 "\n -c PROG Run PROG when the line is hung up" \3505 "\n -m Do NOT initialize the line in raw 8 bits mode" \3506 "\n -L Enable 3-wire operation" \3507 "\n -F Disable RTS/CTS flow control" \3508 3509 #define sleep_trivial_usage \3510 IF_FEATURE_FANCY_SLEEP("[") "N" IF_FEATURE_FANCY_SLEEP("]...")3511 #define sleep_full_usage "\n\n" \3512 IF_NOT_FEATURE_FANCY_SLEEP("Pause for N seconds") \3513 IF_FEATURE_FANCY_SLEEP( \3514 "Pause for a time equal to the total of the args given, where each arg can\n" \3515 "have an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays")3516 #define sleep_example_usage \3517 "$ sleep 2\n" \3518 "[2 second delay results]\n" \3519 IF_FEATURE_FANCY_SLEEP( \3520 "$ sleep 1d 3h 22m 8s\n" \3521 "[98528 second delay results]\n")3522 3523 #define sort_trivial_usage \3524 "[-nru" \3525 IF_FEATURE_SORT_BIG("gMcszbdfimSTokt] [-o FILE] [-k start[.offset][opts][,end[.offset][opts]] [-t CHAR") \3526 "] [FILE]..."3527 #define sort_full_usage "\n\n" \3528 "Sort lines of text\n" \3529 "\nOptions:" \3530 IF_FEATURE_SORT_BIG( \3531 "\n -b Ignore leading blanks" \3532 "\n -c Check whether input is sorted" \3533 "\n -d Dictionary order (blank or alphanumeric only)" \3534 "\n -f Ignore case" \3535 "\n -g General numerical sort" \3536 "\n -i Ignore unprintable characters" \3537 "\n -k Sort key" \3538 "\n -M Sort month" \3539 ) \3540 "\n -n Sort numbers" \3541 IF_FEATURE_SORT_BIG( \3542 "\n -o Output to file" \3543 "\n -k Sort by key" \3544 "\n -t CHAR Key separator" \3545 ) \3546 "\n -r Reverse sort order" \3547 IF_FEATURE_SORT_BIG( \3548 "\n -s Stable (don't sort ties alphabetically)" \3549 ) \3550 "\n -u Suppress duplicate lines" \3551 IF_FEATURE_SORT_BIG( \3552 "\n -z Lines are terminated by NUL, not newline" \3553 "\n -mST Ignored for GNU compatibility") \3554 3555 #define sort_example_usage \3556 "$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \3557 "a\n" \3558 "b\n" \3559 "c\n" \3560 "d\n" \3561 "e\n" \3562 "f\n" \3563 IF_FEATURE_SORT_BIG( \3564 "$ echo -e \"c 3\\nb 2\\nd 2\" | $SORT -k 2,2n -k 1,1r\n" \3565 "d 2\n" \3566 "b 2\n" \3567 "c 3\n" \3568 ) \3569 ""3570 3571 #define split_trivial_usage \3572 "[OPTIONS] [INPUT [PREFIX]]"3573 #define split_full_usage "\n\n" \3574 "Options:" \3575 "\n -b N[k|m] Split by N (kilo|mega)bytes" \3576 "\n -l N Split by N lines" \3577 "\n -a N Use N letters as suffix" \3578 3579 #define split_example_usage \3580 "$ split TODO foo\n" \3581 "$ cat TODO | split -a 2 -l 2 TODO_\n"3582 3583 #define start_stop_daemon_trivial_usage \3584 "[OPTIONS] [-S|-K] ... [-- ARGS...]"3585 #define start_stop_daemon_full_usage "\n\n" \3586 "Search for matching processes, and then\n" \3587 "-K: stop all matching processes.\n" \3588 "-S: start a process unless a matching process is found.\n" \3589 IF_FEATURE_START_STOP_DAEMON_LONG_OPTIONS( \3590 "\nProcess matching:" \3591 "\n -u,--user USERNAME|UID Match only this user's processes" \3592 "\n -n,--name NAME Match processes with NAME" \3593 "\n in comm field in /proc/PID/stat" \3594 "\n -x,--exec EXECUTABLE Match processes with this command" \3595 "\n in /proc/PID/cmdline" \3596 "\n -p,--pidfile FILE Match a process with PID from the file" \3597 "\n All specified conditions must match" \3598 "\n-S only:" \3599 "\n -x,--exec EXECUTABLE Program to run" \3600 "\n -a,--startas NAME Zeroth argument" \3601 "\n -b,--background Background" \3602 IF_FEATURE_START_STOP_DAEMON_FANCY( \3603 "\n -N,--nicelevel N Change nice level" \3604 ) \3605 "\n -c,--chuid USER[:[GRP]] Change to user/group" \3606 "\n -m,--make-pidfile Write PID to the pidfile specified by -p" \3607 "\n-K only:" \3608 "\n -s,--signal SIG Signal to send" \3609 "\n -t,--test Match only, exit with 0 if a process is found" \3610 "\nOther:" \3611 IF_FEATURE_START_STOP_DAEMON_FANCY( \3612 "\n -o,--oknodo Exit with status 0 if nothing is done" \3613 "\n -v,--verbose Verbose" \3614 ) \3615 "\n -q,--quiet Quiet" \3616 ) \3617 IF_NOT_FEATURE_START_STOP_DAEMON_LONG_OPTIONS( \3618 "\nProcess matching:" \3619 "\n -u USERNAME|UID Match only this user's processes" \3620 "\n -n NAME Match processes with NAME" \3621 "\n in comm field in /proc/PID/stat" \3622 "\n -x EXECUTABLE Match processes with this command" \3623 "\n command in /proc/PID/cmdline" \3624 "\n -p FILE Match a process with PID from the file" \3625 "\n All specified conditions must match" \3626 "\n-S only:" \3627 "\n -x EXECUTABLE Program to run" \3628 "\n -a NAME Zeroth argument" \3629 "\n -b Background" \3630 IF_FEATURE_START_STOP_DAEMON_FANCY( \3631 "\n -N N Change nice level" \3632 ) \3633 "\n -c USER[:[GRP]] Change to user/group" \3634 "\n -m Write PID to the pidfile specified by -p" \3635 "\n-K only:" \3636 "\n -s SIG Signal to send" \3637 "\n -t Match only, exit with 0 if a process is found" \3638 "\nOther:" \3639 IF_FEATURE_START_STOP_DAEMON_FANCY( \3640 "\n -o Exit with status 0 if nothing is done" \3641 "\n -v Verbose" \3642 ) \3643 "\n -q Quiet" \3644 ) \3645 3646 #define stat_trivial_usage \3647 "[OPTIONS] FILE..."3648 #define stat_full_usage "\n\n" \3649 "Display file (default) or filesystem status\n" \3650 "\nOptions:" \3651 IF_FEATURE_STAT_FORMAT( \3652 "\n -c fmt Use the specified format" \3653 ) \3654 "\n -f Display filesystem status" \3655 "\n -L Follow links" \3656 "\n -t Display info in terse form" \3657 IF_SELINUX( \3658 "\n -Z Print security context" \3659 ) \3660 IF_FEATURE_STAT_FORMAT( \3661 "\n\nValid format sequences for files:\n" \3662 " %a Access rights in octal\n" \3663 " %A Access rights in human readable form\n" \3664 " %b Number of blocks allocated (see %B)\n" \3665 " %B The size in bytes of each block reported by %b\n" \3666 " %d Device number in decimal\n" \3667 " %D Device number in hex\n" \3668 " %f Raw mode in hex\n" \3669 " %F File type\n" \3670 " %g Group ID of owner\n" \3671 " %G Group name of owner\n" \3672 " %h Number of hard links\n" \3673 " %i Inode number\n" \3674 " %n File name\n" \3675 " %N File name, with -> TARGET if symlink\n" \3676 " %o I/O block size\n" \3677 " %s Total size, in bytes\n" \3678 " %t Major device type in hex\n" \3679 " %T Minor device type in hex\n" \3680 " %u User ID of owner\n" \3681 " %U User name of owner\n" \3682 " %x Time of last access\n" \3683 " %X Time of last access as seconds since Epoch\n" \3684 " %y Time of last modification\n" \3685 " %Y Time of last modification as seconds since Epoch\n" \3686 " %z Time of last change\n" \3687 " %Z Time of last change as seconds since Epoch\n" \3688 "\nValid format sequences for file systems:\n" \3689 " %a Free blocks available to non-superuser\n" \3690 " %b Total data blocks in file system\n" \3691 " %c Total file nodes in file system\n" \3692 " %d Free file nodes in file system\n" \3693 " %f Free blocks in file system\n" \3694 IF_SELINUX( \3695 " %C Security context in selinux\n" \3696 ) \3697 " %i File System ID in hex\n" \3698 " %l Maximum length of filenames\n" \3699 " %n File name\n" \3700 " %s Block size (for faster transfer)\n" \3701 " %S Fundamental block size (for block counts)\n" \3702 " %t Type in hex\n" \3703 " %T Type in human readable form" \3704 ) \3705 3706 #define strings_trivial_usage \3707 "[-afo] [-n LEN] [FILE]..."3708 #define strings_full_usage "\n\n" \3709 "Display printable strings in a binary file\n" \3710 "\nOptions:" \3711 "\n -a Scan whole file (default)" \3712 "\n -f Precede strings with filenames" \3713 "\n -n LEN At least LEN characters form a string (default 4)" \3714 "\n -o Precede strings with decimal offsets" \3715 3716 #define stty_trivial_usage \3717 "[-a|g] [-F DEVICE] [SETTING]..."3718 #define stty_full_usage "\n\n" \3719 "Without arguments, prints baud rate, line discipline,\n" \3720 "and deviations from stty sane\n" \3721 "\nOptions:" \3722 "\n -F DEVICE Open device instead of stdin" \3723 "\n -a Print all current settings in human-readable form" \3724 "\n -g Print in stty-readable form" \3725 "\n [SETTING] See manpage" \3726 3727 #define su_trivial_usage \3728 "[OPTIONS] [-] [USERNAME]"3729 #define su_full_usage "\n\n" \3730 "Change user id or become root\n" \3731 "\nOptions:" \3732 "\n -p,-m Preserve environment" \3733 "\n -c CMD Command to pass to 'sh -c'" \3734 "\n -s SH Shell to use instead of default shell" \3735 3736 #define sulogin_trivial_usage \3737 "[-t N] [TTY]"3738 #define sulogin_full_usage "\n\n" \3739 "Single user login\n" \3740 "\nOptions:" \3741 "\n -t N Timeout" \3742 3743 #define sum_trivial_usage \3744 "[-rs] [FILE]..."3745 #define sum_full_usage "\n\n" \3746 "Checksum and count the blocks in a file\n" \3747 "\nOptions:" \3748 "\n -r Use BSD sum algorithm (1K blocks)" \3749 "\n -s Use System V sum algorithm (512byte blocks)" \3750 3751 #define sv_trivial_usage \3752 "[-v] [-w SEC] CMD SERVICE_DIR..."3753 #define sv_full_usage "\n\n" \3754 "Control services monitored by runsv supervisor.\n" \3755 "Commands (only first character is enough):\n" \3756 "\n" \3757 "status: query service status\n" \3758 "up: if service isn't running, start it. If service stops, restart it\n" \3759 "once: like 'up', but if service stops, don't restart it\n" \3760 "down: send TERM and CONT signals. If ./run exits, start ./finish\n" \3761 " if it exists. After it stops, don't restart service\n" \3762 "exit: send TERM and CONT signals to service and log service. If they exit,\n" \3763 " runsv exits too\n" \3764 "pause, cont, hup, alarm, interrupt, quit, 1, 2, term, kill: send\n" \3765 "STOP, CONT, HUP, ALRM, INT, QUIT, USR1, USR2, TERM, KILL signal to service" \3766 3767 #define svlogd_trivial_usage \3768 "[-ttv] [-r C] [-R CHARS] [-l MATCHLEN] [-b BUFLEN] DIR..."3769 #define svlogd_full_usage "\n\n" \3770 "Continuously read log data from stdin, optionally\n" \3771 "filter log messages, and write the data to one or more automatically\n" \3772 "rotated logs" \3773 3774 #define swapoff_trivial_usage \3775 "[-a] [DEVICE]"3776 #define swapoff_full_usage "\n\n" \3777 "Stop swapping on DEVICE\n" \3778 "\nOptions:" \3779 "\n -a Stop swapping on all swap devices" \3780 3781 #define swapon_trivial_usage \3782 "[-a]" IF_FEATURE_SWAPON_PRI(" [-p PRI]") " [DEVICE]"3783 #define swapon_full_usage "\n\n" \3784 "Start swapping on DEVICE\n" \3785 "\nOptions:" \3786 "\n -a Start swapping on all swap devices" \3787 IF_FEATURE_SWAPON_PRI( \3788 "\n -p PRI Set swap device priority" \3789 ) \3790 3791 #define switch_root_trivial_usage \3792 "[-c /dev/console] NEW_ROOT NEW_INIT [ARGS]"3793 #define switch_root_full_usage "\n\n" \3794 "Free initramfs and switch to another root fs:\n" \3795 "chroot to NEW_ROOT, delete all in /, move NEW_ROOT to /,\n" \3796 "execute NEW_INIT. PID must be 1. NEW_ROOT must be a mountpoint.\n" \3797 "\nOptions:" \3798 "\n -c DEV Reopen stdio to DEV after switch" \3799 3800 #define sync_trivial_usage \3801 ""3802 #define sync_full_usage "\n\n" \3803 "Write all buffered blocks to disk"3804 3805 #define fsync_trivial_usage \3806 "[-d] FILE..."3807 #define fsync_full_usage "\n\n" \3808 "Write files' buffered blocks to disk\n" \3809 "\nOptions:" \3810 "\n -d Avoid syncing metadata"3811 3812 #define sysctl_trivial_usage \3813 "[OPTIONS] [VALUE]..."3814 #define sysctl_full_usage "\n\n" \3815 "Configure kernel parameters at runtime\n" \3816 "\nOptions:" \3817 "\n -n Don't print key names" \3818 "\n -e Don't warn about unknown keys" \3819 "\n -w Change sysctl setting" \3820 "\n -p FILE Load sysctl settings from FILE (default /etc/sysctl.conf)" \3821 "\n -a Display all values" \3822 "\n -A Display all values in table form" \3823 3824 #define sysctl_example_usage \3825 "sysctl [-n] [-e] variable...\n" \3826 "sysctl [-n] [-e] -w variable=value...\n" \3827 "sysctl [-n] [-e] -a\n" \3828 "sysctl [-n] [-e] -p file (default /etc/sysctl.conf)\n" \3829 "sysctl [-n] [-e] -A\n"3830 3831 #define syslogd_trivial_usage \3832 "[OPTIONS]"3833 #define syslogd_full_usage "\n\n" \3834 "System logging utility.\n" \3835 "This version of syslogd ignores /etc/syslog.conf\n" \3836 "\nOptions:" \3837 "\n -n Run in foreground" \3838 "\n -O FILE Log to given file (default:/var/log/messages)" \3839 "\n -l N Set local log level" \3840 "\n -S Smaller logging output" \3841 IF_FEATURE_ROTATE_LOGFILE( \3842 "\n -s SIZE Max size (KB) before rotate (default:200KB, 0=off)" \3843 "\n -b N N rotated logs to keep (default:1, max=99, 0=purge)") \3844 IF_FEATURE_REMOTE_LOG( \3845 "\n -R HOST[:PORT] Log to IP or hostname on PORT (default PORT=514/UDP)" \3846 "\n -L Log locally and via network (default is network only if -R)") \3847 IF_FEATURE_SYSLOGD_DUP( \3848 "\n -D Drop duplicates") \3849 IF_FEATURE_IPC_SYSLOG( \3850 "\n -C[size(KiB)] Log to shared mem buffer (read it using logread)") \3851 /* NB: -Csize shouldn't have space (because size is optional) */3852 /* "\n -m MIN Minutes between MARK lines (default:20, 0=off)" */3853 3854 #define syslogd_example_usage \3855 "$ syslogd -R masterlog:514\n" \3856 "$ syslogd -R 192.168.1.1:601\n"3857 3858 #define tac_trivial_usage \3859 "[FILE]..."3860 #define tac_full_usage "\n\n" \3861 "Concatenate FILEs and print them in reverse"3862 3863 #define taskset_trivial_usage \3864 "[-p] [MASK] [PID | PROG ARGS]"3865 #define taskset_full_usage "\n\n" \3866 "Set or get CPU affinity\n" \3867 "\nOptions:" \3868 "\n -p Operate on an existing PID" \3869 3870 #define taskset_example_usage \3871 "$ taskset 0x7 ./dgemm_test&\n" \3872 "$ taskset -p 0x1 $!\n" \3873 "pid 4790's current affinity mask: 7\n" \3874 "pid 4790's new affinity mask: 1\n" \3875 "$ taskset 0x7 /bin/sh -c './taskset -p 0x1 $$'\n" \3876 "pid 6671's current affinity mask: 1\n" \3877 "pid 6671's new affinity mask: 1\n" \3878 "$ taskset -p 1\n" \3879 "pid 1's current affinity mask: 3\n"3880 3881 #define tee_trivial_usage \3882 "[-ai] [FILE]..."3883 #define tee_full_usage "\n\n" \3884 "Copy stdin to each FILE, and also to stdout\n" \3885 "\nOptions:" \3886 "\n -a Append to the given FILEs, don't overwrite" \3887 "\n -i Ignore interrupt signals (SIGINT)" \3888 3889 #define tee_example_usage \3890 "$ echo \"Hello\" | tee /tmp/foo\n" \3891 "$ cat /tmp/foo\n" \3892 "Hello\n"3893 3894 #if ENABLE_FEATURE_TELNET_AUTOLOGIN3895 #define telnet_trivial_usage \3896 "[-a] [-l USER] HOST [PORT]"3897 #define telnet_full_usage "\n\n" \3898 "Connect to telnet server\n" \3899 "\nOptions:" \3900 "\n -a Automatic login with $USER variable" \3901 "\n -l USER Automatic login as USER" \3902 3903 #else3904 #define telnet_trivial_usage \3905 "HOST [PORT]"3906 #define telnet_full_usage "\n\n" \3907 "Connect to telnet server"3908 #endif3909 3910 #define telnetd_trivial_usage \3911 "[OPTIONS]"3912 #define telnetd_full_usage "\n\n" \3913 "Handle incoming telnet connections" \3914 IF_NOT_FEATURE_TELNETD_STANDALONE(" via inetd") "\n" \3915 "\nOptions:" \3916 "\n -l LOGIN Exec LOGIN on connect" \3917 "\n -f ISSUE_FILE Display ISSUE_FILE instead of /etc/issue" \3918 "\n -K Close connection as soon as login exits" \3919 "\n (normally wait until all programs close slave pty)" \3920 IF_FEATURE_TELNETD_STANDALONE( \3921 "\n -p PORT Port to listen on" \3922 "\n -b ADDR[:PORT] Address to bind to" \3923 "\n -F Run in foreground" \3924 "\n -i Inetd mode" \3925 IF_FEATURE_TELNETD_INETD_WAIT( \3926 "\n -w SEC Inetd 'wait' mode, linger time SEC" \3927 "\n -S Log to syslog (implied by -i or without -F and -w)" \3928 ) \3929 )3930 3931 /* "test --help" does not print help (POSIX compat), only "[ --help" does.3932 * We display "<applet> EXPRESSION ]" here (not "<applet> EXPRESSION")3933 * Unfortunately, it screws up generated BusyBox.html. TODO. */3934 #define test_trivial_usage \3935 "EXPRESSION ]"3936 #define test_full_usage "\n\n" \3937 "Check file types, compare values etc. Return a 0/1 exit code\n" \3938 "depending on logical value of EXPRESSION"3939 #define test_example_usage \3940 "$ test 1 -eq 2\n" \3941 "$ echo $?\n" \3942 "1\n" \3943 "$ test 1 -eq 1\n" \3944 "$ echo $?\n" \3945 "0\n" \3946 "$ [ -d /etc ]\n" \3947 "$ echo $?\n" \3948 "0\n" \3949 "$ [ -d /junk ]\n" \3950 "$ echo $?\n" \3951 "1\n"3952 3953 #define tc_trivial_usage \3954 /*"[OPTIONS] "*/"OBJECT CMD [dev STRING]"3955 #define tc_full_usage "\n\n" \3956 "OBJECT: {qdisc|class|filter}\n" \3957 "CMD: {add|del|change|replace|show}\n" \3958 "\n" \3959 "qdisc [ handle QHANDLE ] [ root |"IF_FEATURE_TC_INGRESS(" ingress |")" parent CLASSID ]\n" \3960 /* "[ estimator INTERVAL TIME_CONSTANT ]\n" */ \3961 " [ [ QDISC_KIND ] [ help | OPTIONS ] ]\n" \3962 " QDISC_KIND := { [p|b]fifo | tbf | prio | cbq | red | etc. }\n" \3963 "qdisc show [ dev STRING ]"IF_FEATURE_TC_INGRESS(" [ingress]")"\n" \3964 "class [ classid CLASSID ] [ root | parent CLASSID ]\n" \3965 " [ [ QDISC_KIND ] [ help | OPTIONS ] ]\n" \3966 "class show [ dev STRING ] [ root | parent CLASSID ]\n" \3967 "filter [ pref PRIO ] [ protocol PROTO ]\n" \3968 /* "\t[ estimator INTERVAL TIME_CONSTANT ]\n" */ \3969 " [ root | classid CLASSID ] [ handle FILTERID ]\n" \3970 " [ [ FILTER_TYPE ] [ help | OPTIONS ] ]\n" \3971 "filter show [ dev STRING ] [ root | parent CLASSID ]"3972 3973 #define tcpsvd_trivial_usage \3974 "[-hEv] [-c N] [-C N[:MSG]] [-b N] [-u USER] [-l NAME] IP PORT PROG"3975 /* with not-implemented options: */3976 /* "[-hpEvv] [-c N] [-C N[:MSG]] [-b N] [-u USER] [-l NAME] [-i DIR|-x CDB] [-t SEC] IP PORT PROG" */3977 #define tcpsvd_full_usage "\n\n" \3978 "Create TCP socket, bind to IP:PORT and listen\n" \3979 "for incoming connection. Run PROG for each connection.\n" \3980 "\n IP IP to listen on. '0' = all" \3981 "\n PORT Port to listen on" \3982 "\n PROG ARGS Program to run" \3983 "\n -l NAME Local hostname (else looks up local hostname in DNS)" \3984 "\n -u USER[:GRP] Change to user/group after bind" \3985 "\n -c N Handle up to N connections simultaneously" \3986 "\n -b N Allow a backlog of approximately N TCP SYNs" \3987 "\n -C N[:MSG] Allow only up to N connections from the same IP." \3988 "\n New connections from this IP address are closed" \3989 "\n immediately. MSG is written to the peer before close" \3990 "\n -h Look up peer's hostname" \3991 "\n -E Don't set up environment variables" \3992 "\n -v Verbose" \3993 3994 #define udpsvd_trivial_usage \3995 "[-hEv] [-c N] [-u USER] [-l NAME] IP PORT PROG"3996 #define udpsvd_full_usage "\n\n" \3997 "Create UDP socket, bind to IP:PORT and wait\n" \3998 "for incoming packets. Run PROG for each packet,\n" \3999 "redirecting all further packets with same peer ip:port to it.\n" \4000 "\n IP IP to listen on. '0' = all" \4001 "\n PORT Port to listen on" \4002 "\n PROG ARGS Program to run" \4003 "\n -l NAME Local hostname (else looks up local hostname in DNS)" \4004 "\n -u USER[:GRP] Change to user/group after bind" \4005 "\n -c N Handle up to N connections simultaneously" \4006 "\n -h Look up peer's hostname" \4007 "\n -E Don't set up environment variables" \4008 "\n -v Verbose" \4009 4010 #define tftp_trivial_usage \4011 "[OPTIONS] HOST [PORT]"4012 #define tftp_full_usage "\n\n" \4013 "Transfer a file from/to tftp server\n" \4014 "\nOptions:" \4015 "\n -l FILE Local FILE" \4016 "\n -r FILE Remote FILE" \4017 IF_FEATURE_TFTP_GET( \4018 "\n -g Get file" \4019 ) \4020 IF_FEATURE_TFTP_PUT( \4021 "\n -p Put file" \4022 ) \4023 IF_FEATURE_TFTP_BLOCKSIZE( \4024 "\n -b SIZE Transfer blocks of SIZE octets" \4025 )4026 4027 #define tftpd_trivial_usage \4028 "[-cr] [-u USER] [DIR]"4029 #define tftpd_full_usage "\n\n" \4030 "Transfer a file on tftp client's request\n" \4031 "\n" \4032 "tftpd should be used as an inetd service.\n" \4033 "tftpd's line for inetd.conf:\n" \4034 " 69 dgram udp nowait root tftpd tftpd /files/to/serve\n" \4035 "It also can be ran from udpsvd:\n" \4036 " udpsvd -vE 0.0.0.0 69 tftpd /files/to/serve\n" \4037 "\nOptions:" \4038 "\n -r Prohibit upload" \4039 "\n -c Allow file creation via upload" \4040 "\n -u Access files as USER" \4041 4042 #define time_trivial_usage \4043 "[-v] PROG ARGS"4044 #define time_full_usage "\n\n" \4045 "Run PROG, display resource usage when it exits\n" \4046 "\nOptions:" \4047 "\n -v Verbose" \4048 4049 #define timeout_trivial_usage \4050 "[-t SECS] [-s SIG] PROG ARGS"4051 #define timeout_full_usage "\n\n" \4052 "Runs PROG. Sends SIG to it if it is not gone in SECS seconds.\n" \4053 "Defaults: SECS: 10, SIG: TERM." \4054 4055 #define top_trivial_usage \4056 "[-b] [-nCOUNT] [-dSECONDS]" IF_FEATURE_TOPMEM(" [-m]")4057 #define top_full_usage "\n\n" \4058 "Provide a view of process activity in real time.\n" \4059 "Read the status of all processes from /proc each SECONDS\n" \4060 "and display a screenful of them." \4061 //TODO: add options and keyboard commands4062 4063 #define touch_trivial_usage \4064 "[-c] [-d DATE] [-r FILE] FILE [FILE]..."4065 #define touch_full_usage "\n\n" \4066 "Update the last-modified date on the given FILE[s]\n" \4067 "\nOptions:" \4068 "\n -c Don't create files" \4069 "\n -d DT Date/time to use" \4070 "\n -r FILE Use FILE's date/time" \4071 4072 #define touch_example_usage \4073 "$ ls -l /tmp/foo\n" \4074 "/bin/ls: /tmp/foo: No such file or directory\n" \4075 "$ touch /tmp/foo\n" \4076 "$ ls -l /tmp/foo\n" \4077 "-rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo\n"4078 4079 #define tr_trivial_usage \4080 "[-cds] STRING1 [STRING2]"4081 #define tr_full_usage "\n\n" \4082 "Translate, squeeze, or delete characters from stdin, writing to stdout\n" \4083 "\nOptions:" \4084 "\n -c Take complement of STRING1" \4085 "\n -d Delete input characters coded STRING1" \4086 "\n -s Squeeze multiple output characters of STRING2 into one character" \4087 4088 #define tr_example_usage \4089 "$ echo \"gdkkn vnqkc\" | tr [a-y] [b-z]\n" \4090 "hello world\n"4091 4092 #define traceroute_trivial_usage \4093 "[-"IF_TRACEROUTE6("46")"FIldnrv] [-f 1ST_TTL] [-m MAXTTL] [-p PORT] [-q PROBES]\n" \4094 " [-s SRC_IP] [-t TOS] [-w WAIT_SEC] [-g GATEWAY] [-i IFACE]\n" \4095 " [-z PAUSE_MSEC] HOST [BYTES]"4096 #define traceroute_full_usage "\n\n" \4097 "Trace the route to HOST\n" \4098 "\nOptions:" \4099 IF_TRACEROUTE6( \4100 "\n -4,-6 Force IP or IPv6 name resolution" \4101 ) \4102 "\n -F Set the don't fragment bit" \4103 "\n -I Use ICMP ECHO instead of UDP datagrams" \4104 "\n -l Display the TTL value of the returned packet" \4105 "\n -d Set SO_DEBUG options to socket" \4106 "\n -n Print numeric addresses" \4107 "\n -r Bypass routing tables, send directly to HOST" \4108 "\n -v Verbose" \4109 "\n -m Max time-to-live (max number of hops)" \4110 "\n -p Base UDP port number used in probes" \4111 "\n (default 33434)" \4112 "\n -q Number of probes per TTL (default 3)" \4113 "\n -s IP address to use as the source address" \4114 "\n -t Type-of-service in probe packets (default 0)" \4115 "\n -w Time in seconds to wait for a response (default 3)" \4116 "\n -g Loose source route gateway (8 max)" \4117 4118 #define traceroute6_trivial_usage \4119 "[-dnrv] [-m MAXTTL] [-p PORT] [-q PROBES]\n" \4120 " [-s SRC_IP] [-t TOS] [-w WAIT_SEC] [-i IFACE]\n" \4121 " HOST [BYTES]"4122 #define traceroute6_full_usage "\n\n" \4123 "Trace the route to HOST\n" \4124 "\nOptions:" \4125 "\n -d Set SO_DEBUG options to socket" \4126 "\n -n Print numeric addresses" \4127 "\n -r Bypass routing tables, send directly to HOST" \4128 "\n -v Verbose" \4129 "\n -m Max time-to-live (max number of hops)" \4130 "\n -p Base UDP port number used in probes" \4131 "\n (default is 33434)" \4132 "\n -q Number of probes per TTL (default 3)" \4133 "\n -s IP address to use as the source address" \4134 "\n -t Type-of-service in probe packets (default 0)" \4135 "\n -w Time in seconds to wait for a response (default 3)" \4136 4137 #define true_trivial_usage \4138 ""4139 #define true_full_usage "\n\n" \4140 "Return an exit code of TRUE (0)"4141 #define true_example_usage \4142 "$ true\n" \4143 "$ echo $?\n" \4144 "0\n"4145 4146 #define tty_trivial_usage \4147 ""4148 #define tty_full_usage "\n\n" \4149 "Print file name of stdin's terminal" \4150 IF_INCLUDE_SUSv2( "\n" \4151 "\nOptions:" \4152 "\n -s Print nothing, only return exit status" \4153 )4154 #define tty_example_usage \4155 "$ tty\n" \4156 "/dev/tty2\n"4157 4158 #define ttysize_trivial_usage \4159 "[w] [h]"4160 #define ttysize_full_usage "\n\n" \4161 "Print dimension(s) of stdin's terminal, on error return 80x25"4162 4163 #define tunctl_trivial_usage \4164 "[-f device] ([-t name] | -d name)" IF_FEATURE_TUNCTL_UG(" [-u owner] [-g group] [-b]")4165 #define tunctl_full_usage "\n\n" \4166 "Create or delete tun interfaces\n" \4167 "\nOptions:" \4168 "\n -f name tun device (/dev/net/tun)" \4169 "\n -t name Create iface 'name'" \4170 "\n -d name Delete iface 'name'" \4171 IF_FEATURE_TUNCTL_UG( \4172 "\n -u owner Set iface owner" \4173 "\n -g group Set iface group" \4174 "\n -b Brief output" \4175 )4176 #define tunctl_example_usage \4177 "# tunctl\n" \4178 "# tunctl -d tun0\n"4179 4180 #define udhcpd_trivial_usage \4181 "[-fS]" IF_FEATURE_UDHCP_PORT(" [-P N]") " [CONFFILE]" \4182 4183 #define udhcpd_full_usage "\n\n" \4184 "DHCP server\n" \4185 "\n -f Run in foreground" \4186 "\n -S Log to syslog too" \4187 IF_FEATURE_UDHCP_PORT( \4188 "\n -P N Use port N (default 67)" \4189 )4190 4191 #define umount_trivial_usage \4192 "[OPTIONS] FILESYSTEM|DIRECTORY"4193 #define umount_full_usage "\n\n" \4194 "Unmount file systems\n" \4195 "\nOptions:" \4196 IF_FEATURE_UMOUNT_ALL( \4197 "\n -a Unmount all file systems" IF_FEATURE_MTAB_SUPPORT(" in /etc/mtab") \4198 ) \4199 IF_FEATURE_MTAB_SUPPORT( \4200 "\n -n Don't erase /etc/mtab entries" \4201 ) \4202 "\n -r Try to remount devices as read-only if mount is busy" \4203 "\n -l Lazy umount (detach filesystem)" \4204 "\n -f Force umount (i.e., unreachable NFS server)" \4205 IF_FEATURE_MOUNT_LOOP( \4206 "\n -d Free loop device if it has been used" \4207 )4208 4209 #define umount_example_usage \4210 "$ umount /dev/hdc1\n"4211 4212 #define uname_trivial_usage \4213 "[-amnrspv]"4214 #define uname_full_usage "\n\n" \4215 "Print system information\n" \4216 "\nOptions:" \4217 "\n -a Print all" \4218 "\n -m The machine (hardware) type" \4219 "\n -n Hostname" \4220 "\n -r OS release" \4221 "\n -s OS name (default)" \4222 "\n -p Processor type" \4223 "\n -v OS version" \4224 4225 #define uname_example_usage \4226 "$ uname -a\n" \4227 "Linux debian 2.4.23 #2 Tue Dec 23 17:09:10 MST 2003 i686 GNU/Linux\n"4228 4229 #define uncompress_trivial_usage \4230 "[-cf] [FILE]..."4231 #define uncompress_full_usage "\n\n" \4232 "Decompress .Z file[s]\n" \4233 "\nOptions:" \4234 "\n -c Write to stdout" \4235 "\n -f Overwrite" \4236 4237 #define unexpand_trivial_usage \4238 "[-fa][-t N] [FILE]..."4239 #define unexpand_full_usage "\n\n" \4240 "Convert spaces to tabs, writing to stdout\n" \4241 "\nOptions:" \4242 IF_FEATURE_UNEXPAND_LONG_OPTIONS( \4243 "\n -a,--all Convert all blanks" \4244 "\n -f,--first-only Convert only leading blanks" \4245 "\n -t,--tabs=N Tabstops every N chars" \4246 ) \4247 IF_NOT_FEATURE_UNEXPAND_LONG_OPTIONS( \4248 "\n -a Convert all blanks" \4249 "\n -f Convert only leading blanks" \4250 "\n -t N Tabstops every N chars" \4251 )4252 4253 #define uniq_trivial_usage \4254 "[-cdu][-f,s,w N] [INPUT [OUTPUT]]"4255 #define uniq_full_usage "\n\n" \4256 "Discard duplicate lines\n" \4257 "\nOptions:" \4258 "\n -c Prefix lines by the number of occurrences" \4259 "\n -d Only print duplicate lines" \4260 "\n -u Only print unique lines" \4261 "\n -f N Skip first N fields" \4262 "\n -s N Skip first N chars (after any skipped fields)" \4263 "\n -w N Compare N characters in line" \4264 4265 #define uniq_example_usage \4266 "$ echo -e \"a\\na\\nb\\nc\\nc\\na\" | sort | uniq\n" \4267 "a\n" \4268 "b\n" \4269 "c\n"4270 4271 #define unzip_trivial_usage \4272 "[-opts[modifiers]] FILE[.zip] [LIST] [-x XLIST] [-d DIR]"4273 #define unzip_full_usage "\n\n" \4274 "Extract files from ZIP archives\n" \4275 "\nOptions:" \4276 "\n -l List archive contents (with -q for short form)" \4277 "\n -n Never overwrite files (default)" \4278 "\n -o Overwrite" \4279 "\n -p Send output to stdout" \4280 "\n -q Quiet" \4281 "\n -x XLST Exclude these files" \4282 "\n -d DIR Extract files into DIR" \4283 4284 #define uptime_trivial_usage \4285 ""4286 #define uptime_full_usage "\n\n" \4287 "Display the time since the last boot"4288 4289 #define uptime_example_usage \4290 "$ uptime\n" \4291 " 1:55pm up 2:30, load average: 0.09, 0.04, 0.00\n"4292 4293 #define usleep_trivial_usage \4294 "N"4295 #define usleep_full_usage "\n\n" \4296 "Pause for N microseconds"4297 4298 #define usleep_example_usage \4299 "$ usleep 1000000\n" \4300 "[pauses for 1 second]\n"4301 4302 #define uudecode_trivial_usage \4303 "[-o OUTFILE] [INFILE]"4304 #define uudecode_full_usage "\n\n" \4305 "Uudecode a file\n" \4306 "Finds outfile name in uuencoded source unless -o is given"4307 4308 #define uudecode_example_usage \4309 "$ uudecode -o busybox busybox.uu\n" \4310 "$ ls -l busybox\n" \4311 "-rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox\n"4312 4313 #define uuencode_trivial_usage \4314 "[-m] [INFILE] STORED_FILENAME"4315 #define uuencode_full_usage "\n\n" \4316 "Uuencode a file to stdout\n" \4317 "\nOptions:" \4318 "\n -m Use base64 encoding per RFC1521" \4319 4320 #define uuencode_example_usage \4321 "$ uuencode busybox busybox\n" \4322 "begin 755 busybox\n" \4323 "<encoded file snipped>\n" \4324 "$ uudecode busybox busybox > busybox.uu\n" \4325 "$\n"4326 4327 #define vconfig_trivial_usage \4328 "COMMAND [OPTIONS]"4329 #define vconfig_full_usage "\n\n" \4330 "Create and remove virtual ethernet devices\n" \4331 "\nOptions:" \4332 "\n add [interface-name] [vlan_id]" \4333 "\n rem [vlan-name]" \4334 "\n set_flag [interface-name] [flag-num] [0 | 1]" \4335 "\n set_egress_map [vlan-name] [skb_priority] [vlan_qos]" \4336 "\n set_ingress_map [vlan-name] [skb_priority] [vlan_qos]" \4337 "\n set_name_type [name-type]" \4338 4339 #define vi_trivial_usage \4340 "[OPTIONS] [FILE]..."4341 #define vi_full_usage "\n\n" \4342 "Edit FILE\n" \4343 "\nOptions:" \4344 IF_FEATURE_VI_COLON( \4345 "\n -c Initial command to run ($EXINIT also available)" \4346 ) \4347 IF_FEATURE_VI_READONLY( \4348 "\n -R Read-only" \4349 ) \4350 "\n -H Short help regarding available features" \4351 4352 #define vlock_trivial_usage \4353 "[-a]"4354 #define vlock_full_usage "\n\n" \4355 "Lock a virtual terminal. A password is required to unlock.\n" \4356 "\nOptions:" \4357 "\n -a Lock all VTs" \4358 4359 #define volname_trivial_usage \4360 "[DEVICE]"4361 #define volname_full_usage "\n\n" \4362 "Show CD volume name of the DEVICE (default /dev/cdrom)"4363 4364 #define wall_trivial_usage \4365 "[FILE]"4366 #define wall_full_usage "\n\n" \4367 "Write content of FILE or stdin to all logged-in users"4368 #define wall_sample_usage \4369 "echo foo | wall\n" \4370 "wall ./mymessage"4371 4372 #define watch_trivial_usage \4373 "[-n SEC] [-t] PROG ARGS"4374 #define watch_full_usage "\n\n" \4375 "Run PROG periodically\n" \4376 "\nOptions:" \4377 "\n -n Loop period in seconds (default 2)" \4378 "\n -t Don't print header" \4379 4380 #define watch_example_usage \4381 "$ watch date\n" \4382 "Mon Dec 17 10:31:40 GMT 2000\n" \4383 "Mon Dec 17 10:31:42 GMT 2000\n" \4384 "Mon Dec 17 10:31:44 GMT 2000"4385 4386 #define watchdog_trivial_usage \4387 "[-t N[ms]] [-T N[ms]] [-F] DEV"4388 #define watchdog_full_usage "\n\n" \4389 "Periodically write to watchdog device DEV\n" \4390 "\nOptions:" \4391 "\n -T N Reboot after N seconds if not reset (default 60)" \4392 "\n -t N Reset every N seconds (default 30)" \4393 "\n -F Run in foreground" \4394 "\n" \4395 "\nUse 500ms to specify period in milliseconds" \4396 4397 #define wget_trivial_usage \4398 IF_FEATURE_WGET_LONG_OPTIONS( \4399 "[-c|--continue] [-s|--spider] [-q|--quiet] [-O|--output-document FILE]\n" \4400 " [--header 'header: value'] [-Y|--proxy on/off] [-P DIR]\n" \4401 " [--no-check-certificate] [-U|--user-agent AGENT]" \4402 IF_FEATURE_WGET_TIMEOUT("[-T SEC] ") " URL" \4403 ) \4404 IF_NOT_FEATURE_WGET_LONG_OPTIONS( \4405 "[-csq] [-O FILE] [-Y on/off] [-P DIR] [-U AGENT]" \4406 IF_FEATURE_WGET_TIMEOUT("[-T SEC] ") " URL" \4407 )4408 #define wget_full_usage "\n\n" \4409 "Retrieve files via HTTP or FTP\n" \4410 "\nOptions:" \4411 "\n -s Spider mode - only check file existence" \4412 "\n -c Continue retrieval of aborted transfer" \4413 "\n -q Quiet" \4414 "\n -P DIR Save to DIR (default .)" \4415 IF_FEATURE_WGET_TIMEOUT( \4416 "\n -T SEC Network read timeout is SEC seconds" \4417 ) \4418 "\n -O FILE Save to FILE ('-' for stdout)" \4419 "\n -U STR Use STR for User-Agent header" \4420 "\n -Y Use proxy ('on' or 'off')" \4421 4422 #define which_trivial_usage \4423 "[COMMAND]..."4424 #define which_full_usage "\n\n" \4425 "Locate a COMMAND"4426 #define which_example_usage \4427 "$ which login\n" \4428 "/bin/login\n"4429 4430 #define who_trivial_usage \4431 "[-a]"4432 #define who_full_usage "\n\n" \4433 "Show who is logged on\n" \4434 "\nOptions:" \4435 "\n -a Show all" \4436 4437 #define whoami_trivial_usage \4438 ""4439 #define whoami_full_usage "\n\n" \4440 "Print the user name associated with the current effective user id"4441 4442 #define zcat_trivial_usage \4443 "FILE"4444 #define zcat_full_usage "\n\n" \4445 "Decompress to stdout"4446 4447 #define zcip_trivial_usage \4448 "[OPTIONS] IFACE SCRIPT"4449 #define zcip_full_usage "\n\n" \4450 "Manage a ZeroConf IPv4 link-local address\n" \4451 "\nOptions:" \4452 "\n -f Run in foreground" \4453 "\n -q Quit after obtaining address" \4454 "\n -r 169.254.x.x Request this address first" \4455 "\n -v Verbose" \4456 "\n" \4457 "\nWith no -q, runs continuously monitoring for ARP conflicts," \4458 "\nexits only on I/O errors (link down etc)" \4459 4460 4461 #endif -
branches/3.2/mindi-busybox/include/volume_id.h
r2725 r3232 21 21 char *get_devname_from_label(const char *spec); 22 22 char *get_devname_from_uuid(const char *spec); 23 void display_uuid_cache( void);23 void display_uuid_cache(int scan_devices); 24 24 25 25 /* Returns: … … 29 29 */ 30 30 int resolve_mount_spec(char **fsname); 31 int add_to_uuid_cache(const char *device); -
branches/3.2/mindi-busybox/include/xatonum.h
r2725 r3232 169 169 return BUG_bb_strtou32_unimplemented(); 170 170 } 171 static ALWAYS_INLINE 172 int32_t bb_strtoi32(const char *arg, char **endp, int base) 173 { 174 if (sizeof(int32_t) == sizeof(int)) 175 return bb_strtoi(arg, endp, base); 176 if (sizeof(int32_t) == sizeof(long)) 177 return bb_strtol(arg, endp, base); 178 return BUG_bb_strtou32_unimplemented(); 179 } 171 180 172 181 /* Floating point */
Note:
See TracChangeset
for help on using the changeset viewer.