3
0

usage.h 109 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193
  1. #ifndef __BB_USAGE_H__
  2. #define __BB_USAGE_H__
  3. #define addgroup_trivial_usage \
  4. "[-g GID] group_name [user_name]"
  5. #define addgroup_full_usage \
  6. "Adds a group to the system\n\n" \
  7. "Options:\n" \
  8. "\t-g GID\t\tspecify gid"
  9. #define adduser_trivial_usage \
  10. "[OPTIONS] user_name"
  11. #define adduser_full_usage \
  12. "Adds a user to the system\n\n" \
  13. "Options:\n" \
  14. "\t-h DIR\t\tAssign home directory DIR\n" \
  15. "\t-g GECOS\tAssign gecos field GECOS\n" \
  16. "\t-s SHELL\tAssign login shell SHELL\n" \
  17. "\t-G\t\tAdd the user to existing group GROUP\n" \
  18. "\t-S\t\tcreate a system user (ignored)\n" \
  19. "\t-D\t\tDo not assign a password (logins still possible via ssh)\n" \
  20. "\t-H\t\tDo not create the home directory"
  21. #define adjtimex_trivial_usage \
  22. "[-q] [-o offset] [-f frequency] [-p timeconstant] [-t tick]"
  23. #define adjtimex_full_usage \
  24. "Reads and optionally sets system timebase parameters.\n" \
  25. "See adjtimex(2).\n\n" \
  26. "Options:\n" \
  27. "\t-q\t\tquiet mode - do not print\n" \
  28. "\t-o offset\ttime offset, microseconds\n" \
  29. "\t-f frequency\tfrequency adjust, integer kernel units (65536 is 1ppm)\n" \
  30. "\t\t\t(positive values make the system clock run fast)\n" \
  31. "\t-t tick\t\tmicroseconds per tick, usually 10000\n" \
  32. "\t-p timeconstant"
  33. #define ar_trivial_usage \
  34. "[-o] [-v] [-p] [-t] [-x] ARCHIVE FILES"
  35. #define ar_full_usage \
  36. "Extract or list FILES from an ar archive.\n\n" \
  37. "Options:\n" \
  38. "\t-o\t\tpreserve original dates\n" \
  39. "\t-p\t\textract to stdout\n" \
  40. "\t-t\t\tlist\n" \
  41. "\t-x\t\textract\n" \
  42. "\t-v\t\tverbosely list files processed"
  43. #define arping_trivial_usage \
  44. "[-fqbDUA] [-c count] [-w timeout] [-I device] [-s sender] target"
  45. #define arping_full_usage \
  46. "Ping hosts by ARP requests/replies.\n\n" \
  47. "Options:\n" \
  48. "\t-f\t\tQuit on first ARP reply\n" \
  49. "\t-q\t\tBe quiet\n" \
  50. "\t-b\t\tKeep broadcasting, don't go unicast\n" \
  51. "\t-D\t\tDuplicated address detection mode\n" \
  52. "\t-U\t\tUnsolicited ARP mode, update your neighbours\n" \
  53. "\t-A\t\tARP answer mode, update your neighbours\n" \
  54. "\t-c count\tStop after sending count ARP request packets\n" \
  55. "\t-w timeout\tTime to wait for ARP reply, in seconds\n" \
  56. "\t-I device\tOutgoing interface name, default is eth0\n" \
  57. "\t-s sender\tSet specific sender IP address\n" \
  58. "\ttarget\t\tTarget IP address of ARP request"
  59. #define ash_trivial_usage \
  60. "[FILE]...\n" \
  61. "or: ash -c command [args]..."
  62. #define ash_full_usage \
  63. "The ash shell (command interpreter)"
  64. #define awk_trivial_usage \
  65. "[OPTION]... [program-text] [FILE ...]"
  66. #define awk_full_usage \
  67. "Options:\n" \
  68. "\t-v var=val\t\tassign value 'val' to variable 'var'\n" \
  69. "\t-F sep\t\tuse 'sep' as field separator\n" \
  70. "\t-f progname\t\tread program source from file 'progname'"
  71. #define basename_trivial_usage \
  72. "FILE [SUFFIX]"
  73. #define basename_full_usage \
  74. "Strips directory path and suffixes from FILE.\n" \
  75. "If specified, also removes any trailing SUFFIX."
  76. #define basename_example_usage \
  77. "$ basename /usr/local/bin/foo\n" \
  78. "foo\n" \
  79. "$ basename /usr/local/bin/\n" \
  80. "bin\n" \
  81. "$ basename /foo/bar.txt .txt\n" \
  82. "bar"
  83. #define bunzip2_trivial_usage \
  84. "[OPTION]... [FILE]"
  85. #define bunzip2_full_usage \
  86. "Uncompress FILE (or standard input if FILE is '-' or omitted).\n\n" \
  87. "Options:\n" \
  88. "\t-c\tWrite output to standard output\n" \
  89. "\t-f\tForce"
  90. #define bzcat_trivial_usage \
  91. "FILE"
  92. #define bzcat_full_usage \
  93. "Uncompress to stdout."
  94. #define cal_trivial_usage \
  95. "[-jy] [[month] year]"
  96. #define cal_full_usage \
  97. "Display a calendar.\n" \
  98. "\nOptions:\n" \
  99. "\t-j\tUse julian dates\n" \
  100. "\t-y\tDisplay the entire year"
  101. #define cat_trivial_usage \
  102. "[-u] [FILE]..."
  103. #define cat_full_usage \
  104. "Concatenates FILE(s) and prints them to stdout.\n\n" \
  105. "Options:\n" \
  106. "\t-u\tignored since unbuffered i/o is always used"
  107. #define cat_example_usage \
  108. "$ cat /proc/uptime\n" \
  109. "110716.72 17.67"
  110. #define chattr_trivial_usage \
  111. "[-R] [-+=AacDdijsStTu] [-v version] files..."
  112. #define chattr_full_usage \
  113. "change file attributes on an ext2 fs\n\n" \
  114. "Modifiers:\n" \
  115. "\t-\tremove attributes\n" \
  116. "\t+\tadd attributes\n" \
  117. "\t=\tset attributes\n" \
  118. "Attributes:\n" \
  119. "\tA\tdon't track atime\n" \
  120. "\ta\tappend mode only\n" \
  121. "\tc\tenable compress\n" \
  122. "\tD\twrite dir contents synchronously\n" \
  123. "\td\tdo not backup with dump\n" \
  124. "\ti\tcannot be modified (immutable)\n" \
  125. "\tj\twrite all data to journal first\n" \
  126. "\ts\tzero disk storage when deleted\n" \
  127. "\tS\twrite file contents synchronously\n" \
  128. "\tt\tdisable tail-merging of partial blocks with other files\n" \
  129. "\tu\tallow file to be undeleted\n" \
  130. "Options:\n" \
  131. "\t-R\trecursively list subdirectories\n" \
  132. "\t-v\tset the file's version/generation number"
  133. #define chgrp_trivial_usage \
  134. "[OPTION]... GROUP FILE..."
  135. #define chgrp_full_usage \
  136. "Change the group membership of each FILE to GROUP.\n" \
  137. "\nOptions:\n" \
  138. "\t-R\tChanges files and directories recursively"
  139. #define chgrp_example_usage \
  140. "$ ls -l /tmp/foo\n" \
  141. "-r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo\n" \
  142. "$ chgrp root /tmp/foo\n" \
  143. "$ ls -l /tmp/foo\n" \
  144. "-r--r--r-- 1 andersen root 0 Apr 12 18:25 /tmp/foo\n"
  145. #define chmod_trivial_usage \
  146. "[-R] MODE[,MODE]... FILE..."
  147. #define chmod_full_usage \
  148. "Each MODE is one or more of the letters ugoa, one of the\n" \
  149. "symbols +-= and one or more of the letters rwxst.\n\n" \
  150. "Options:\n" \
  151. "\t-R\tChanges files and directories recursively"
  152. #define chmod_example_usage \
  153. "$ ls -l /tmp/foo\n" \
  154. "-rw-rw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo\n" \
  155. "$ chmod u+x /tmp/foo\n" \
  156. "$ ls -l /tmp/foo\n" \
  157. "-rwxrw-r-- 1 root root 0 Apr 12 18:25 /tmp/foo*\n" \
  158. "$ chmod 444 /tmp/foo\n" \
  159. "$ ls -l /tmp/foo\n" \
  160. "-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo\n"
  161. #define chown_trivial_usage \
  162. "[ -Rh ]... OWNER[<.|:>[GROUP]] FILE..."
  163. #define chown_full_usage \
  164. "Change the owner and/or group of each FILE to OWNER and/or GROUP.\n" \
  165. "\nOptions:\n" \
  166. "\t-R\tChanges files and directories recursively\n" \
  167. "\t-h\tDo not dereference symbolic links"
  168. #define chown_example_usage \
  169. "$ ls -l /tmp/foo\n" \
  170. "-r--r--r-- 1 andersen andersen 0 Apr 12 18:25 /tmp/foo\n" \
  171. "$ chown root /tmp/foo\n" \
  172. "$ ls -l /tmp/foo\n" \
  173. "-r--r--r-- 1 root andersen 0 Apr 12 18:25 /tmp/foo\n" \
  174. "$ chown root.root /tmp/foo\n" \
  175. "ls -l /tmp/foo\n" \
  176. "-r--r--r-- 1 root root 0 Apr 12 18:25 /tmp/foo\n"
  177. #define chroot_trivial_usage \
  178. "NEWROOT [COMMAND...]"
  179. #define chroot_full_usage \
  180. "Run COMMAND with root directory set to NEWROOT."
  181. #define chroot_example_usage \
  182. "$ ls -l /bin/ls\n" \
  183. "lrwxrwxrwx 1 root root 12 Apr 13 00:46 /bin/ls -> /BusyBox\n" \
  184. "# mount /dev/hdc1 /mnt -t minix\n" \
  185. "# chroot /mnt\n" \
  186. "# ls -l /bin/ls\n" \
  187. "-rwxr-xr-x 1 root root 40816 Feb 5 07:45 /bin/ls*\n"
  188. #define chvt_trivial_usage \
  189. "N"
  190. #define chvt_full_usage \
  191. "Changes the foreground virtual terminal to /dev/ttyN"
  192. #define clear_trivial_usage \
  193. ""
  194. #define clear_full_usage \
  195. "Clear screen."
  196. #define cmp_trivial_usage \
  197. "[-l] [-s] FILE1 [FILE2]"
  198. #define cmp_full_usage \
  199. "Compares FILE1 vs stdin if FILE2 is not specified.\n\n" \
  200. "Options:\n" \
  201. "\t-l\tWrite the byte numbers (decimal) and values (octal)\n" \
  202. "\t\t for all differing bytes\n" \
  203. "\t-s\tquiet mode - do not print"
  204. #define comm_trivial_usage \
  205. "[-123] FILE1 FILE2"
  206. #define comm_full_usage \
  207. "Compares FILE1 to FILE2, or to stdin if = is specified.\n\n" \
  208. "Options:\n" \
  209. "\t-1\tSuppress lines unique to FILE1\n" \
  210. "\t-2\tSuppress lines unique to FILE2\n" \
  211. "\t-3\tSuppress lines common to both files"
  212. #define cp_trivial_usage \
  213. "[OPTION]... SOURCE DEST"
  214. #define cp_full_usage \
  215. "Copies SOURCE to DEST, or multiple SOURCE(s) to DIRECTORY.\n" \
  216. "\n" \
  217. "\t-a\tSame as -dpR\n" \
  218. "\t-d,-P\tPreserves links\n" \
  219. "\t-H,-L\tDereference all symlinks (implied by default)\n" \
  220. "\t-p\tPreserves file attributes if possible\n" \
  221. "\t-f\tforce (implied; ignored) - always set\n" \
  222. "\t-i\tinteractive, prompt before overwrite\n" \
  223. "\t-R,-r\tCopies directories recursively"
  224. #define cpio_trivial_usage \
  225. "-[dimtuv][F cpiofile]"
  226. #define cpio_full_usage \
  227. "Extract or list files from a cpio archive\n" \
  228. "Main operation mode:\n" \
  229. "\td\t\tmake leading directories\n" \
  230. "\ti\t\textract\n" \
  231. "\tm\t\tpreserve mtime\n" \
  232. "\tt\t\tlist\n" \
  233. "\tv\t\tverbose\n" \
  234. "\tu\t\tunconditional overwrite\n" \
  235. "\tF\t\tinput from file"
  236. #define crond_trivial_usage \
  237. "-d[#] -c <crondir> -f -b"
  238. #define crond_full_usage \
  239. "\t-d [#] -l [#] -S -L logfile -f -b -c dir\n" \
  240. "\t-d num\tdebug level\n" \
  241. "\t-l num\tlog level (8 - default)\n" \
  242. "\t-S\tlog to syslogd (default)\n" \
  243. "\t-L file\tlog to file\n" \
  244. "\t-f\trun in fordeground\n" \
  245. "\t-b\trun in background (default)\n" \
  246. "\t-c dir\tworking dir"
  247. #define crontab_trivial_usage \
  248. "[-c dir] {file|-}|[-u|-l|-e|-d user]"
  249. #define crontab_full_usage \
  250. "\tfile <opts> replace crontab from file\n" \
  251. "\t- <opts> replace crontab from stdin\n" \
  252. "\t-u user specify user\n" \
  253. "\t-l [user] list crontab for user\n" \
  254. "\t-e [user] edit crontab for user\n" \
  255. "\t-d [user] delete crontab for user\n" \
  256. "\t-c dir specify crontab directory"
  257. #define cut_trivial_usage \
  258. "[OPTION]... [FILE]..."
  259. #define cut_full_usage \
  260. "Prints selected fields from each input FILE to standard output.\n\n" \
  261. "Options:\n" \
  262. "\t-b LIST\t\tOutput only bytes from LIST\n" \
  263. "\t-c LIST\t\tOutput only characters from LIST\n" \
  264. "\t-d CHAR\t\tUse CHAR instead of tab as the field delimiter\n" \
  265. "\t-s\t\tOutput only the lines containing delimiter\n" \
  266. "\t-f N\t\tPrint only these fields\n" \
  267. "\t-n\t\tIgnored"
  268. #define cut_example_usage \
  269. "$ echo \"Hello world\" | cut -f 1 -d ' '\n" \
  270. "Hello\n" \
  271. "$ echo \"Hello world\" | cut -f 2 -d ' '\n" \
  272. "world\n"
  273. #ifdef CONFIG_FEATURE_DATE_ISOFMT
  274. #define USAGE_DATE_ISOFMT(a) a
  275. #else
  276. #define USAGE_DATE_ISOFMT(a)
  277. #endif
  278. #define date_trivial_usage \
  279. "[OPTION]... [MMDDhhmm[[CC]YY][.ss]] [+FORMAT]"
  280. #define date_full_usage \
  281. "Displays the current time in the given FORMAT, or sets the system date.\n" \
  282. "\nOptions:\n" \
  283. "\t-R\t\tOutputs RFC-822 compliant date string\n" \
  284. "\t-d STRING\tDisplays time described by STRING, not `now'\n" \
  285. USAGE_DATE_ISOFMT("\t-I[TIMESPEC]\tOutputs an ISO-8601 compliant date/time string\n" \
  286. "\t\t\tTIMESPEC=`date' (or missing) for date only,\n" \
  287. "\t\t\t`hours', `minutes', or `seconds' for date and,\n" \
  288. "\t\t\ttime to the indicated precision\n") \
  289. "\t-s\t\tSets time described by STRING\n" \
  290. "\t-r FILE\t\tDisplays the last modification time of FILE\n" \
  291. "\t-u\t\tPrints or sets Coordinated Universal Time"
  292. #define date_example_usage \
  293. "$ date\n" \
  294. "Wed Apr 12 18:52:41 MDT 2000\n"
  295. #define dc_trivial_usage \
  296. "expression ..."
  297. #define dc_full_usage \
  298. "This is a Tiny RPN calculator that understands the\n" \
  299. "following operations: +, add, -, sub, *, mul, /, div, %, mod, " \
  300. "**, exp, and, or, not, eor.\n" \
  301. "For example: 'dc 2 2 add' -> 4, and 'dc 8 8 \\* 2 2 + /' -> 16.\n" \
  302. "\nOptions:\n" \
  303. "p - Prints the value on the top of the stack, without altering the stack\n" \
  304. "f - Prints the entire contents of the stack without altering anything\n" \
  305. "o - Pops the value off the top of the stack and uses it to set the output radix\n" \
  306. " Only 10 and 16 are supported"
  307. #define dc_example_usage \
  308. "$ dc 2 2 + p\n" \
  309. "4\n" \
  310. "$ dc 8 8 \\* 2 2 + / p\n" \
  311. "16\n" \
  312. "$ dc 0 1 and p\n" \
  313. "0\n" \
  314. "$ dc 0 1 or p\n" \
  315. "1\n" \
  316. "$ echo 72 9 div 8 mul p | dc\n" \
  317. "64\n"
  318. #define dd_trivial_usage \
  319. "[if=FILE] [of=FILE] [bs=N] [count=N] [skip=N]\n" \
  320. "\t [seek=N] [conv=notrunc|noerror|sync]"
  321. #define dd_full_usage \
  322. "Copy a file, converting and formatting according to options\n\n" \
  323. "\tif=FILE\t\tread from FILE instead of stdin\n" \
  324. "\tof=FILE\t\twrite to FILE instead of stdout\n" \
  325. "\tbs=N\t\tread and write N bytes at a time\n" \
  326. "\tcount=N\t\tcopy only N input blocks\n" \
  327. "\tskip=N\t\tskip N input blocks\n" \
  328. "\tseek=N\t\tskip N output blocks\n" \
  329. "\tconv=notrunc\tdon't truncate output file\n" \
  330. "\tconv=noerror\tcontinue after read errors\n" \
  331. "\tconv=sync\tpad blocks with zeros\n" \
  332. "\n" \
  333. "Numbers may be suffixed by c (x1), w (x2), b (x512), kD (x1000), k (x1024),\n" \
  334. "MD (x1000000), M (x1048576), GD (x1000000000) or G (x1073741824)"
  335. #define dd_example_usage \
  336. "$ dd if=/dev/zero of=/dev/ram1 bs=1M count=4\n" \
  337. "4+0 records in\n" \
  338. "4+0 records out\n"
  339. #define deallocvt_trivial_usage \
  340. "[N]"
  341. #define deallocvt_full_usage \
  342. "Deallocate unused virtual terminal /dev/ttyN"
  343. #define delgroup_trivial_usage \
  344. "GROUP"
  345. #define delgroup_full_usage \
  346. "Deletes group GROUP from the system"
  347. #define deluser_trivial_usage \
  348. "USER"
  349. #define deluser_full_usage \
  350. "Deletes user USER from the system"
  351. #ifdef CONFIG_DEVFSD_FG_NP
  352. # define USAGE_DEVFSD_FG_NP(a) a
  353. #else
  354. # define USAGE_DEVFSD_FG_NP(a)
  355. #endif
  356. #define devfsd_trivial_usage \
  357. "mntpnt [-v]" \
  358. USAGE_DEVFSD_FG_NP("[-fg][-np]" )
  359. #define devfsd_full_usage \
  360. "Optional daemon for managing devfs permissions and old device name symlinks.\n" \
  361. "\nOptions:\n" \
  362. "\tmntpnt\tThe mount point where devfs is mounted.\n\n" \
  363. "\t-v\tPrint the protocol version numbers for devfsd\n" \
  364. "\t\tand the kernel-side protocol version and exits." \
  365. USAGE_DEVFSD_FG_NP( "\n\n\t-fg\tRun the daemon in the foreground.\n\n" \
  366. "\t-np\tExit after parsing the configuration file\n" \
  367. "\t\tand processing synthetic REGISTER events.\n" \
  368. "\t\tDo not poll for events.")
  369. #ifdef CONFIG_FEATURE_HUMAN_READABLE
  370. # define USAGE_HUMAN_READABLE(a) a
  371. # define USAGE_NOT_HUMAN_READABLE(a)
  372. #else
  373. # define USAGE_HUMAN_READABLE(a)
  374. # define USAGE_NOT_HUMAN_READABLE(a) a
  375. #endif
  376. #define df_trivial_usage \
  377. "[-" USAGE_HUMAN_READABLE("hm") USAGE_NOT_HUMAN_READABLE("") "k] [FILESYSTEM ...]"
  378. #define df_full_usage \
  379. "Print the filesystem space used and space available.\n\n" \
  380. "Options:\n" \
  381. USAGE_HUMAN_READABLE( \
  382. "\n\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \
  383. "\t-m\tprint sizes in megabytes\n" \
  384. "\t-k\tprint sizes in kilobytes(default)") USAGE_NOT_HUMAN_READABLE( \
  385. "\n\t-k\tprint sizes in kilobytes(compatibility)")
  386. #define df_example_usage \
  387. "$ df\n" \
  388. "Filesystem 1k-blocks Used Available Use% Mounted on\n" \
  389. "/dev/sda3 8690864 8553540 137324 98% /\n" \
  390. "/dev/sda1 64216 36364 27852 57% /boot\n" \
  391. "$ df /dev/sda3\n" \
  392. "Filesystem 1k-blocks Used Available Use% Mounted on\n" \
  393. "/dev/sda3 8690864 8553540 137324 98% /\n"
  394. #define dirname_trivial_usage \
  395. "FILENAME"
  396. #define dirname_full_usage \
  397. "Strips non-directory suffix from FILENAME"
  398. #define dirname_example_usage \
  399. "$ dirname /tmp/foo\n" \
  400. "/tmp\n" \
  401. "$ dirname /tmp/foo/\n" \
  402. "/tmp\n"
  403. #define dmesg_trivial_usage \
  404. "[-c] [-n LEVEL] [-s SIZE]"
  405. #define dmesg_full_usage \
  406. "Prints or controls the kernel ring buffer\n\n" \
  407. "Options:\n" \
  408. "\t-c\t\tClears the ring buffer's contents after printing\n" \
  409. "\t-n LEVEL\tSets console logging level\n" \
  410. "\t-s SIZE\t\tUse a buffer of size SIZE"
  411. #define dos2unix_trivial_usage \
  412. "[option] [FILE]"
  413. #define dos2unix_full_usage \
  414. "Converts FILE from dos format to unix format. When no option\n" \
  415. "is given, the input is converted to the opposite output format.\n" \
  416. "When no file is given, uses stdin for input and stdout for output.\n\n" \
  417. "Options:\n" \
  418. "\t-u\toutput will be in UNIX format\n" \
  419. "\t-d\toutput will be in DOS format"
  420. #define dpkg_trivial_usage \
  421. "[-ilCPru] [-F option] package_name"
  422. #define dpkg_full_usage \
  423. "dpkg is a utility to install, remove and manage Debian packages.\n\n" \
  424. "Options:\n" \
  425. "\t-i\t\tInstall the package\n" \
  426. "\t-l\t\tList of installed packages\n" \
  427. "\t-C\t\tConfigure an unpackaged package\n" \
  428. "\t-F depends\tIgnore depency problems\n" \
  429. "\t-P\t\tPurge all files of a package\n" \
  430. "\t-r\t\tRemove all but the configuration files for a package\n" \
  431. "\t-u\t\tUnpack a package, but don't configure it"
  432. #define dpkg_deb_trivial_usage \
  433. "[-cefxX] FILE [argument]"
  434. #define dpkg_deb_full_usage \
  435. "Perform actions on Debian packages (.debs)\n\n" \
  436. "Options:\n" \
  437. "\t-c\tList contents of filesystem tree\n" \
  438. "\t-e\tExtract control files to [argument] directory\n" \
  439. "\t-f\tDisplay control field name starting with [argument]\n" \
  440. "\t-x\tExtract packages filesystem tree to directory\n" \
  441. "\t-X\tVerbose extract"
  442. #define dpkg_deb_example_usage \
  443. "$ dpkg-deb -X ./busybox_0.48-1_i386.deb /tmp\n"
  444. #ifdef CONFIG_FEATURE_DU_DEFALT_BLOCKSIZE_1K
  445. #define USAGE_DU_DEFALT_BLOCKSIZE_1k(a) a
  446. #define USAGE_NOT_DU_DEFALT_BLOCKSIZE_1k(a)
  447. #else
  448. #define USAGE_DU_DEFALT_BLOCKSIZE_1k(a)
  449. #define USAGE_NOT_DU_DEFALT_BLOCKSIZE_1k(a) a
  450. #endif
  451. #define du_trivial_usage \
  452. "[-aHLdclsx" USAGE_HUMAN_READABLE("hm") "k] [FILE]..."
  453. #define du_full_usage \
  454. "Summarizes disk space used for each FILE and/or directory.\n" \
  455. "Disk space is printed in units of " \
  456. USAGE_DU_DEFALT_BLOCKSIZE_1k("1024") USAGE_NOT_DU_DEFALT_BLOCKSIZE_1k("512") \
  457. " bytes.\n\n" \
  458. "Options:\n" \
  459. "\t-a\tshow sizes of files in addition to directories\n" \
  460. "\t-H\tfollow symbolic links that are FILE command line args\n" \
  461. "\t-L\tfollow all symbolic links encountered\n" \
  462. "\t-d N\tlimit output to directories (and files with -a) of depth < N\n" \
  463. "\t-c\toutput a grand total\n" \
  464. "\t-l\tcount sizes many times if hard linked\n" \
  465. "\t-s\tdisplay only a total for each argument\n" \
  466. "\t-x\tskip directories on different filesystems\n" \
  467. USAGE_HUMAN_READABLE( \
  468. "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n" \
  469. "\t-m\tprint sizes in megabytes\n" ) \
  470. "\t-k\tprint sizes in kilobytes" USAGE_DU_DEFALT_BLOCKSIZE_1k("(default)")
  471. #define du_example_usage \
  472. "$ du\n" \
  473. "16 ./CVS\n" \
  474. "12 ./kernel-patches/CVS\n" \
  475. "80 ./kernel-patches\n" \
  476. "12 ./tests/CVS\n" \
  477. "36 ./tests\n" \
  478. "12 ./scripts/CVS\n" \
  479. "16 ./scripts\n" \
  480. "12 ./docs/CVS\n" \
  481. "104 ./docs\n" \
  482. "2417 .\n"
  483. #define dumpkmap_trivial_usage \
  484. "> keymap"
  485. #define dumpkmap_full_usage \
  486. "Prints out a binary keyboard translation table to standard output."
  487. #define dumpkmap_example_usage \
  488. "$ dumpkmap > keymap\n"
  489. #define dumpleases_trivial_usage \
  490. "[-r|-a] [-f LEASEFILE]"
  491. #define dumpleases_full_usage \
  492. "Displays the DHCP leases granted by udhcpd.\n\n" \
  493. "Options:\n" \
  494. "\t-f,\t--file=FILENAME\tLeases file to load\n" \
  495. "\t-r,\t--remaining\tInterpret lease times as time remaing\n" \
  496. "\t-a,\t--absolute\tInterpret lease times as expire time"
  497. #ifdef CONFIG_FEATURE_FANCY_ECHO
  498. # define USAGE_FANCY_ECHO(a) a
  499. #else
  500. # define USAGE_FANCY_ECHO(a)
  501. #endif
  502. #define echo_trivial_usage \
  503. USAGE_FANCY_ECHO("[-neE] ") "[ARG ...]"
  504. #define echo_full_usage \
  505. "Prints the specified ARGs to stdout\n\n" \
  506. USAGE_FANCY_ECHO("Options:\n" \
  507. "\t-n\tsuppress trailing newline\n" \
  508. "\t-e\tinterpret backslash-escaped characters (i.e., \\t=tab)\n" \
  509. "\t-E\tdisable interpretation of backslash-escaped characters")
  510. #define echo_example_usage \
  511. "$ echo \"Erik is cool\"\n" \
  512. "Erik is cool\n" \
  513. USAGE_FANCY_ECHO("$ echo -e \"Erik\\nis\\ncool\"\n" \
  514. "Erik\n" \
  515. "is\n" \
  516. "cool\n" \
  517. "$ echo \"Erik\\nis\\ncool\"\n" \
  518. "Erik\\nis\\ncool\n")
  519. #define eject_trivial_usage \
  520. "[-t] [DEVICE]"
  521. #define eject_full_usage \
  522. "Eject specified DEVICE (or default /dev/cdrom).\n\n" \
  523. "Options:\n" \
  524. "\t-t\tclose tray"
  525. #define env_trivial_usage \
  526. "[-iu] [-] [name=value]... [command]"
  527. #define env_full_usage \
  528. "Prints the current environment or runs a program after setting\n" \
  529. "up the specified environment.\n\n" \
  530. "Options:\n" \
  531. "\t-, -i\tstart with an empty environment\n" \
  532. "\t-u\tremove variable from the environment"
  533. #define ether_wake_trivial_usage \
  534. "[-b] [-i iface] [-p aa:bb:cc:dd[:ee:ff]] MAC"
  535. #define ether_wake_full_usage \
  536. "Send a magic packet to wake up sleeping machines.\n" \
  537. "MAC must be a station address (00:11:22:33:44:55) or\n" \
  538. " a hostname with a known 'ethers' entry.\n\n" \
  539. "Options:\n" \
  540. "\t-b\t\tSend wake-up packet to the broadcast address\n" \
  541. "\t-i iface\tUse interface ifname instead of the default \"eth0\"\n" \
  542. "\t-p pass\tAppend the four or six byte password PW to the packet\n"
  543. #define expr_trivial_usage \
  544. "EXPRESSION"
  545. #define expr_full_usage \
  546. "Prints the value of EXPRESSION to standard output.\n\n" \
  547. "EXPRESSION may be:\n" \
  548. "\tARG1 | ARG2 ARG1 if it is neither null nor 0, otherwise ARG2\n" \
  549. "\tARG1 & ARG2 ARG1 if neither argument is null or 0, otherwise 0\n" \
  550. "\tARG1 < ARG2 ARG1 is less than ARG2\n" \
  551. "\tARG1 <= ARG2 ARG1 is less than or equal to ARG2\n" \
  552. "\tARG1 = ARG2 ARG1 is equal to ARG2\n" \
  553. "\tARG1 != ARG2 ARG1 is unequal to ARG2\n" \
  554. "\tARG1 >= ARG2 ARG1 is greater than or equal to ARG2\n" \
  555. "\tARG1 > ARG2 ARG1 is greater than ARG2\n" \
  556. "\tARG1 + ARG2 arithmetic sum of ARG1 and ARG2\n" \
  557. "\tARG1 - ARG2 arithmetic difference of ARG1 and ARG2\n" \
  558. "\tARG1 * ARG2 arithmetic product of ARG1 and ARG2\n" \
  559. "\tARG1 / ARG2 arithmetic quotient of ARG1 divided by ARG2\n" \
  560. "\tARG1 % ARG2 arithmetic remainder of ARG1 divided by ARG2\n" \
  561. "\tSTRING : REGEXP anchored pattern match of REGEXP in STRING\n" \
  562. "\tmatch STRING REGEXP same as STRING : REGEXP\n" \
  563. "\tsubstr STRING POS LENGTH substring of STRING, POS counted from 1\n" \
  564. "\tindex STRING CHARS index in STRING where any CHARS is found,\n" \
  565. "\t or 0\n" \
  566. "\tlength STRING length of STRING\n" \
  567. "\tquote TOKEN interpret TOKEN as a string, even if\n" \
  568. "\t it is a keyword like `match' or an\n" \
  569. "\t operator like `/'\n" \
  570. "\t( EXPRESSION ) value of EXPRESSION\n\n" \
  571. "Beware that many operators need to be escaped or quoted for shells.\n" \
  572. "Comparisons are arithmetic if both ARGs are numbers, else\n" \
  573. "lexicographical. Pattern matches return the string matched between \n" \
  574. "\\( and \\) or null; if \\( and \\) are not used, they return the number \n" \
  575. "of characters matched or 0."
  576. #define fakeidentd_trivial_usage \
  577. "[-b ip] [STRING]"
  578. #define fakeidentd_full_usage \
  579. "Returns a set string to auth requests\n\n" \
  580. "\t-b\tBind to ip address\n" \
  581. "\tSTRING\tThe ident answer string (default is nobody)"
  582. #define false_trivial_usage \
  583. ""
  584. #define false_full_usage \
  585. "Return an exit code of FALSE (1)."
  586. #define false_example_usage \
  587. "$ false\n" \
  588. "$ echo $?\n" \
  589. "1\n"
  590. #define fbset_trivial_usage \
  591. "[options] [mode]"
  592. #define fbset_full_usage \
  593. "Show and modify frame buffer settings"
  594. #define fbset_example_usage \
  595. "$ fbset\n" \
  596. "mode \"1024x768-76\"\n" \
  597. "\t# D: 78.653 MHz, H: 59.949 kHz, V: 75.694 Hz\n" \
  598. "\tgeometry 1024 768 1024 768 16\n" \
  599. "\ttimings 12714 128 32 16 4 128 4\n" \
  600. "\taccel false\n" \
  601. "\trgba 5/11,6/5,5/0,0/0\n" \
  602. "endmode\n"
  603. #define fdflush_trivial_usage \
  604. "DEVICE"
  605. #define fdflush_full_usage \
  606. "Forces floppy disk drive to detect disk change"
  607. #define fdformat_trivial_usage \
  608. "[-n] DEVICE"
  609. #define fdformat_full_usage \
  610. "Low-level formats a floppy disk\n\n" \
  611. "Options:\n" \
  612. "\t-n\tDon't verify after format"
  613. #define fdisk_trivial_usage \
  614. "[-luv] [-C CYLINDERS] [-H HEADS] [-S SECTORS] [-b SSZ] DISK"
  615. #define fdisk_full_usage \
  616. "Change partition table\n" \
  617. "Options:\n" \
  618. "\t-l List partition table(s)\n" \
  619. "\t-u Give Start and End in sector (instead of cylinder) units\n" \
  620. "\t-s PARTITION Give partition size(s) in blocks\n" \
  621. "\t-b 2048: (for certain MO disks) use 2048-byte sectors\n" \
  622. "\t-C CYLINDERS Set the number of cylinders\n" \
  623. "\t-H HEADS Set the number of heads\n" \
  624. "\t-S SECTORS Set the number of sectors\n" \
  625. "\t-v Give fdisk version"
  626. #ifdef CONFIG_FEATURE_FIND_TYPE
  627. # define USAGE_FIND_TYPE(a) a
  628. #else
  629. # define USAGE_FIND_TYPE(a)
  630. #endif
  631. #ifdef CONFIG_FEATURE_FIND_PERM
  632. # define USAGE_FIND_PERM(a) a
  633. #else
  634. # define USAGE_FIND_PERM(a)
  635. #endif
  636. #ifdef CONFIG_FEATURE_FIND_MTIME
  637. # define USAGE_FIND_MTIME(a) a
  638. #else
  639. # define USAGE_FIND_MTIME(a)
  640. #endif
  641. #ifdef CONFIG_FEATURE_FIND_NEWER
  642. # define USAGE_FIND_NEWER(a) a
  643. #else
  644. # define USAGE_FIND_NEWER(a)
  645. #endif
  646. #ifdef CONFIG_FEATURE_FIND_INUM
  647. # define USAGE_FIND_INUM(a) a
  648. #else
  649. # define USAGE_FIND_INUM(a)
  650. #endif
  651. #define find_trivial_usage \
  652. "[PATH...] [EXPRESSION]"
  653. #define find_full_usage \
  654. "Search for files in a directory hierarchy. The default PATH is\n" \
  655. "the current directory; default EXPRESSION is '-print'\n" \
  656. "\nEXPRESSION may consist of:\n" \
  657. "\t-follow\t\tDereference symbolic links\n" \
  658. "\t-name PATTERN\tFile name (leading directories removed) matches PATTERN\n" \
  659. "\t-print\t\tPrint (default and assumed)\n" \
  660. USAGE_FIND_TYPE( \
  661. "\n\t-type X\t\tFiletype matches X (where X is one of: f,d,l,b,c,...)" \
  662. ) USAGE_FIND_PERM( \
  663. "\n\t-perm PERMS\tPermissions match any of (+NNN); all of (-NNN);\n\t\t\tor exactly (NNN)" \
  664. ) USAGE_FIND_MTIME( \
  665. "\n\t-mtime TIME\tModified time is greater than (+N); less than (-N);\n\t\t\tor exactly (N) days" \
  666. ) USAGE_FIND_NEWER( \
  667. "\n\t-newer FILE\tModified time is more recent than FILE's" \
  668. ) USAGE_FIND_INUM( \
  669. "\n\t-inum N\t\tFile has inode number N")
  670. #define find_example_usage \
  671. "$ find / -name passwd\n" \
  672. "/etc/passwd\n"
  673. #define fold_trivial_usage \
  674. "[-bsw] [FILE]"
  675. #define fold_full_usage \
  676. "Wrap input lines in each FILE (standard input by default), writing to\n" \
  677. "standard output.\n\n" \
  678. "Options:\n" \
  679. "\t-b\tcount bytes rather than columns\n" \
  680. "\t-s\tbreak at spaces\n" \
  681. "\t-w\tuse WIDTH columns instead of 80"
  682. #define free_trivial_usage \
  683. ""
  684. #define free_full_usage \
  685. "Displays the amount of free and used system memory"
  686. #define free_example_usage \
  687. "$ free\n" \
  688. " total used free shared buffers\n" \
  689. " Mem: 257628 248724 8904 59644 93124\n" \
  690. " Swap: 128516 8404 120112\n" \
  691. "Total: 386144 257128 129016\n" \
  692. #define freeramdisk_trivial_usage \
  693. "DEVICE"
  694. #define freeramdisk_full_usage \
  695. "Frees all memory used by the specified ramdisk."
  696. #define freeramdisk_example_usage \
  697. "$ freeramdisk /dev/ram2\n"
  698. #define fsck_minix_trivial_usage \
  699. "[-larvsmf] /dev/name"
  700. #define fsck_minix_full_usage \
  701. "Performs a consistency check for MINIX filesystems.\n\n" \
  702. "Options:\n" \
  703. "\t-l\tLists all filenames\n" \
  704. "\t-r\tPerform interactive repairs\n" \
  705. "\t-a\tPerform automatic repairs\n" \
  706. "\t-v\tverbose\n" \
  707. "\t-s\tOutputs super-block information\n" \
  708. "\t-m\tActivates MINIX-like \"mode not cleared\" warnings\n" \
  709. "\t-f\tForce file system check"
  710. #define ftpget_trivial_usage \
  711. "[options] remote-host local-file remote-file"
  712. #define ftpget_full_usage \
  713. "Retrieve a remote file via FTP.\n\n" \
  714. "Options:\n" \
  715. "\t-c, --continue Continue a previous transfer\n" \
  716. "\t-v, --verbose Verbose\n" \
  717. "\t-u, --username Username to be used\n" \
  718. "\t-p, --password Password to be used\n" \
  719. "\t-P, --port Port number to be used"
  720. #define ftpput_trivial_usage \
  721. "[options] remote-host remote-file local-file"
  722. #define ftpput_full_usage \
  723. "Store a local file on a remote machine via FTP.\n\n" \
  724. "Options:\n" \
  725. "\t-v, --verbose Verbose\n" \
  726. "\t-u, --username Username to be used\n" \
  727. "\t-p, --password Password to be used\n" \
  728. "\t-P, --port Port number to be used"
  729. #define getopt_trivial_usage \
  730. "[OPTIONS]..."
  731. #define getopt_full_usage \
  732. "Parse command options\n" \
  733. "\t-a, --alternative Allow long options starting with single -\n" \
  734. "\t-l, --longoptions=longopts Long options to be recognized\n" \
  735. "\t-n, --name=progname The name under which errors are reported\n" \
  736. "\t-o, --options=optstring Short options to be recognized\n" \
  737. "\t-q, --quiet Disable error reporting by getopt(3)\n" \
  738. "\t-Q, --quiet-output No normal output\n" \
  739. "\t-s, --shell=shell Set shell quoting conventions\n" \
  740. "\t-T, --test Test for getopt(1) version\n" \
  741. "\t-u, --unquoted Do not quote the output"
  742. #define getopt_example_usage \
  743. "$ cat getopt.test\n" \
  744. "#!/bin/sh\n" \
  745. "GETOPT=`getopt -o ab:c:: --long a-long,b-long:,c-long:: \\\n" \
  746. " -n 'example.busybox' -- \"$@\"`\n" \
  747. "if [ $? != 0 ] ; then exit 1 ; fi\n" \
  748. "eval set -- \"$GETOPT\"\n" \
  749. "while true ; do\n" \
  750. " case $1 in\n" \
  751. " -a|--a-long) echo \"Option a\" ; shift ;;\n" \
  752. " -b|--b-long) echo \"Option b, argument `$2'\" ; shift 2 ;;\n" \
  753. " -c|--c-long)\n" \
  754. " case \"$2\" in\n" \
  755. " \"\") echo \"Option c, no argument\"; shift 2 ;;\n" \
  756. " *) echo \"Option c, argument `$2'\" ; shift 2 ;;\n" \
  757. " esac ;;\n" \
  758. " --) shift ; break ;;\n" \
  759. " *) echo \"Internal error!\" ; exit 1 ;;\n" \
  760. " esac\n" \
  761. "done\n"
  762. #define getty_trivial_usage \
  763. "[OPTIONS]... baud_rate,... line [termtype]"
  764. #define getty_full_usage \
  765. "Opens a tty, prompts for a login name, then invokes /bin/login\n\n" \
  766. "Options:\n" \
  767. "\t-h\t\tEnable hardware (RTS/CTS) flow control\n" \
  768. "\t-i\t\tDo not display /etc/issue before running login\n" \
  769. "\t-L\t\tLocal line, so do not do carrier detect\n" \
  770. "\t-m\t\tGet baud rate from modem's CONNECT status message\n" \
  771. "\t-w\t\tWait for a CR or LF before sending /etc/issue\n" \
  772. "\t-n\t\tDo not prompt the user for a login name\n" \
  773. "\t-f issue_file\tDisplay issue_file instead of /etc/issue\n" \
  774. "\t-l login_app\tInvoke login_app instead of /bin/login\n" \
  775. "\t-t timeout\tTerminate after timeout if no username is read\n" \
  776. "\t-I initstring\tSets the init string to send before anything else\n" \
  777. "\t-H login_host\tLog login_host into the utmp file as the hostname"
  778. #define grep_trivial_usage \
  779. "[-ihHnqvs] PATTERN [FILEs...]"
  780. #define grep_full_usage \
  781. "Search for PATTERN in each FILE or standard input.\n\n" \
  782. "Options:\n" \
  783. "\t-H\tprefix output lines with filename where match was found\n" \
  784. "\t-h\tsuppress the prefixing filename on output\n" \
  785. "\t-i\tignore case distinctions\n" \
  786. "\t-l\tlist names of files that match\n" \
  787. "\t-n\tprint line number with output lines\n" \
  788. "\t-q\tbe quiet. Returns 0 if result was found, 1 otherwise\n" \
  789. "\t-v\tselect non-matching lines\n" \
  790. "\t-s\tsuppress file open/read error messages"
  791. #define grep_example_usage \
  792. "$ grep root /etc/passwd\n" \
  793. "root:x:0:0:root:/root:/bin/bash\n" \
  794. "$ grep ^[rR]oo. /etc/passwd\n" \
  795. "root:x:0:0:root:/root:/bin/bash\n"
  796. #define gunzip_trivial_usage \
  797. "[OPTION]... FILE"
  798. #define gunzip_full_usage \
  799. "Uncompress FILE (or standard input if FILE is '-').\n\n" \
  800. "Options:\n" \
  801. "\t-c\tWrite output to standard output\n" \
  802. "\t-f\tForce read when source is a terminal\n" \
  803. "\t-t\tTest compressed file integrity"
  804. #define gunzip_example_usage \
  805. "$ ls -la /tmp/BusyBox*\n" \
  806. "-rw-rw-r-- 1 andersen andersen 557009 Apr 11 10:55 /tmp/BusyBox-0.43.tar.gz\n" \
  807. "$ gunzip /tmp/BusyBox-0.43.tar.gz\n" \
  808. "$ ls -la /tmp/BusyBox*\n" \
  809. "-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/BusyBox-0.43.tar\n"
  810. #define gzip_trivial_usage \
  811. "[OPTION]... [FILE]..."
  812. #define gzip_full_usage \
  813. "Compress FILE(s) with maximum compression.\n" \
  814. "When FILE is '-' or unspecified, reads standard input. Implies -c.\n\n" \
  815. "Options:\n" \
  816. "\t-c\tWrite output to standard output instead of FILE.gz\n" \
  817. "\t-d\tDecompress\n" \
  818. "\t-f\tForce write when destination is a terminal"
  819. #define gzip_example_usage \
  820. "$ ls -la /tmp/busybox*\n" \
  821. "-rw-rw-r-- 1 andersen andersen 1761280 Apr 14 17:47 /tmp/busybox.tar\n" \
  822. "$ gzip /tmp/busybox.tar\n" \
  823. "$ ls -la /tmp/busybox*\n" \
  824. "-rw-rw-r-- 1 andersen andersen 554058 Apr 14 17:49 /tmp/busybox.tar.gz\n"
  825. #define halt_trivial_usage \
  826. "[-d<delay>]"
  827. #define halt_full_usage \
  828. "Halt the system.\n" \
  829. "Options:\n" \
  830. "\t-d\t\tdelay interval for halting"
  831. #ifdef CONFIG_FEATURE_HDPARM_GET_IDENTITY
  832. #define USAGE_HDPARM_IDENT(a) a
  833. #else
  834. #define USAGE_HDPARM_IDENT(a)
  835. #endif
  836. #ifdef CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF
  837. #define USAGE_SCAN_HWIF(a) a
  838. #else
  839. #define USAGE_SCAN_HWIF(a)
  840. #endif
  841. #ifdef CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
  842. #define USAGE_UNREGISTER_HWIF(a) a
  843. #else
  844. #define USAGE_UNREGISTER_HWIF(a)
  845. #endif
  846. #ifdef CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET
  847. #define USAGE_DRIVE_RESET(a) a
  848. #else
  849. #define USAGE_DRIVE_RESET(a)
  850. #endif
  851. #ifdef CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
  852. #define USAGE_TRISTATE_HWIF(a) a
  853. #else
  854. #define USAGE_TRISTATE_HWIF(a)
  855. #endif
  856. #ifdef CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
  857. #define USAGE_GETSET_DMA(a) a
  858. #else
  859. #define USAGE_GETSET_DMA(a)
  860. #endif
  861. #define hdparm_trivial_usage \
  862. "[options] [device] .."
  863. #define hdparm_full_usage \
  864. "Options:" \
  865. "\t-a get/set fs readahead\n" \
  866. "\t-A set drive read-lookahead flag (0/1)\n" \
  867. "\t-b get/set bus state (0 == off, 1 == on, 2 == tristate)\n" \
  868. "\t-B set Advanced Power Management setting (1-255)\n" \
  869. "\t-c get/set IDE 32-bit IO setting\n" \
  870. "\t-C check IDE power mode status\n" \
  871. USAGE_GETSET_DMA("\t-d get/set using_dma flag\n") \
  872. "\t-D enable/disable drive defect-mgmt\n" \
  873. "\t-f flush buffer cache for device on exit\n" \
  874. "\t-g display drive geometry\n" \
  875. "\t-h display terse usage information\n" \
  876. "\t-i display drive identification\n" \
  877. USAGE_HDPARM_IDENT("\t-I detailed/current information directly from drive\n") \
  878. USAGE_HDPARM_IDENT("\t-Istdin similar to -I, but wants /proc/ide/" "*" "/hd?/identify as input\n") \
  879. "\t-k get/set keep_settings_over_reset flag (0/1)\n" \
  880. "\t-K set drive keep_features_over_reset flag (0/1)\n" \
  881. "\t-L set drive doorlock (0/1) (removable harddisks only)\n" \
  882. "\t-m get/set multiple sector count\n" \
  883. "\t-n get/set ignore-write-errors flag (0/1)\n" \
  884. "\t-p set PIO mode on IDE interface chipset (0,1,2,3,4,...)\n" \
  885. "\t-P set drive prefetch count\n" \
  886. "\t-q change next setting quietly\n" \
  887. "\t-Q get/set DMA tagged-queuing depth (if supported)\n" \
  888. "\t-r get/set readonly flag (DANGEROUS to set)\n" \
  889. USAGE_SCAN_HWIF("\t-R register an IDE interface (DANGEROUS)\n") \
  890. "\t-S set standby (spindown) timeout\n" \
  891. "\t-t perform device read timings\n" \
  892. "\t-T perform cache read timings\n" \
  893. "\t-u get/set unmaskirq flag (0/1)\n" \
  894. USAGE_UNREGISTER_HWIF("\t-U un-register an IDE interface (DANGEROUS)\n") \
  895. "\t-v defaults; same as -mcudkrag for IDE drives\n" \
  896. "\t-V display program version and exit immediately\n" \
  897. USAGE_DRIVE_RESET("\t-w perform device reset (DANGEROUS)\n") \
  898. "\t-W set drive write-caching flag (0/1) (DANGEROUS)\n" \
  899. USAGE_TRISTATE_HWIF("\t-x tristate device for hotswap (0/1) (DANGEROUS)\n") \
  900. "\t-X set IDE xfer mode (DANGEROUS)\n" \
  901. "\t-y put IDE drive in standby mode\n" \
  902. "\t-Y put IDE drive to sleep\n" \
  903. "\t-Z disable Seagate auto-powersaving mode\n" \
  904. "\t-z re-read partition table"
  905. #ifdef CONFIG_FEATURE_FANCY_HEAD
  906. #define USAGE_FANCY_HEAD(a) a
  907. #else
  908. #define USAGE_FANCY_HEAD(a)
  909. #endif
  910. #define head_trivial_usage \
  911. "[OPTION]... [FILE]..."
  912. #define head_full_usage \
  913. "Print first 10 lines of each FILE to standard output.\n" \
  914. "With more than one FILE, precede each with a header giving the\n" \
  915. "file name. With no FILE, or when FILE is -, read standard input.\n\n" \
  916. "Options:\n" \
  917. "\t-n NUM\t\tPrint first NUM lines instead of first 10" \
  918. USAGE_FANCY_HEAD( \
  919. "\n\t-c NUM\t\toutput the first NUM bytes\n" \
  920. "\t-q\t\tnever output headers giving file names\n" \
  921. "\t-v\t\talways output headers giving file names" )
  922. #define head_example_usage \
  923. "$ head -n 2 /etc/passwd\n" \
  924. "root:x:0:0:root:/root:/bin/bash\n" \
  925. "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n"
  926. #define hexdump_trivial_usage \
  927. "[-[bcdefnosvx]] [OPTION] FILE"
  928. #define hexdump_full_usage \
  929. "The hexdump utility is a filter which displays the specified files,\n" \
  930. "or the standard input, if no files are specified, in a user specified\n" \
  931. "format\n" \
  932. "\t-b\t\tOne-byte octal display\n" \
  933. "\t-c\t\tOne-byte character display\n" \
  934. "\t-d\t\tTwo-byte decimal display\n" \
  935. "\t-e FORMAT STRING\n" \
  936. "\t-f FORMAT FILE\n" \
  937. "\t-n LENGTH\tInterpret only length bytes of input\n" \
  938. "\t-o\t\tTwo-byte octal display\n" \
  939. "\t-s OFFSET\tSkip offset byte\n" \
  940. "\t-v\t\tdisplay all input data\n" \
  941. "\t-x\t\tTwo-byte hexadecimal display"
  942. #define hostid_trivial_usage \
  943. ""
  944. #define hostid_full_usage \
  945. "Print out a unique 32-bit identifier for the machine."
  946. #define hostname_trivial_usage \
  947. "[OPTION] {hostname | -F FILE}"
  948. #define hostname_full_usage \
  949. "Get or set the hostname or DNS domain name. If a hostname is given\n" \
  950. "(or FILE with the -F parameter), the host name will be set.\n\n" \
  951. "Options:\n" \
  952. "\t-s\tShort\n" \
  953. "\t-i\tAddresses for the hostname\n" \
  954. "\t-d\tDNS domain name\n" \
  955. "\t-f\tFully qualified domain name\n" \
  956. "\t-F FILE\tUse the contents of FILE to specify the hostname"
  957. #define hostname_example_usage \
  958. "$ hostname\n" \
  959. "sage\n"
  960. #ifdef CONFIG_FEATURE_HTTPD_BASIC_AUTH
  961. # define USAGE_HTTPD_BASIC_AUTH(a) a
  962. # ifdef CONFIG_FEATURE_HTTPD_AUTH_MD5
  963. # define USAGE_HTTPD_AUTH_MD5(a) a
  964. # else
  965. # define USAGE_HTTPD_AUTH_MD5(a)
  966. # endif
  967. #else
  968. # define USAGE_HTTPD_BASIC_AUTH(a)
  969. # define USAGE_HTTPD_AUTH_MD5(a)
  970. #endif
  971. #ifdef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY
  972. # define USAGE_HTTPD_STANDALONE(a)
  973. # define USAGE_HTTPD_SETUID(a)
  974. #else
  975. # define USAGE_HTTPD_STANDALONE(a) a
  976. # ifdef CONFIG_FEATURE_HTTPD_SETUID
  977. # define USAGE_HTTPD_SETUID(a) a
  978. # else
  979. # define USAGE_HTTPD_SETUID(a)
  980. # endif
  981. #endif
  982. #define httpd_trivial_usage \
  983. "[-c <conf file>]" \
  984. USAGE_HTTPD_STANDALONE(" [-p <port>]") \
  985. USAGE_HTTPD_SETUID(" [-u user]") \
  986. USAGE_HTTPD_BASIC_AUTH(" [-r <realm>]") \
  987. USAGE_HTTPD_AUTH_MD5(" [-m pass]") \
  988. " [-h home]" \
  989. " [-d/-e <string>]"
  990. #define httpd_full_usage \
  991. "Listens for incoming http server requests.\n\n" \
  992. "Options:\n" \
  993. "\t-c FILE\t\tSpecifies configuration file. (default httpd.conf)\n" \
  994. USAGE_HTTPD_STANDALONE("\t-p PORT\tServer port (default 80)\n") \
  995. USAGE_HTTPD_SETUID("\t-u USER\tSet uid to USER after listening privileges port\n") \
  996. USAGE_HTTPD_BASIC_AUTH("\t-r REALM\tAuthentication Realm for Basic Authentication\n") \
  997. USAGE_HTTPD_AUTH_MD5("\t-m PASS\t\tCrypt PASS with md5 algorithm\n") \
  998. "\t-h HOME \tSpecifies http HOME directory (default ./)\n" \
  999. "\t-e STRING\tHtml encode STRING\n" \
  1000. "\t-d STRING\tURL decode STRING"
  1001. #define hwclock_trivial_usage \
  1002. "[-r|--show] [-s|--hctosys] [-w|--systohc] [-l|--localtime] [-u|--utc]"
  1003. #define hwclock_full_usage \
  1004. "Query and set the hardware clock (RTC)\n\n" \
  1005. "Options:\n" \
  1006. "\t-r\tread hardware clock and print result\n" \
  1007. "\t-s\tset the system time from the hardware clock\n" \
  1008. "\t-w\tset the hardware clock to the current system time\n" \
  1009. "\t-u\tthe hardware clock is kept in coordinated universal time\n" \
  1010. "\t-l\tthe hardware clock is kept in local time"
  1011. #ifdef CONFIG_SELINUX
  1012. # define USAGE_SELINUX(a) a
  1013. #else
  1014. # define USAGE_SELINUX(a)
  1015. #endif
  1016. #define id_trivial_usage \
  1017. "[OPTIONS]... [USERNAME]"
  1018. #define id_full_usage \
  1019. "Print information for USERNAME or the current user\n\n" \
  1020. "Options:\n" \
  1021. USAGE_SELINUX("\t-c\tprints only the security context\n") \
  1022. "\t-g\tprints only the group ID\n" \
  1023. "\t-u\tprints only the user ID\n" \
  1024. "\t-n\tprint a name instead of a number\n" \
  1025. "\t-r\tprints the real user ID instead of the effective ID"
  1026. #define id_example_usage \
  1027. "$ id\n" \
  1028. "uid=1000(andersen) gid=1000(andersen)\n"
  1029. #ifdef CONFIG_FEATURE_IFCONFIG_SLIP
  1030. # define USAGE_SIOCSKEEPALIVE(a) a
  1031. #else
  1032. # define USAGE_SIOCSKEEPALIVE(a)
  1033. #endif
  1034. #ifdef CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
  1035. # define USAGE_IFCONFIG_MII(a) a
  1036. #else
  1037. # define USAGE_IFCONFIG_MII(a)
  1038. #endif
  1039. #ifdef CONFIG_FEATURE_IFCONFIG_HW
  1040. # define USAGE_IFCONFIG_HW(a) a
  1041. #else
  1042. # define USAGE_IFCONFIG_HW(a)
  1043. #endif
  1044. #ifdef CONFIG_FEATURE_IFCONFIG_STATUS
  1045. # define USAGE_IFCONFIG_OPT_A(a) a
  1046. #else
  1047. # define USAGE_IFCONFIG_OPT_A(a)
  1048. #endif
  1049. #ifdef CONFIG_FEATURE_IPV6
  1050. # define USAGE_IPV6(a) a
  1051. #else
  1052. # define USAGE_IPV6(a)
  1053. #endif
  1054. #define ifconfig_trivial_usage \
  1055. USAGE_IFCONFIG_OPT_A("[-a]") " <interface> [<address>]"
  1056. #define ifconfig_full_usage \
  1057. "configure a network interface\n\n" \
  1058. "Options:\n" \
  1059. USAGE_IPV6("[add <address>[/<prefixlen>]]\n") \
  1060. USAGE_IPV6("[del <address>[/<prefixlen>]]\n") \
  1061. "\t[[-]broadcast [<address>]] [[-]pointopoint [<address>]]\n" \
  1062. "\t[netmask <address>] [dstaddr <address>]\n" \
  1063. USAGE_SIOCSKEEPALIVE("\t[outfill <NN>] [keepalive <NN>]\n") \
  1064. "\t" USAGE_IFCONFIG_HW("[hw ether <address>] ") \
  1065. "[metric <NN>] [mtu <NN>]\n" \
  1066. "\t[[-]trailers] [[-]arp] [[-]allmulti]\n" \
  1067. "\t[multicast] [[-]promisc] [txqueuelen <NN>] [[-]dynamic]\n" \
  1068. USAGE_IFCONFIG_MII("\t[mem_start <NN>] [io_addr <NN>] [irq <NN>]\n") \
  1069. "\t[up|down] ..."
  1070. #define ifup_trivial_usage \
  1071. "<-ahinv> <ifaces...>"
  1072. #define ifup_full_usage \
  1073. "ifup <options> <ifaces...>\n\n" \
  1074. "Options:\n" \
  1075. "\t-h\tthis help\n" \
  1076. "\t-a\tde/configure all interfaces automatically\n" \
  1077. "\t-i FILE\tuse FILE for interface definitions\n" \
  1078. "\t-n\tprint out what would happen, but don't do it\n" \
  1079. "\t\t\t(note that this option doesn't disable mappings)\n" \
  1080. "\t-v\tprint out what would happen before doing it\n" \
  1081. "\t-m\tdon't run any mappings\n" \
  1082. "\t-f\tforce de/configuration"
  1083. #define ifdown_trivial_usage \
  1084. "<-ahinv> <ifaces...>"
  1085. #define ifdown_full_usage \
  1086. "ifdown <options> <ifaces...>\n\n" \
  1087. "Options:\n" \
  1088. "\t-h\tthis help\n" \
  1089. "\t-a\tde/configure all interfaces automatically\n" \
  1090. "\t-i FILE\tuse FILE for interface definitions\n" \
  1091. "\t-n\tprint out what would happen, but don't do it\n" \
  1092. "\t\t(note that this option doesn't disable mappings)\n" \
  1093. "\t-v\tprint out what would happen before doing it\n" \
  1094. "\t-m\tdon't run any mappings\n" \
  1095. "\t-f\tforce de/configuration"
  1096. #define inetd_trivial_usage \
  1097. "[-q len] [conf]"
  1098. #define inetd_full_usage \
  1099. "Listens for network connections and launches programs\n\n" \
  1100. "Option:\n" \
  1101. "\t-q\tSets the size of the socket listen queue to\n" \
  1102. "\t\tthe specified value. Default is 128"
  1103. #define init_trivial_usage \
  1104. ""
  1105. #define init_full_usage \
  1106. "Init is the parent of all processes."
  1107. #define init_notes_usage \
  1108. "This version of init is designed to be run only by the kernel.\n" \
  1109. "\n" \
  1110. "BusyBox init doesn't support multiple runlevels. The runlevels field of\n" \
  1111. "the /etc/inittab file is completely ignored by BusyBox init. If you want \n" \
  1112. "runlevels, use sysvinit.\n" \
  1113. "\n" \
  1114. "BusyBox init works just fine without an inittab. If no inittab is found, \n" \
  1115. "it has the following default behavior:\n" \
  1116. "\n" \
  1117. " ::sysinit:/etc/init.d/rcS\n" \
  1118. " ::askfirst:/bin/sh\n" \
  1119. " ::ctrlaltdel:/sbin/reboot\n" \
  1120. " ::shutdown:/sbin/swapoff -a\n" \
  1121. " ::shutdown:/bin/umount -a -r\n" \
  1122. " ::restart:/sbin/init\n" \
  1123. "\n" \
  1124. "if it detects that /dev/console is _not_ a serial console, it will also run:\n" \
  1125. "\n" \
  1126. " tty2::askfirst:/bin/sh\n" \
  1127. " tty3::askfirst:/bin/sh\n" \
  1128. " tty4::askfirst:/bin/sh\n" \
  1129. "\n" \
  1130. "If you choose to use an /etc/inittab file, the inittab entry format is as follows:\n" \
  1131. "\n" \
  1132. " <id>:<runlevels>:<action>:<process>\n" \
  1133. "\n" \
  1134. " <id>:\n" \
  1135. "\n" \
  1136. " WARNING: This field has a non-traditional meaning for BusyBox init!\n" \
  1137. " The id field is used by BusyBox init to specify the controlling tty for\n" \
  1138. " the specified process to run on. The contents of this field are\n" \
  1139. " appended to \"/dev/\" and used as-is. There is no need for this field to\n" \
  1140. " be unique, although if it isn't you may have strange results. If this\n" \
  1141. " field is left blank, the controlling tty is set to the console. Also\n" \
  1142. " note that if BusyBox detects that a serial console is in use, then only\n" \
  1143. " entries whose controlling tty is either the serial console or /dev/null\n" \
  1144. " will be run. BusyBox init does nothing with utmp. We don't need no\n" \
  1145. " stinkin' utmp.\n" \
  1146. "\n" \
  1147. " <runlevels>:\n" \
  1148. "\n" \
  1149. " The runlevels field is completely ignored.\n" \
  1150. "\n" \
  1151. " <action>:\n" \
  1152. "\n" \
  1153. " Valid actions include: sysinit, respawn, askfirst, wait,\n" \
  1154. " once, restart, ctrlaltdel, and shutdown.\n" \
  1155. "\n" \
  1156. " The available actions can be classified into two groups: actions\n" \
  1157. " that are run only once, and actions that are re-run when the specified\n" \
  1158. " process exits.\n" \
  1159. "\n" \
  1160. " Run only-once actions:\n" \
  1161. "\n" \
  1162. " 'sysinit' is the first item run on boot. init waits until all\n" \
  1163. " sysinit actions are completed before continuing. Following the\n" \
  1164. " completion of all sysinit actions, all 'wait' actions are run.\n" \
  1165. " 'wait' actions, like 'sysinit' actions, cause init to wait until\n" \
  1166. " the specified task completes. 'once' actions are asynchronous,\n" \
  1167. " therefore, init does not wait for them to complete. 'restart' is\n" \
  1168. " the action taken to restart the init process. By default this should\n" \
  1169. " simply run /sbin/init, but can be a script which runs pivot_root or it\n" \
  1170. " can do all sorts of other interesting things. The 'ctrlaltdel' init\n" \
  1171. " actions are run when the system detects that someone on the system\n" \
  1172. " console has pressed the CTRL-ALT-DEL key combination. Typically one\n" \
  1173. " wants to run 'reboot' at this point to cause the system to reboot.\n" \
  1174. " Finally the 'shutdown' action specifies the actions to taken when\n" \
  1175. " init is told to reboot. Unmounting filesystems and disabling swap\n" \
  1176. " is a very good here\n" \
  1177. "\n" \
  1178. " Run repeatedly actions:\n" \
  1179. "\n" \
  1180. " 'respawn' actions are run after the 'once' actions. When a process\n" \
  1181. " started with a 'respawn' action exits, init automatically restarts\n" \
  1182. " it. Unlike sysvinit, BusyBox init does not stop processes from\n" \
  1183. " respawning out of control. The 'askfirst' actions acts just like\n" \
  1184. " respawn, except that before running the specified process it\n" \
  1185. " displays the line \"Please press Enter to activate this console.\"\n" \
  1186. " and then waits for the user to press enter before starting the\n" \
  1187. " specified process.\n" \
  1188. "\n" \
  1189. " Unrecognized actions (like initdefault) will cause init to emit an\n" \
  1190. " error message, and then go along with its business. All actions are\n" \
  1191. " run in the order they appear in /etc/inittab.\n" \
  1192. "\n" \
  1193. " <process>:\n" \
  1194. "\n" \
  1195. " Specifies the process to be executed and its command line.\n" \
  1196. "\n" \
  1197. "Example /etc/inittab file:\n" \
  1198. "\n" \
  1199. " # This is run first except when booting in single-user mode.\n" \
  1200. " #\n" \
  1201. " ::sysinit:/etc/init.d/rcS\n" \
  1202. " \n" \
  1203. " # /bin/sh invocations on selected ttys\n" \
  1204. " #\n" \
  1205. " # Start an \"askfirst\" shell on the console (whatever that may be)\n" \
  1206. " ::askfirst:-/bin/sh\n" \
  1207. " # Start an \"askfirst\" shell on /dev/tty2-4\n" \
  1208. " tty2::askfirst:-/bin/sh\n" \
  1209. " tty3::askfirst:-/bin/sh\n" \
  1210. " tty4::askfirst:-/bin/sh\n" \
  1211. " \n" \
  1212. " # /sbin/getty invocations for selected ttys\n" \
  1213. " #\n" \
  1214. " tty4::respawn:/sbin/getty 38400 tty4\n" \
  1215. " tty5::respawn:/sbin/getty 38400 tty5\n" \
  1216. " \n" \
  1217. " \n" \
  1218. " # Example of how to put a getty on a serial line (for a terminal)\n" \
  1219. " #\n" \
  1220. " #::respawn:/sbin/getty -L ttyS0 9600 vt100\n" \
  1221. " #::respawn:/sbin/getty -L ttyS1 9600 vt100\n" \
  1222. " #\n" \
  1223. " # Example how to put a getty on a modem line.\n" \
  1224. " #::respawn:/sbin/getty 57600 ttyS2\n" \
  1225. " \n" \
  1226. " # Stuff to do when restarting the init process\n" \
  1227. " ::restart:/sbin/init\n" \
  1228. " \n" \
  1229. " # Stuff to do before rebooting\n" \
  1230. " ::ctrlaltdel:/sbin/reboot\n" \
  1231. " ::shutdown:/bin/umount -a -r\n" \
  1232. " ::shutdown:/sbin/swapoff -a\n"
  1233. #ifdef CONFIG_FEATURE_INSMOD_LOAD_MAP
  1234. # define USAGE_INSMOD_MAP(a) a
  1235. #else
  1236. # define USAGE_INSMOD_MAP(a)
  1237. #endif
  1238. #define insmod_trivial_usage \
  1239. "[OPTION]... MODULE [symbol=value]..."
  1240. #define insmod_full_usage \
  1241. "Loads the specified kernel modules into the kernel.\n\n" \
  1242. "Options:\n" \
  1243. "\t-f\tForce module to load into the wrong kernel version\n" \
  1244. "\t-k\tMake module autoclean-able\n" \
  1245. "\t-v\tverbose output\n" \
  1246. "\t-q\tquiet output\n" \
  1247. "\t-L\tLock to prevent simultaneous loads of a module\n" \
  1248. USAGE_INSMOD_MAP("\t-m\tOutput load map to stdout\n") \
  1249. "\t-o NAME\tSet internal module name to NAME\n" \
  1250. "\t-x\tdo not export externs"
  1251. #define install_trivial_usage \
  1252. "[-cgmops] [sources] <dest|directory>"
  1253. #define install_full_usage \
  1254. "Copies files and set attributes\n\n" \
  1255. "Options:\n" \
  1256. "\t-c\tcopy the file, default\n" \
  1257. "\t-d\tcreate directories\n" \
  1258. "\t-g\tset group ownership\n" \
  1259. "\t-m\tset permission modes\n" \
  1260. "\t-o\tset ownership\n" \
  1261. "\t-p\tpreserve date\n" \
  1262. "\t-s\tstrip symbol tables"
  1263. #define ip_trivial_usage \
  1264. "[ OPTIONS ] { address | link | route | tunnel } { COMMAND | help }"
  1265. #define ip_full_usage \
  1266. "ip [ OPTIONS ] OBJECT { COMMAND | help }\n" \
  1267. "where OBJECT := { link | addr | route | tunnel }\n" \
  1268. "OPTIONS := { -f[amily] { inet | inet6 | link } | -o[neline] }"
  1269. #define ipaddr_trivial_usage \
  1270. "{ {add|del} IFADDR dev STRING | {show|flush}\n" \
  1271. "\t\t[ dev STRING ] [ to PREFIX ] }"
  1272. #define ipaddr_full_usage \
  1273. "ipaddr {add|del} IFADDR dev STRING\n" \
  1274. "ipaddr {show|flush} [ dev STRING ] [ scope SCOPE-ID ]\n" \
  1275. "\t\t\t[ to PREFIX ] [ label PATTERN ]\n" \
  1276. "\t\t\tIFADDR := PREFIX | ADDR peer PREFIX\n" \
  1277. "\t\t\t[ broadcast ADDR ] [ anycast ADDR ]\n" \
  1278. "\t\t\t[ label STRING ] [ scope SCOPE-ID ]\n" \
  1279. "\t\t\tSCOPE-ID := [ host | link | global | NUMBER ]"
  1280. #ifdef CONFIG_FEATURE_IPCALC_FANCY
  1281. # define XUSAGE_IPCALC_FANCY(a) a
  1282. #else
  1283. # define XUSAGE_IPCALC_FANCY(a)
  1284. #endif
  1285. #define ipcalc_trivial_usage \
  1286. "[OPTION]... <ADDRESS>[[/]<NETMASK>] [NETMASK]"
  1287. #define ipcalc_full_usage \
  1288. "Calculate IP network settings from a IP address\n\n" \
  1289. "Options:\n" \
  1290. "\t-b\t--broadcast\tDisplay calculated broadcast address\n" \
  1291. "\t-n\t--network\tDisplay calculated network address\n" \
  1292. "\t-m\t--netmask\tDisplay default netmask for IP." \
  1293. XUSAGE_IPCALC_FANCY( \
  1294. "\n\t-p\t--prefix\tDisplay the prefix for IP/NETMASK." \
  1295. "\t-h\t--hostname\tDisplay first resolved host name\n" \
  1296. "\t-s\t--silent\tDon't ever display error messages.")
  1297. #define ipcrm_trivial_usage \
  1298. "[-[MQS] key] [-[mqs] id]"
  1299. #define ipcrm_full_usage \
  1300. "The upper-case options MQS are used to remove a shared memory\n" \
  1301. "segment by an shmkey value. The lower-case options mqs are used\n" \
  1302. "to remove a segment by shmid value.\n" \
  1303. "\t-m | -M\tRemove the memory segment after the last detatch\n" \
  1304. "\t-q | -Q\tRemove the message queue\n" \
  1305. "\t-s | -S\tRemove the semaphore\n"
  1306. #define ipcs_trivial_usage \
  1307. "[[-smq] -i shmid] | [[-asmq] [-tclup]]"
  1308. #define ipcs_full_usage \
  1309. "\t-i\tspecify a specific resource id\n" \
  1310. "Resource specification:\n" \
  1311. "\t-m\tshared memory segments\n" \
  1312. "\t-q\tmessage queues\n" \
  1313. "\t-s\tsempahore arrays\n" \
  1314. "\t-a\tall (default)\n" \
  1315. "Output format:\n" \
  1316. "\t-t\ttime\n" \
  1317. "\t-p\tpid\n" \
  1318. "\t-s\tcreator\n" \
  1319. "\t-a\tlimits\n" \
  1320. "\t-i\tsummary\n"
  1321. #define iplink_trivial_usage \
  1322. "{ set DEVICE { up | down | arp { on | off } | show [ DEVICE ] }"
  1323. #define iplink_full_usage \
  1324. "iplink set DEVICE { up | down | arp { on | off } |\n" \
  1325. "\t\t\tdynamic { on | off } |\n" \
  1326. "\t\t\tmtu MTU }\n" \
  1327. "\tiplink show [ DEVICE ]"
  1328. #define iproute_trivial_usage \
  1329. "{ list | flush | { add | del | change | append |\n" \
  1330. "\t\treplace | monitor } ROUTE }"
  1331. #define iproute_full_usage \
  1332. "iproute { list | flush } SELECTOR\n" \
  1333. "iproute get ADDRESS [ from ADDRESS iif STRING ]\n" \
  1334. "\t\t\t[ oif STRING ] [ tos TOS ]\n" \
  1335. "\tiproute { add | del | change | append | replace | monitor } ROUTE\n" \
  1336. "\t\t\tSELECTOR := [ root PREFIX ] [ match PREFIX ] [ proto RTPROTO ]\n" \
  1337. "\t\t\tROUTE := [ TYPE ] PREFIX [ tos TOS ] [ proto RTPROTO ]"
  1338. #define iptunnel_trivial_usage \
  1339. "{ add | change | del | show } [ NAME ]\n" \
  1340. "\t\t[ mode { ipip | gre | sit } ]\n" \
  1341. "\t\t[ remote ADDR ] [ local ADDR ] [ ttl TTL ]"
  1342. #define iptunnel_full_usage \
  1343. "iptunnel { add | change | del | show } [ NAME ]\n" \
  1344. "\t\t\t[ mode { ipip | gre | sit } ] [ remote ADDR ] [ local ADDR ]\n" \
  1345. "\t\t\t[ [i|o]seq ] [ [i|o]key KEY ] [ [i|o]csum ]\n" \
  1346. "\t\t\t[ ttl TTL ] [ tos TOS ] [ [no]pmtudisc ] [ dev PHYS_DEV ]"
  1347. #define kill_trivial_usage \
  1348. "[-signal] process-id [process-id ...]"
  1349. #define kill_full_usage \
  1350. "Send a signal (default is SIGTERM) to the specified process(es).\n\n" \
  1351. "Options:\n" \
  1352. "\t-l\tList all signal names and numbers"
  1353. #define kill_example_usage \
  1354. "$ ps | grep apache\n" \
  1355. "252 root root S [apache]\n" \
  1356. "263 www-data www-data S [apache]\n" \
  1357. "264 www-data www-data S [apache]\n" \
  1358. "265 www-data www-data S [apache]\n" \
  1359. "266 www-data www-data S [apache]\n" \
  1360. "267 www-data www-data S [apache]\n" \
  1361. "$ kill 252\n"
  1362. #define killall_trivial_usage \
  1363. "[-q] [-signal] process-name [process-name ...]"
  1364. #define killall_full_usage \
  1365. "Send a signal (default is SIGTERM) to the specified process(es).\n\n" \
  1366. "Options:\n" \
  1367. "\t-l\tList all signal names and numbers\n" \
  1368. "\t-q\tDo not complain if no processes were killed"
  1369. #define killall_example_usage \
  1370. "$ killall apache\n"
  1371. #define klogd_trivial_usage \
  1372. "[-c n] [-n]"
  1373. #define klogd_full_usage \
  1374. "Kernel logger.\n" \
  1375. "Options:\n" \
  1376. "\t-c n\tSets the default log level of console messages to n\n" \
  1377. "\t-n\tRun as a foreground process"
  1378. #define length_trivial_usage \
  1379. "STRING"
  1380. #define length_full_usage \
  1381. "Prints out the length of the specified STRING."
  1382. #define length_example_usage \
  1383. "$ length Hello\n" \
  1384. "5\n"
  1385. #define ln_trivial_usage \
  1386. "[OPTION] TARGET... LINK_NAME|DIRECTORY"
  1387. #define ln_full_usage \
  1388. "Create a link named LINK_NAME or DIRECTORY to the specified TARGET\n" \
  1389. "\nYou may use '--' to indicate that all following arguments are non-options.\n\n" \
  1390. "Options:\n" \
  1391. "\t-s\tmake symbolic links instead of hard links\n" \
  1392. "\t-f\tremove existing destination files\n" \
  1393. "\t-n\tno dereference symlinks - treat like normal file\n" \
  1394. "\t-b\tmake a backup of the target (if exists) before link operation\n" \
  1395. "\t-S suffix\tuse suffix instead of ~ when making backup files"
  1396. #define ln_example_usage \
  1397. "$ ln -s BusyBox /tmp/ls\n" \
  1398. "$ ls -l /tmp/ls\n" \
  1399. "lrwxrwxrwx 1 root root 7 Apr 12 18:39 ls -> BusyBox*\n"
  1400. #define loadfont_trivial_usage \
  1401. "< font"
  1402. #define loadfont_full_usage \
  1403. "Loads a console font from standard input."
  1404. #define loadfont_example_usage \
  1405. "$ loadfont < /etc/i18n/fontname\n"
  1406. #define loadkmap_trivial_usage \
  1407. "< keymap"
  1408. #define loadkmap_full_usage \
  1409. "Loads a binary keyboard translation table from standard input."
  1410. #define loadkmap_example_usage \
  1411. "$ loadkmap < /etc/i18n/lang-keymap\n"
  1412. #define logger_trivial_usage \
  1413. "[OPTION]... [MESSAGE]"
  1414. #define logger_full_usage \
  1415. "Write MESSAGE to the system log. If MESSAGE is omitted, log stdin.\n\n" \
  1416. "Options:\n" \
  1417. "\t-s\tLog to stderr as well as the system log\n" \
  1418. "\t-t TAG\tLog using the specified tag (defaults to user name)\n" \
  1419. "\t-p PRIORITY\tEnter the message with the specified priority\n" \
  1420. "\t\tThis may be numerical or a ``facility.level'' pair"
  1421. #define logger_example_usage \
  1422. "$ logger \"hello\"\n"
  1423. #define login_trivial_usage \
  1424. "[OPTION]... [username] [ENV=VAR ...]"
  1425. #define login_full_usage \
  1426. "Begin a new session on the system\n\n" \
  1427. "Options:\n" \
  1428. "\t-f\tDo not authenticate (user already authenticated)\n" \
  1429. "\t-h\tName of the remote host for this login\n" \
  1430. "\t-p\tPreserve environment"
  1431. #define logname_trivial_usage \
  1432. ""
  1433. #define logname_full_usage \
  1434. "Print the name of the current user."
  1435. #define logname_example_usage \
  1436. "$ logname\n" \
  1437. "root\n"
  1438. #define logread_trivial_usage \
  1439. "[OPTION]..."
  1440. #define logread_full_usage \
  1441. "Shows the messages from syslogd (using circular buffer).\n\n" \
  1442. "Options:\n" \
  1443. "\t-f\t\toutput data as the log grows"
  1444. #define losetup_trivial_usage \
  1445. "[OPTION]... LOOPDEVICE FILE\n" \
  1446. "or: losetup [OPTION]... -d LOOPDEVICE"
  1447. #define losetup_full_usage \
  1448. "Associate LOOPDEVICE with FILE.\n\n" \
  1449. "Options:\n" \
  1450. "\t-d\t\tDisassociate LOOPDEVICE\n" \
  1451. "\t-o OFFSET\tStart OFFSET bytes into FILE"
  1452. #ifdef CONFIG_FEATURE_LS_TIMESTAMPS
  1453. # define USAGE_LS_TIMESTAMPS(a) a
  1454. #else
  1455. # define USAGE_LS_TIMESTAMPS(a)
  1456. #endif
  1457. #ifdef CONFIG_FEATURE_LS_FILETYPES
  1458. # define USAGE_LS_FILETYPES(a) a
  1459. #else
  1460. # define USAGE_LS_FILETYPES(a)
  1461. #endif
  1462. #ifdef CONFIG_FEATURE_LS_FOLLOWLINKS
  1463. # define USAGE_LS_FOLLOWLINKS(a) a
  1464. #else
  1465. # define USAGE_LS_FOLLOWLINKS(a)
  1466. #endif
  1467. #ifdef CONFIG_FEATURE_LS_RECURSIVE
  1468. # define USAGE_LS_RECURSIVE(a) a
  1469. #else
  1470. # define USAGE_LS_RECURSIVE(a)
  1471. #endif
  1472. #ifdef CONFIG_FEATURE_LS_SORTFILES
  1473. # define USAGE_LS_SORTFILES(a) a
  1474. #else
  1475. # define USAGE_LS_SORTFILES(a)
  1476. #endif
  1477. #ifdef CONFIG_FEATURE_AUTOWIDTH
  1478. # define USAGE_AUTOWIDTH(a) a
  1479. #else
  1480. # define USAGE_AUTOWIDTH(a)
  1481. #endif
  1482. #define ls_trivial_usage \
  1483. "[-1Aa" USAGE_LS_TIMESTAMPS("c") "Cd" USAGE_LS_TIMESTAMPS("e") USAGE_LS_FILETYPES("F") "iln" USAGE_LS_FILETYPES("p") USAGE_LS_FOLLOWLINKS("L") USAGE_LS_RECURSIVE("R") USAGE_LS_SORTFILES("rS") "s" USAGE_AUTOWIDTH("T") USAGE_LS_TIMESTAMPS("tu") USAGE_LS_SORTFILES("v") USAGE_AUTOWIDTH("w") "x" USAGE_LS_SORTFILES("X") USAGE_HUMAN_READABLE("h") USAGE_NOT_HUMAN_READABLE("") "k" USAGE_SELINUX("K") "] [filenames...]"
  1484. #define ls_full_usage \
  1485. "List directory contents\n\n" \
  1486. "Options:\n" \
  1487. "\t-1\tlist files in a single column\n" \
  1488. "\t-A\tdo not list implied . and ..\n" \
  1489. "\t-a\tdo not hide entries starting with .\n" \
  1490. "\t-C\tlist entries by columns\n" \
  1491. USAGE_LS_TIMESTAMPS("\t-c\twith -l: show ctime\n") \
  1492. "\t-d\tlist directory entries instead of contents\n" \
  1493. USAGE_LS_TIMESTAMPS("\t-e\tlist both full date and full time\n") \
  1494. USAGE_LS_FILETYPES("\t-F\tappend indicator (one of */=@|) to entries\n") \
  1495. "\t-i\tlist the i-node for each file\n" \
  1496. "\t-l\tuse a long listing format\n" \
  1497. "\t-n\tlist numeric UIDs and GIDs instead of names\n" \
  1498. USAGE_LS_FILETYPES("\t-p\tappend indicator (one of /=@|) to entries\n") \
  1499. USAGE_LS_FOLLOWLINKS("\t-L\tlist entries pointed to by symbolic links\n") \
  1500. USAGE_LS_RECURSIVE("\t-R\tlist subdirectories recursively\n") \
  1501. USAGE_LS_SORTFILES("\t-r\tsort the listing in reverse order\n") \
  1502. USAGE_LS_SORTFILES("\t-S\tsort the listing by file size\n") \
  1503. "\t-s\tlist the size of each file, in blocks\n" \
  1504. USAGE_AUTOWIDTH("\t-T NUM\tassume Tabstop every NUM columns\n") \
  1505. USAGE_LS_TIMESTAMPS("\t-t\twith -l: show modification time\n") \
  1506. USAGE_LS_TIMESTAMPS("\t-u\twith -l: show access time\n") \
  1507. USAGE_LS_SORTFILES("\t-v\tsort the listing by version\n") \
  1508. USAGE_AUTOWIDTH("\t-w NUM\tassume the terminal is NUM columns wide\n") \
  1509. "\t-x\tlist entries by lines instead of by columns\n" \
  1510. USAGE_LS_SORTFILES("\t-X\tsort the listing by extension\n") \
  1511. USAGE_HUMAN_READABLE( \
  1512. "\t-h\tprint sizes in human readable format (e.g., 1K 243M 2G )\n") \
  1513. USAGE_SELINUX("\t-k\tprint security context\n") \
  1514. USAGE_SELINUX("\t-K\tprint security context in long format\n")
  1515. #define lsattr_trivial_usage \
  1516. "[-Radlv] [files...]"
  1517. #define lsattr_full_usage \
  1518. "list file attributes on an ext2 fs\n\n" \
  1519. "Options:\n" \
  1520. "\t-R\trecursively list subdirectories\n" \
  1521. "\t-a\tdo not hide entries starting with .\n" \
  1522. "\t-d\tlist directory entries instead of contents\n" \
  1523. "\t-l\tprint long flag names\n" \
  1524. "\t-v\tlist the file's version/generation number"
  1525. #define lsmod_trivial_usage \
  1526. ""
  1527. #define lsmod_full_usage \
  1528. "List the currently loaded kernel modules."
  1529. #ifdef CONFIG_FEATURE_MAKEDEVS_LEAF
  1530. #define makedevs_trivial_usage \
  1531. "NAME TYPE MAJOR MINOR FIRST LAST [s]"
  1532. #define makedevs_full_usage \
  1533. "Creates a range of block or character special files\n\n" \
  1534. "TYPEs include:\n" \
  1535. "\tb:\tMake a block (buffered) device.\n" \
  1536. "\tc or u:\tMake a character (un-buffered) device.\n" \
  1537. "\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes.\n\n" \
  1538. "FIRST specifies the number appended to NAME to create the first device.\n" \
  1539. "LAST specifies the number of the last item that should be created\n" \
  1540. "If 's' is the last argument, the base device is created as well.\n\n" \
  1541. "For example:\n" \
  1542. "\tmakedevs /dev/ttyS c 4 66 2 63 -> ttyS2-ttyS63\n" \
  1543. "\tmakedevs /dev/hda b 3 0 0 8 s -> hda,hda1-hda8"
  1544. #define makedevs_example_usage \
  1545. "# makedevs /dev/ttyS c 4 66 2 63\n" \
  1546. "[creates ttyS2-ttyS63]\n" \
  1547. "# makedevs /dev/hda b 3 0 0 8 s\n" \
  1548. "[creates hda,hda1-hda8]\n"
  1549. #endif
  1550. #ifdef CONFIG_FEATURE_MAKEDEVS_TABLE
  1551. #define makedevs_trivial_usage \
  1552. "[-r rootdir] [device_table]"
  1553. #define makedevs_full_usage \
  1554. "Creates a batch of special files as specified in a device table\n" \
  1555. "The device table has one line per device group, each group is of\n" \
  1556. "the format\n" \
  1557. "\ttype mode user group major minor start increment count\n" \
  1558. "a '-' may be used for blank entries\n"
  1559. #endif
  1560. #ifdef CONFIG_FEATURE_MD5_SHA1_SUM_CHECK
  1561. #define USAGE_MD5_SHA1_SUM_CHECK(a) a
  1562. #else
  1563. #define USAGE_MD5_SHA1_SUM_CHECK(a)
  1564. #endif
  1565. #define md5sum_trivial_usage \
  1566. "[OPTION] [FILEs...]" \
  1567. USAGE_MD5_SHA1_SUM_CHECK("\n or: md5sum [OPTION] -c [FILE]")
  1568. #define md5sum_full_usage \
  1569. "Print" USAGE_MD5_SHA1_SUM_CHECK(" or check") " MD5 checksums.\n\n" \
  1570. "Options:\n" \
  1571. "With no FILE, or when FILE is -, read standard input." \
  1572. USAGE_MD5_SHA1_SUM_CHECK("\n\n" \
  1573. "\t-c\tcheck MD5 sums against given list\n" \
  1574. "\nThe following two options are useful only when verifying checksums:\n" \
  1575. "\t-s\tdon't output anything, status code shows success\n" \
  1576. "\t-w\twarn about improperly formated MD5 checksum lines")
  1577. #define md5sum_example_usage \
  1578. "$ md5sum < busybox\n" \
  1579. "6fd11e98b98a58f64ff3398d7b324003\n" \
  1580. "$ md5sum busybox\n" \
  1581. "6fd11e98b98a58f64ff3398d7b324003 busybox\n" \
  1582. "$ md5sum -c -\n" \
  1583. "6fd11e98b98a58f64ff3398d7b324003 busybox\n" \
  1584. "busybox: OK\n" \
  1585. "^D\n"
  1586. #define mesg_trivial_usage \
  1587. "[y|n]"
  1588. #define mesg_full_usage \
  1589. "mesg controls write access to your terminal\n" \
  1590. "\ty\tAllow write access to your terminal\n" \
  1591. "\tn\tDisallow write access to your terminal"
  1592. #define mkdir_trivial_usage \
  1593. "[OPTION] DIRECTORY..."
  1594. #define mkdir_full_usage \
  1595. "Create the DIRECTORY(ies) if they do not already exist\n\n" \
  1596. "Options:\n" \
  1597. "\t-m\tset permission mode (as in chmod), not rwxrwxrwx - umask\n" \
  1598. "\t-p\tno error if existing, make parent directories as needed"
  1599. #define mkdir_example_usage \
  1600. "$ mkdir /tmp/foo\n" \
  1601. "$ mkdir /tmp/foo\n" \
  1602. "/tmp/foo: File exists\n" \
  1603. "$ mkdir /tmp/foo/bar/baz\n" \
  1604. "/tmp/foo/bar/baz: No such file or directory\n" \
  1605. "$ mkdir -p /tmp/foo/bar/baz\n"
  1606. #define mke2fs_trivial_usage \
  1607. "[-c|-l filename] [-b block-size] [-f fragment-size] [-g blocks-per-group] " \
  1608. "[-i bytes-per-inode] [-j] [-J journal-options] [-N number-of-inodes] [-n] " \
  1609. "[-m reserved-blocks-percentage] [-o creator-os] [-O feature[,...]] [-q] " \
  1610. "[r fs-revision-level] [-E extended-options] [-v] [-F] [-L volume-label] " \
  1611. "[-M last-mounted-directory] [-S] [-T filesystem-type] " \
  1612. "device [blocks-count]"
  1613. #define mke2fs_full_usage \
  1614. "\t-b size\tblock size in bytes\n" \
  1615. "\t-c\tcheck for bad blocks before creating\n" \
  1616. "\t-E opts\tset extended options\n" \
  1617. "\t-f size\tfragment size in bytes\n" \
  1618. "\t-F\tforce (ignore sanity checks)\n" \
  1619. "\t-g num\tnumber of blocks in a block group\n" \
  1620. "\t-i ratio\tthe bytes/inode ratio\n" \
  1621. "\t-j\tcreate a journal (ext3)\n" \
  1622. "\t-J opts\tset journal options (size/device)\n" \
  1623. "\t-l file\tread bad blocks list from file\n" \
  1624. "\t-L lbl\tset the volume label\n" \
  1625. "\t-m percent\tpercent of fs blocks to reserve for admin\n" \
  1626. "\t-M dir\tset last mounted directory\n" \
  1627. "\t-n\tdo not actually create anything\n" \
  1628. "\t-N num\tnumber of inodes to create\n" \
  1629. "\t-o os\tset the 'creator os' field\n" \
  1630. "\t-O features\tdir_index/filetype/has_journal/journal_dev/sparse_super\n" \
  1631. "\t-q\tquiet execution\n" \
  1632. "\t-r rev\tset filesystem revision\n" \
  1633. "\t-S\twrite superblock and group descriptors only\n" \
  1634. "\t-T fs-type\tset usage type (news/largefile/largefile4)\n" \
  1635. "\t-v\tverbose execution"
  1636. #define mkfifo_trivial_usage \
  1637. "[OPTIONS] name"
  1638. #define mkfifo_full_usage \
  1639. "Creates a named pipe (identical to 'mknod name p')\n\n" \
  1640. "Options:\n" \
  1641. "\t-m\tcreate the pipe using the specified mode (default a=rw)"
  1642. #define mkfs_minix_trivial_usage \
  1643. "[-c | -l filename] [-nXX] [-iXX] /dev/name [blocks]"
  1644. #define mkfs_minix_full_usage \
  1645. "Make a MINIX filesystem.\n\n" \
  1646. "Options:\n" \
  1647. "\t-c\t\tCheck the device for bad blocks\n" \
  1648. "\t-n [14|30]\tSpecify the maximum length of filenames\n" \
  1649. "\t-i INODES\tSpecify the number of inodes for the filesystem\n" \
  1650. "\t-l FILENAME\tRead the bad blocks list from FILENAME\n" \
  1651. "\t-v\t\tMake a Minix version 2 filesystem"
  1652. #define mknod_trivial_usage \
  1653. "[OPTIONS] NAME TYPE MAJOR MINOR"
  1654. #define mknod_full_usage \
  1655. "Create a special file (block, character, or pipe).\n\n" \
  1656. "Options:\n" \
  1657. "\t-m\tcreate the special file using the specified mode (default a=rw)\n\n" \
  1658. "TYPEs include:\n" \
  1659. "\tb:\tMake a block (buffered) device\n" \
  1660. "\tc or u:\tMake a character (un-buffered) device\n" \
  1661. "\tp:\tMake a named pipe. MAJOR and MINOR are ignored for named pipes"
  1662. #define mknod_example_usage \
  1663. "$ mknod /dev/fd0 b 2 0\n" \
  1664. "$ mknod -m 644 /tmp/pipe p\n"
  1665. #define mkswap_trivial_usage \
  1666. "[-c] [-v0|-v1] device [block-count]"
  1667. #define mkswap_full_usage \
  1668. "Prepare a disk partition to be used as a swap partition.\n\n" \
  1669. "Options:\n" \
  1670. "\t-c\t\tCheck for read-ability\n" \
  1671. "\t-v0\t\tMake version 0 swap [max 128 Megs]\n" \
  1672. "\t-v1\t\tMake version 1 swap [big!] (default for kernels >\n\t\t\t2.1.117)\n" \
  1673. "\tblock-count\tNumber of block to use (default is entire partition)"
  1674. #define mktemp_trivial_usage \
  1675. "[-dq] TEMPLATE"
  1676. #define mktemp_full_usage \
  1677. "Creates a temporary file with its name based on TEMPLATE.\n" \
  1678. "TEMPLATE is any name with six `Xs' (i.e., /tmp/temp.XXXXXX).\n\n" \
  1679. "Options:\n" \
  1680. "\t-d\t\tMake a directory instead of a file\n" \
  1681. "\t-q\t\tFail silently if an error occurs"
  1682. #define mktemp_example_usage \
  1683. "$ mktemp /tmp/temp.XXXXXX\n" \
  1684. "/tmp/temp.mWiLjM\n" \
  1685. "$ ls -la /tmp/temp.mWiLjM\n" \
  1686. "-rw------- 1 andersen andersen 0 Apr 25 17:10 /tmp/temp.mWiLjM\n"
  1687. #define modprobe_trivial_usage \
  1688. "[-knqrsv] [MODULE ...]"
  1689. #define modprobe_full_usage \
  1690. "Used for high level module loading and unloading.\n\n" \
  1691. "Options:\n" \
  1692. "\t-k\tMake module autoclean-able\n" \
  1693. "\t-n\tJust show what would be done\n" \
  1694. "\t-q\tQuiet output\n" \
  1695. "\t-r\tRemove module (stacks) or do autoclean\n" \
  1696. "\t-s\tReport via syslog instead of stderr\n" \
  1697. "\t-v\tVerbose output"
  1698. #define modprobe_example_usage \
  1699. "$ modprobe cdrom\n"
  1700. #define more_trivial_usage \
  1701. "[FILE ...]"
  1702. #define more_full_usage \
  1703. "More is a filter for viewing FILE one screenful at a time."
  1704. #define more_example_usage \
  1705. "$ dmesg | more\n"
  1706. #ifdef CONFIG_FEATURE_MOUNT_LOOP
  1707. # define USAGE_MOUNT_LOOP(a) a
  1708. #else
  1709. # define USAGE_MOUNT_LOOP(a)
  1710. #endif
  1711. #ifdef CONFIG_FEATURE_MTAB_SUPPORT
  1712. # define USAGE_MTAB(a) a
  1713. #else
  1714. # define USAGE_MTAB(a)
  1715. #endif
  1716. #define mount_trivial_usage \
  1717. "[flags] DEVICE NODE [-o options,more-options]"
  1718. #define mount_full_usage \
  1719. "Mount a filesystem. Autodetection of filesystem type requires the\n" \
  1720. "/proc filesystem be already mounted.\n\n" \
  1721. "Flags:\n" \
  1722. "\t-a:\t\tMount all filesystems in fstab\n" \
  1723. USAGE_MTAB( \
  1724. "\t-f:\t\t\"Fake\" Add entry to mount table but don't mount it\n" \
  1725. "\t-n:\t\tDon't write a mount table entry\n" \
  1726. ) \
  1727. "\t-o option:\tOne of many filesystem options, listed below\n" \
  1728. "\t-r:\t\tMount the filesystem read-only\n" \
  1729. "\t-t fs-type:\tSpecify the filesystem type\n" \
  1730. "\t-w:\t\tMount for reading and writing (default)\n" \
  1731. "\n" \
  1732. "Options for use with the \"-o\" flag:\n" \
  1733. "\tasync/sync:\tWrites are asynchronous / synchronous\n" \
  1734. "\tatime/noatime:\tEnable / disable updates to inode access times\n" \
  1735. "\tdev/nodev:\tAllow use of special device files / disallow them\n" \
  1736. "\texec/noexec:\tAllow use of executable files / disallow them\n" \
  1737. USAGE_MOUNT_LOOP( \
  1738. "\tloop:\t\tMounts a file via loop device\n" \
  1739. ) \
  1740. "\tsuid/nosuid:\tAllow set-user-id-root programs / disallow them\n" \
  1741. "\tremount:\tRe-mount a mounted filesystem, changing its flags\n" \
  1742. "\tro/rw:\t\tMount for read-only / read-write\n" \
  1743. "\tbind:\t\tUse the linux 2.4.x \"bind\" feature\n" \
  1744. "\nThere are EVEN MORE flags that are specific to each filesystem\n" \
  1745. "You'll have to see the written documentation for those filesystems"
  1746. #define mount_example_usage \
  1747. "$ mount\n" \
  1748. "/dev/hda3 on / type minix (rw)\n" \
  1749. "proc on /proc type proc (rw)\n" \
  1750. "devpts on /dev/pts type devpts (rw)\n" \
  1751. "$ mount /dev/fd0 /mnt -t msdos -o ro\n" \
  1752. "$ mount /tmp/diskimage /opt -t ext2 -o loop\n"
  1753. #define mt_trivial_usage \
  1754. "[-f device] opcode value"
  1755. #define mt_full_usage \
  1756. "Control magnetic tape drive operation\n" \
  1757. "\nAvailable Opcodes:\n\n" \
  1758. "bsf bsfm bsr bss datacompression drvbuffer eof eom erase\n" \
  1759. "fsf fsfm fsr fss load lock mkpart nop offline ras1 ras2\n" \
  1760. "ras3 reset retension rewind rewoffline seek setblk setdensity\n" \
  1761. "setpart tell unload unlock weof wset"
  1762. #define mv_trivial_usage \
  1763. "[OPTION]... SOURCE DEST\n" \
  1764. "or: mv [OPTION]... SOURCE... DIRECTORY"
  1765. #define mv_full_usage \
  1766. "Rename SOURCE to DEST, or move SOURCE(s) to DIRECTORY.\n\n" \
  1767. "Options:\n" \
  1768. "\t-f\tdon't prompt before overwriting\n" \
  1769. "\t-i\tinteractive, prompt before overwrite"
  1770. #define mv_example_usage \
  1771. "$ mv /tmp/foo /bin/bar\n"
  1772. #define nameif_trivial_usage \
  1773. "[-s] [-c FILE] [{IFNAME MACADDR}]"
  1774. #define nameif_full_usage \
  1775. "Nameif renaming network interface while it in the down state.\n\n" \
  1776. "Options:\n" \
  1777. "\t-c FILE\t\tUse configuration file (default is /etc/mactab)\n" \
  1778. "\t-s\t\tUse syslog (LOCAL0 facility)\n" \
  1779. "\tIFNAME MACADDR\tnew_interface_name interface_mac_address"
  1780. #define nameif_example_usage \
  1781. "$ nameif -s dmz0 00:A0:C9:8C:F6:3F\n" \
  1782. " or\n" \
  1783. "$ nameif -c /etc/my_mactab_file\n" \
  1784. #ifdef CONFIG_NC_GAPING_SECURITY_HOLE
  1785. # define USAGE_NC_EXEC(a) a
  1786. #else
  1787. # define USAGE_NC_EXEC(a)
  1788. #endif
  1789. #define nc_trivial_usage \
  1790. "[OPTIONS] [IP] [port]"
  1791. #define nc_full_usage \
  1792. "Netcat opens a pipe to IP:port\n\n" \
  1793. "Options:\n" \
  1794. "\t-l\t\tlisten mode, for inbound connects\n" \
  1795. "\t-p PORT\t\tlocal port number\n" \
  1796. "\t-i SECS\t\tdelay interval for lines sent\n" \
  1797. USAGE_NC_EXEC( \
  1798. "\t-e PROG\t\tprogram to exec after connect (dangerous!)\n" \
  1799. ) \
  1800. "\t-w SECS\t\ttimeout for connects and final net reads"
  1801. #define nc_example_usage \
  1802. "$ nc foobar.somedomain.com 25\n" \
  1803. "220 foobar ESMTP Exim 3.12 #1 Sat, 15 Apr 2000 00:03:02 -0600\n" \
  1804. "help\n" \
  1805. "214-Commands supported:\n" \
  1806. "214- HELO EHLO MAIL RCPT DATA AUTH\n" \
  1807. "214 NOOP QUIT RSET HELP\n" \
  1808. "quit\n" \
  1809. "221 foobar closing connection\n"
  1810. #define netstat_trivial_usage \
  1811. "[-laenrtuwx]"
  1812. #define netstat_full_usage \
  1813. "Netstat displays Linux networking information.\n\n" \
  1814. "Options:\n" \
  1815. "\t-l display listening server sockets\n" \
  1816. "\t-a display all sockets (default: connected)\n" \
  1817. "\t-e display other/more information\n" \
  1818. "\t-n don't resolve names\n" \
  1819. "\t-r display routing table\n" \
  1820. "\t-t tcp sockets\n" \
  1821. "\t-u udp sockets\n" \
  1822. "\t-w raw sockets\n" \
  1823. "\t-x unix sockets"
  1824. #define nice_trivial_usage \
  1825. "[-n ADJUST] [COMMAND [ARG] ...]"
  1826. #define nice_full_usage \
  1827. "Nice runs a program with modified scheduling priority.\n\n" \
  1828. "Options:\n" \
  1829. "\t-n ADJUST\tAdjust the scheduling priority by ADJUST"
  1830. #define nslookup_trivial_usage \
  1831. "[HOST] [SERVER]"
  1832. #define nslookup_full_usage \
  1833. "Queries the nameserver for the IP address of the given HOST\n" \
  1834. "optionally using a specified DNS server"
  1835. #define nslookup_example_usage \
  1836. "$ nslookup localhost\n" \
  1837. "Server: default\n" \
  1838. "Address: default\n" \
  1839. "\n" \
  1840. "Name: debian\n" \
  1841. "Address: 127.0.0.1\n"
  1842. #define od_trivial_usage \
  1843. "[-aBbcDdeFfHhIiLlOovXx] [FILE]"
  1844. #define od_full_usage \
  1845. "Write an unambiguous representation, octal bytes by default, of FILE\n" \
  1846. "to standard output. With no FILE, or when FILE is -, read standard input."
  1847. #define openvt_trivial_usage \
  1848. "<vtnum> <COMMAND> [ARGS...]"
  1849. #define openvt_full_usage \
  1850. "Start a command on a new virtual terminal"
  1851. #define openvt_example_usage \
  1852. "openvt 2 /bin/ash\n"
  1853. #ifdef CONFIG_FEATURE_SHA1_PASSWORDS
  1854. # define PASSWORD_ALG_TYPES(a) a
  1855. #else
  1856. # define PASSWORD_ALG_TYPES(a)
  1857. #endif
  1858. #define passwd_trivial_usage \
  1859. "[OPTION] [name]"
  1860. #define passwd_full_usage \
  1861. "Change a user password. If no name is specified,\n" \
  1862. "changes the password for the current user.\n" \
  1863. "Options:\n" \
  1864. "\t-a\tDefine which algorithm shall be used for the password\n" \
  1865. "\t\t\t(Choices: des, md5" \
  1866. PASSWORD_ALG_TYPES(", sha1") \
  1867. ")\n\t-d\tDelete the password for the specified user account\n" \
  1868. "\t-l\tLocks (disables) the specified user account\n" \
  1869. "\t-u\tUnlocks (re-enables) the specified user account"
  1870. #define patch_trivial_usage \
  1871. "[-p<num>]"
  1872. #define patch_full_usage \
  1873. "[-p<num>]"
  1874. #define patch_example_usage \
  1875. "$ patch -p1 <example.diff"
  1876. #define pidof_trivial_usage \
  1877. "process-name [OPTION] [process-name ...]"
  1878. #define pidof_full_usage \
  1879. "Lists the PIDs of all processes with names that match the\n" \
  1880. "names on the command line.\n" \
  1881. "Options:\n" \
  1882. "\t-s\t\tdisplay only a single PID"
  1883. #define pidof_example_usage \
  1884. "$ pidof init\n" \
  1885. "1\n"
  1886. #ifndef CONFIG_FEATURE_FANCY_PING
  1887. #define ping_trivial_usage "host"
  1888. #define ping_full_usage "Send ICMP ECHO_REQUEST packets to network hosts"
  1889. #else
  1890. #define ping_trivial_usage \
  1891. "[OPTION]... host"
  1892. #define ping_full_usage \
  1893. "Send ICMP ECHO_REQUEST packets to network hosts.\n\n" \
  1894. "Options:\n" \
  1895. "\t-c COUNT\tSend only COUNT pings\n" \
  1896. "\t-s SIZE\t\tSend SIZE data bytes in packets (default=56)\n" \
  1897. "\t-q\t\tQuiet mode, only displays output at start\n" \
  1898. "\t\t\tand when finished"
  1899. #endif
  1900. #define ping_example_usage \
  1901. "$ ping localhost\n" \
  1902. "PING slag (127.0.0.1): 56 data bytes\n" \
  1903. "64 bytes from 127.0.0.1: icmp_seq=0 ttl=255 time=20.1 ms\n" \
  1904. "\n" \
  1905. "--- debian ping statistics ---\n" \
  1906. "1 packets transmitted, 1 packets received, 0% packet loss\n" \
  1907. "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"
  1908. #ifndef CONFIG_FEATURE_FANCY_PING6
  1909. #define ping6_trivial_usage "host"
  1910. #define ping6_full_usage "Send ICMP ECHO_REQUEST packets to network hosts"
  1911. #else
  1912. #define ping6_trivial_usage \
  1913. "[OPTION]... host"
  1914. #define ping6_full_usage \
  1915. "Send ICMP ECHO_REQUEST packets to network hosts.\n\n" \
  1916. "Options:\n" \
  1917. "\t-c COUNT\tSend only COUNT pings\n" \
  1918. "\t-s SIZE\t\tSend SIZE data bytes in packets (default=56)\n" \
  1919. "\t-q\t\tQuiet mode, only displays output at start\n" \
  1920. "\t\t\tand when finished"
  1921. #endif
  1922. #define ping6_example_usage \
  1923. "$ ping6 ip6-localhost\n" \
  1924. "PING ip6-localhost (::1): 56 data bytes\n" \
  1925. "64 bytes from ::1: icmp6_seq=0 ttl=64 time=20.1 ms\n" \
  1926. "\n" \
  1927. "--- ip6-localhost ping statistics ---\n" \
  1928. "1 packets transmitted, 1 packets received, 0% packet loss\n" \
  1929. "round-trip min/avg/max = 20.1/20.1/20.1 ms\n"
  1930. #define pivot_root_trivial_usage \
  1931. "NEW_ROOT PUT_OLD"
  1932. #define pivot_root_full_usage \
  1933. "Move the current root file system to PUT_OLD and make NEW_ROOT\n" \
  1934. "the new root file system."
  1935. #define poweroff_trivial_usage \
  1936. "[-d<delay>]"
  1937. #define poweroff_full_usage \
  1938. "Halt the system and request that the kernel shut off the power.\n" \
  1939. "Options:\n" \
  1940. "\t-d\t\tdelay interval for shutting off"
  1941. #define printenv_trivial_usage \
  1942. "[VARIABLES...]"
  1943. #define printenv_full_usage \
  1944. "print all or part of environment\n\n" \
  1945. "If no environment VARIABLE specified, print them all."
  1946. #define printf_trivial_usage \
  1947. "FORMAT [ARGUMENT...]"
  1948. #define printf_full_usage \
  1949. "Formats and prints ARGUMENT(s) according to FORMAT,\n" \
  1950. "Where FORMAT controls the output exactly as in C printf."
  1951. #define printf_example_usage \
  1952. "$ printf \"Val=%d\\n\" 5\n" \
  1953. "Val=5\n"
  1954. #if !defined(CONFIG_SELINUX) && !defined(CONFIG_PS_FEATURE_WIDE)
  1955. #define USAGE_PS "\n\tThis version of ps accepts no options."
  1956. #else
  1957. #define USAGE_PS "\nOptions:"
  1958. #endif
  1959. #ifdef CONFIG_SELINUX
  1960. #define USAGE_NONSELINUX(a)
  1961. #else
  1962. #define USAGE_NONSELINUX(a) a
  1963. #endif
  1964. #ifdef CONFIG_PS_FEATURE_WIDE
  1965. #define USAGE_PS_WIDE(a) a
  1966. #else
  1967. #define USAGE_PS_WIDE(a)
  1968. #endif
  1969. #define ps_trivial_usage \
  1970. ""
  1971. #define ps_full_usage \
  1972. "Report process status\n" \
  1973. USAGE_PS \
  1974. USAGE_SELINUX("\n\t-c\tshow SE Linux context") \
  1975. USAGE_PS_WIDE("\n\tw\twide output")
  1976. #define ps_example_usage \
  1977. "$ ps\n" \
  1978. " PID Uid Gid State Command\n" \
  1979. " 1 root root S init\n" \
  1980. " 2 root root S [kflushd]\n" \
  1981. " 3 root root S [kupdate]\n" \
  1982. " 4 root root S [kpiod]\n" \
  1983. " 5 root root S [kswapd]\n" \
  1984. " 742 andersen andersen S [bash]\n" \
  1985. " 743 andersen andersen S -bash\n" \
  1986. " 745 root root S [getty]\n" \
  1987. " 2990 andersen andersen R ps\n"
  1988. #define pwd_trivial_usage \
  1989. ""
  1990. #define pwd_full_usage \
  1991. "Print the full filename of the current working directory."
  1992. #define pwd_example_usage \
  1993. "$ pwd\n" \
  1994. "/root\n"
  1995. #define rdate_trivial_usage \
  1996. "[-sp] HOST"
  1997. #define rdate_full_usage \
  1998. "Get and possibly set the system date and time from a remote HOST.\n\n" \
  1999. "Options:\n" \
  2000. "\t-s\tSet the system date and time (default)\n" \
  2001. "\t-p\tPrint the date and time"
  2002. #ifdef CONFIG_FEATURE_READLINK_FOLLOW
  2003. #define USAGE_READLINK_FOLLOW(a) a
  2004. #else
  2005. #define USAGE_READLINK_FOLLOW(a)
  2006. #endif
  2007. #define readlink_trivial_usage \
  2008. USAGE_READLINK_FOLLOW("[-f] ") "FILE"
  2009. #define readlink_full_usage \
  2010. "Displays the value of a symbolic link." \
  2011. USAGE_READLINK_FOLLOW("\n\nOptions:\n" \
  2012. "\t-f\tcanonicalize by following all symlinks")
  2013. #define readprofile_trivial_usage \
  2014. "[OPTIONS]..."
  2015. #define readprofile_full_usage \
  2016. "Options:\n" \
  2017. "\t -m <mapfile> (default: /boot/System.map)\n" \
  2018. "\t -p <profile> (default: /proc/profile)\n" \
  2019. "\t -M <mult> set the profiling multiplier to <mult>\n" \
  2020. "\t -i print only info about the sampling step\n" \
  2021. "\t -v print verbose data\n" \
  2022. "\t -a print all symbols, even if count is 0\n" \
  2023. "\t -b print individual histogram-bin counts\n" \
  2024. "\t -s print individual counters within functions\n" \
  2025. "\t -r reset all the counters (root only)\n" \
  2026. "\t -n disable byte order auto-detection"
  2027. #define realpath_trivial_usage \
  2028. "pathname ..."
  2029. #define realpath_full_usage \
  2030. "Returns the absolute pathnames of given argument."
  2031. #define reboot_trivial_usage \
  2032. "[-d<delay>]"
  2033. #define reboot_full_usage \
  2034. "Reboot the system.\n" \
  2035. "Options:\n" \
  2036. "\t-d\t\tdelay interval for rebooting"
  2037. #define renice_trivial_usage \
  2038. "{{-n INCREMENT} | PRIORITY} [[ -p | -g | -u ] ID ...]"
  2039. #define renice_full_usage \
  2040. "Changes priority of running processes.\n\n" \
  2041. "Options:\n" \
  2042. "\t-n\tadjusts current nice value (smaller is faster)\n" \
  2043. "\t-p\tprocess id(s) (default)\n" \
  2044. "\t-g\tprocess group id(s)\n" \
  2045. "\t-u\tprocess user name(s) and/or id(s)"
  2046. #define reset_trivial_usage \
  2047. ""
  2048. #define reset_full_usage \
  2049. "Resets the screen."
  2050. #define rm_trivial_usage \
  2051. "[OPTION]... FILE..."
  2052. #define rm_full_usage \
  2053. "Remove (unlink) the FILE(s). You may use '--' to\n" \
  2054. "indicate that all following arguments are non-options.\n\n" \
  2055. "Options:\n" \
  2056. "\t-i\t\talways prompt before removing each destination\n" \
  2057. "\t-f\t\tremove existing destinations, never prompt\n" \
  2058. "\t-r or -R\tremove the contents of directories recursively"
  2059. #define rm_example_usage \
  2060. "$ rm -rf /tmp/foo\n"
  2061. #define rmdir_trivial_usage \
  2062. "[OPTION]... DIRECTORY..."
  2063. #define rmdir_full_usage \
  2064. "Remove the DIRECTORY(ies), if they are empty."
  2065. #define rmdir_example_usage \
  2066. "# rmdir /tmp/foo\n"
  2067. #define rmmod_trivial_usage \
  2068. "[OPTION]... [MODULE]..."
  2069. #define rmmod_full_usage \
  2070. "Unloads the specified kernel modules from the kernel.\n\n" \
  2071. "Options:\n" \
  2072. "\t-a\tRemove all unused modules (recursively)"
  2073. #define rmmod_example_usage \
  2074. "$ rmmod tulip\n"
  2075. #ifdef CONFIG_FEATURE_IPV6
  2076. # define USAGE_ROUTE_IPV6(a) a
  2077. #else
  2078. # define USAGE_ROUTE_IPV6(a) "\t"
  2079. #endif
  2080. #define route_trivial_usage \
  2081. "[{add|del|delete}]"
  2082. #define route_full_usage \
  2083. "Edit the kernel's routing tables.\n\n" \
  2084. "Options:\n" \
  2085. "\t-n\t\tDont resolve names\n" \
  2086. "\t-e\t\tDisplay other/more information\n" \
  2087. "\t-A inet" USAGE_ROUTE_IPV6("{6}") "\tSelect address family"
  2088. #define rpm_trivial_usage \
  2089. "-i -q[ildc]p package.rpm"
  2090. #define rpm_full_usage \
  2091. "Manipulates RPM packages" \
  2092. "\n\nOptions:" \
  2093. "\n\t-i Install package" \
  2094. "\n\t-q Query package" \
  2095. "\n\t-p Query uninstalled package" \
  2096. "\n\t-i Show information" \
  2097. "\n\t-l List contents" \
  2098. "\n\t-d List documents" \
  2099. "\n\t-c List config files"
  2100. #define rpm2cpio_trivial_usage \
  2101. "package.rpm"
  2102. #define rpm2cpio_full_usage \
  2103. "Outputs a cpio archive of the rpm file."
  2104. #define run_parts_trivial_usage \
  2105. "[-t] [-a ARG] [-u MASK] DIRECTORY"
  2106. #define run_parts_full_usage \
  2107. "Run a bunch of scripts in a directory.\n\n" \
  2108. "Options:\n" \
  2109. "\t-t\tPrints what would be run, but does not actually run anything\n" \
  2110. "\t-a ARG\tPass ARG as an argument for every program invoked\n" \
  2111. "\t-u MASK\tSet the umask to MASK before executing every program"
  2112. #define rx_trivial_usage \
  2113. "FILE"
  2114. #define rx_full_usage \
  2115. "Receive a file using the xmodem protocol."
  2116. #define rx_example_usage \
  2117. "$ rx /tmp/foo\n"
  2118. #define sed_trivial_usage \
  2119. "[-efinr] pattern [files...]"
  2120. #define sed_full_usage \
  2121. "Options:\n" \
  2122. "\t-e script\tadd the script to the commands to be executed\n" \
  2123. "\t-f scriptfile\tadd script-file contents to the\n" \
  2124. "\t\t\tcommands to be executed\n" \
  2125. "\t-i\t\tedit files in-place\n" \
  2126. "\t-n\t\tsuppress automatic printing of pattern space\n" \
  2127. "\t-r\t\tuse extended regular expression syntax\n" \
  2128. "\n" \
  2129. "If no -e or -f is given, the first non-option argument is taken as the sed\n" \
  2130. "script to interpret. All remaining arguments are names of input files; if no\n" \
  2131. "input files are specified, then the standard input is read. Source files\n" \
  2132. "will not be modified unless -i option is given."
  2133. #define sed_example_usage \
  2134. "$ echo \"foo\" | sed -e 's/f[a-zA-Z]o/bar/g'\n" \
  2135. "bar\n"
  2136. #define seq_trivial_usage \
  2137. "[first [increment]] last"
  2138. #define seq_full_usage \
  2139. "Print numbers from FIRST to LAST, in steps of INCREMENT.\n" \
  2140. "FIRST, INCREMENT default to 1\n" \
  2141. "Arguments:\n" \
  2142. "\tLAST\n" \
  2143. "\tFIRST\tLAST\n" \
  2144. "\tFIRST\tINCREMENT\tLAST"
  2145. #define setkeycodes_trivial_usage \
  2146. "SCANCODE KEYCODE ..."
  2147. #define setkeycodes_full_usage \
  2148. "Set entries into the kernel's scancode-to-keycode map,\n" \
  2149. "allowing unusual keyboards to generate usable keycodes.\n\n" \
  2150. "SCANCODE may be either xx or e0xx (hexadecimal),\n" \
  2151. "and KEYCODE is given in decimal"
  2152. #define setkeycodes_example_usage \
  2153. "$ setkeycodes e030 127\n"
  2154. #define lash_trivial_usage \
  2155. "[FILE]...\n" \
  2156. "or: sh -c command [args]..."
  2157. #define lash_full_usage \
  2158. "The BusyBox LAme SHell (command interpreter)"
  2159. #define lash_notes_usage \
  2160. "This command does not yet have proper documentation.\n\n" \
  2161. "Use lash just as you would use any other shell. It properly handles pipes,\n" \
  2162. "redirects, job control, can be used as the shell for scripts, and has a\n" \
  2163. "sufficient set of builtins to do what is needed. It does not (yet) support\n" \
  2164. "Bourne Shell syntax. If you need things like \"if-then-else\", \"while\", and such\n" \
  2165. "use ash or bash. If you just need a very simple and extremely small shell,\n" \
  2166. "this will do the job."
  2167. #define last_trivial_usage \
  2168. ""
  2169. #define last_full_usage \
  2170. "Shows listing of the last users that logged into the system"
  2171. #define sha1sum_trivial_usage \
  2172. "[OPTION] [FILEs...]" \
  2173. USAGE_MD5_SHA1_SUM_CHECK("\n or: sha1sum [OPTION] -c [FILE]")
  2174. #define sha1sum_full_usage \
  2175. "Print" USAGE_MD5_SHA1_SUM_CHECK(" or check") " SHA1 checksums.\n\n" \
  2176. "Options:\n" \
  2177. "With no FILE, or when FILE is -, read standard input." \
  2178. USAGE_MD5_SHA1_SUM_CHECK("\n\n" \
  2179. "\t-c\tcheck SHA1 sums against given list\n" \
  2180. "\nThe following two options are useful only when verifying checksums:\n" \
  2181. "\t-s\tdon't output anything, status code shows success\n" \
  2182. "\t-w\twarn about improperly formated SHA1 checksum lines")
  2183. #ifdef CONFIG_FEATURE_FANCY_SLEEP
  2184. # define USAGE_FANCY_SLEEP(a) a
  2185. # define USAGE_NOT_FANCY_SLEEP(a)
  2186. #else
  2187. # define USAGE_FANCY_SLEEP(a)
  2188. # define USAGE_NOT_FANCY_SLEEP(a) a
  2189. #endif
  2190. #define sleep_trivial_usage \
  2191. USAGE_FANCY_SLEEP("[") "N" USAGE_FANCY_SLEEP("]...")
  2192. #define sleep_full_usage \
  2193. USAGE_NOT_FANCY_SLEEP("Pause for N seconds.") \
  2194. USAGE_FANCY_SLEEP( \
  2195. "Pause for a time equal to the total of the args given, where each arg can\n" \
  2196. "\t\thave an optional suffix of (s)econds, (m)inutes, (h)ours, or (d)ays.")
  2197. #define sleep_example_usage \
  2198. "$ sleep 2\n" \
  2199. "[2 second delay results]\n" \
  2200. USAGE_FANCY_SLEEP("$ sleep 1d 3h 22m 8s\n" \
  2201. "[98528 second delay results]\n")
  2202. #ifdef CONFIG_SORT_BIG
  2203. # define USAGE_SORT_BIG(a) a
  2204. #else
  2205. # define USAGE_SORT_BIG(a)
  2206. #endif
  2207. #define sort_trivial_usage \
  2208. "[-nru" USAGE_SORT_BIG("gMcszbdfimSTokt] [-o outfile] [-k start[.offset][opts][,end[.offset][opts]] [-t char") "] [FILE]..."
  2209. #define sort_full_usage \
  2210. "Sorts lines of text in the specified files\n\n" \
  2211. "Options:\n" \
  2212. USAGE_SORT_BIG( \
  2213. "\t-b\tignore leading blanks\n" \
  2214. "\t-c\tcheck whether input is sorted\n" \
  2215. "\t-d\tdictionary order (blank or alphanumeric only)\n" \
  2216. "\t-f\tignore case\n" \
  2217. "\t-g\tgeneral numerical sort\n" \
  2218. "\t-i\tignore unprintable characters\n" \
  2219. "\t-k\tspecify sort key\n" \
  2220. "\t-M\tsort month\n" \
  2221. ) \
  2222. "\t-n\tsort numbers\n" \
  2223. USAGE_SORT_BIG( \
  2224. "\t-o\toutput to file\n" \
  2225. "\t-k\tsort by key\n" \
  2226. "\t-t\tuse key separator other than whitespace\n" \
  2227. ) \
  2228. "\t-r\treverse sort order\n" \
  2229. USAGE_SORT_BIG("\t-s\tstable (don't sort ties alphabetically)\n") \
  2230. "\t-u\tsuppress duplicate lines" \
  2231. USAGE_SORT_BIG("\n\t-z\tinput terminated by nulls, not newlines\n") \
  2232. USAGE_SORT_BIG("\t-mST\tignored for GNU compatability") \
  2233. ""
  2234. #define sort_example_usage \
  2235. "$ echo -e \"e\\nf\\nb\\nd\\nc\\na\" | sort\n" \
  2236. "a\n" \
  2237. "b\n" \
  2238. "c\n" \
  2239. "d\n" \
  2240. "e\n" \
  2241. "f\n" \
  2242. USAGE_SORT_BIG( \
  2243. "$ echo -e \"c 3\\nb 2\\nd 2\" | $SORT -k 2,2n -k 1,1r\n" \
  2244. "d 2\n" \
  2245. "b 2\n" \
  2246. "c 3\n" \
  2247. ) \
  2248. ""
  2249. #define start_stop_daemon_trivial_usage \
  2250. "[OPTIONS] [--start|--stop] ... [-- arguments...]"
  2251. #define start_stop_daemon_full_usage \
  2252. "Program to start and stop services." \
  2253. "\n\nOptions:" \
  2254. "\n\t-S|--start\t\t\tstart" \
  2255. "\n\t-K|--stop\t\t\tstop" \
  2256. "\n\t-a|--startas <pathname>\t\tstarts process specified by pathname" \
  2257. "\n\t-b|--background\t\t\tforce process into background" \
  2258. "\n\t-u|--user <username>|<uid>\tstop this user's processes" \
  2259. "\n\t-x|--exec <executable>\t\tprogram to either start or check" \
  2260. "\n\t-m|--make-pidfile <filename>\tcreate the -p file and enter pid in it" \
  2261. "\n\t-n|--name <process-name>\tstop processes with this name" \
  2262. "\n\t-p|--pidfile <pid-file>\t\tsave or load pid using a pid-file" \
  2263. "\n\t-q|--quiet\t\t\tbe quiet" \
  2264. "\n\t-s|--signal <signal>\t\tsignal to send (default TERM)"
  2265. #ifdef CONFIG_FEATURE_STAT_FORMAT
  2266. # define USAGE_STAT_FORMAT(a) a
  2267. #else
  2268. # define USAGE_STAT_FORMAT(a)
  2269. #endif
  2270. #define stat_trivial_usage \
  2271. "[OPTION] FILE..."
  2272. #define stat_full_usage \
  2273. "display file (default) or filesystem status.\n\n" \
  2274. "Options:\n" \
  2275. USAGE_STAT_FORMAT("\t-c fmt\tuse the specified format\n") \
  2276. "\t-f\tdisplay filesystem status\n" \
  2277. "\t-L,-l\tdereference links\n" \
  2278. "\t-t\tdisplay info in terse form\n" \
  2279. USAGE_STAT_FORMAT( \
  2280. "\nValid format sequences for files:\n" \
  2281. " %a Access rights in octal\n" \
  2282. " %A Access rights in human readable form\n" \
  2283. " %b Number of blocks allocated (see %B)\n" \
  2284. " %B The size in bytes of each block reported by %b\n" \
  2285. " %d Device number in decimal\n" \
  2286. " %D Device number in hex\n" \
  2287. " %f Raw mode in hex\n" \
  2288. " %F File type\n" \
  2289. " %g Group ID of owner\n" \
  2290. " %G Group name of owner\n" \
  2291. " %h Number of hard links\n" \
  2292. " %i Inode number\n" \
  2293. " %n File name\n" \
  2294. " %N Quoted file name with dereference if symbolic link\n" \
  2295. " %o I/O block size\n" \
  2296. " %s Total size, in bytes\n" \
  2297. " %t Major device type in hex\n" \
  2298. " %T Minor device type in hex\n" \
  2299. " %u User ID of owner\n" \
  2300. " %U User name of owner\n" \
  2301. " %x Time of last access\n" \
  2302. " %X Time of last access as seconds since Epoch\n" \
  2303. " %y Time of last modification\n" \
  2304. " %Y Time of last modification as seconds since Epoch\n" \
  2305. " %z Time of last change\n" \
  2306. " %Z Time of last change as seconds since Epoch\n" \
  2307. "\nValid format sequences for file systems:\n" \
  2308. " %a Free blocks available to non-superuser\n" \
  2309. " %b Total data blocks in file system\n" \
  2310. " %c Total file nodes in file system\n" \
  2311. " %d Free file nodes in file system\n" \
  2312. " %f Free blocks in file system\n" \
  2313. " %i File System ID in hex\n" \
  2314. " %l Maximum length of filenames\n" \
  2315. " %n File name\n" \
  2316. " %s Block size (for faster transfers)\n" \
  2317. " %S Fundamental block size (for block counts)\n" \
  2318. " %t Type in hex\n" \
  2319. " %T Type in human readable form\n" \
  2320. )
  2321. #define strings_trivial_usage \
  2322. "[-afo] [-n length] [file ... ]"
  2323. #define strings_full_usage \
  2324. "Display printable strings in a binary file." \
  2325. "\n\nOptions:" \
  2326. "\n\t-a\tScan the whole files (this is the default)." \
  2327. "\n\t-f\tPrecede each string with the name of the file where it was found." \
  2328. "\n\t-n N\tSpecifies that at least N characters forms a sequence (default 4)" \
  2329. "\n\t-o\tEach string is preceded by its decimal offset in the file"
  2330. #define stty_trivial_usage \
  2331. "[-a|g] [-F DEVICE] [SETTING]..."
  2332. #define stty_full_usage \
  2333. "Without arguments, prints baud rate, line discipline," \
  2334. "\nand deviations from stty sane." \
  2335. "\n\nOptions:" \
  2336. "\n\t-F DEVICE\topen device instead of stdin" \
  2337. "\n\t-a\t\tprint all current settings in human-readable form" \
  2338. "\n\t-g\t\tprint in stty-readable form" \
  2339. "\n\t[SETTING]\tsee manpage"
  2340. #define su_trivial_usage \
  2341. "[OPTION]... [-] [username]"
  2342. #define su_full_usage \
  2343. "Change user id or become root.\n" \
  2344. "Options:\n" \
  2345. "\t-p\tPreserve environment"
  2346. #define sulogin_trivial_usage \
  2347. "[OPTION]... [tty-device]"
  2348. #define sulogin_full_usage \
  2349. "Single user login\n" \
  2350. "Options:\n" \
  2351. "\t-f\tDo not authenticate (user already authenticated)\n" \
  2352. "\t-h\tName of the remote host for this login\n" \
  2353. "\t-p\tPreserve environment"
  2354. #define sum_trivial_usage \
  2355. "[rs] [files...]"
  2356. #define sum_full_usage \
  2357. "checksum and count the blocks in a file\n\n" \
  2358. "Options:\n" \
  2359. "\t-r\tuse BSD sum algorithm (1K blocks)\n" \
  2360. "\t-s\tuse System V sum algorithm (512byte blocks)"
  2361. #define swapoff_trivial_usage \
  2362. "[OPTION] [DEVICE]"
  2363. #define swapoff_full_usage \
  2364. "Stop swapping virtual memory pages on DEVICE.\n\n" \
  2365. "Options:\n" \
  2366. "\t-a\tStop swapping on all swap devices"
  2367. #define swapon_trivial_usage \
  2368. "[OPTION] [DEVICE]"
  2369. #define swapon_full_usage \
  2370. "Start swapping virtual memory pages on DEVICE.\n\n" \
  2371. "Options:\n" \
  2372. "\t-a\tStart swapping on all swap devices"
  2373. #define sync_trivial_usage \
  2374. ""
  2375. #define sync_full_usage \
  2376. "Write all buffered filesystem blocks to disk."
  2377. #ifdef CONFIG_FEATURE_ROTATE_LOGFILE
  2378. # define USAGE_ROTATE_LOGFILE(a) a
  2379. #else
  2380. # define USAGE_ROTATE_LOGFILE(a)
  2381. #endif
  2382. #ifdef CONFIG_FEATURE_REMOTE_LOG
  2383. # define USAGE_REMOTE_LOG(a) a
  2384. #else
  2385. # define USAGE_REMOTE_LOG(a)
  2386. #endif
  2387. #ifdef CONFIG_FEATURE_IPC_SYSLOG
  2388. # define USAGE_IPC_LOG(a) a
  2389. #else
  2390. # define USAGE_IPC_LOG(a)
  2391. #endif
  2392. #ifdef CONFIG_SYSCTL
  2393. #define sysctl_trivial_usage \
  2394. "[OPTIONS]... [VALUE]..."
  2395. #define sysctl_full_usage
  2396. "sysctl - configure kernel parameters at runtime\n\n" \
  2397. "Options:\n" \
  2398. "\t-n\tUse this option to disable printing of the key name when printing values\n" \
  2399. "\t-w\tUse this option when you want to change a sysctl setting\n" \
  2400. "\t-p\tLoad in sysctl settings from the file specified or /etc/sysctl.conf if none given\n" \
  2401. "\t-a\tDisplay all values currently available\n" \
  2402. "\t-A\tDisplay all values currently available in table form"
  2403. #define sysctl_example_usage
  2404. "sysctl [-n] variable ...\n" \
  2405. "sysctl [-n] -w variable=value ...\n" \
  2406. "sysctl [-n] -a\n" \
  2407. "sysctl [-n] -p <file>\t(default /etc/sysctl.conf)\n" \
  2408. "sysctl [-n] -A\n"
  2409. #endif
  2410. #define syslogd_trivial_usage \
  2411. "[OPTION]..."
  2412. #define syslogd_full_usage \
  2413. "Linux system and kernel logging utility.\n" \
  2414. "Note that this version of syslogd ignores /etc/syslog.conf.\n\n" \
  2415. "Options:\n" \
  2416. "\t-m MIN\t\tMinutes between MARK lines (default=20, 0=off)\n" \
  2417. "\t-n\t\tRun as a foreground process\n" \
  2418. "\t-O FILE\t\tUse an alternate log file (default=/var/log/messages)\n" \
  2419. "\t-S\t\tMake logging output smaller." \
  2420. USAGE_ROTATE_LOGFILE( \
  2421. "\n\t-s SIZE\t\tMax size (KB) before rotate (default=200KB, 0=off)\n" \
  2422. "\t-b NUM\t\tNumber of rotated logs to keep (default=1, max=99, 0=purge)") \
  2423. USAGE_REMOTE_LOG( \
  2424. "\n\t-R HOST[:PORT]\tLog to IP or hostname on PORT (default PORT=514/UDP)\n" \
  2425. "\t-L\t\tLog locally and via network logging (default is network only)") \
  2426. USAGE_IPC_LOG( \
  2427. "\n\t-C [size(KiB)]\tLog to a circular buffer (read the buffer using logread)")
  2428. #define syslogd_example_usage \
  2429. "$ syslogd -R masterlog:514\n" \
  2430. "$ syslogd -R 192.168.1.1:601\n"
  2431. #ifndef CONFIG_FEATURE_FANCY_TAIL
  2432. # define USAGE_UNSIMPLE_TAIL(a)
  2433. #else
  2434. # define USAGE_UNSIMPLE_TAIL(a) a
  2435. #endif
  2436. #define tail_trivial_usage \
  2437. "[OPTION]... [FILE]..."
  2438. #define tail_full_usage \
  2439. "Print last 10 lines of each FILE to standard output.\n" \
  2440. "With more than one FILE, precede each with a header giving the\n" \
  2441. "file name. With no FILE, or when FILE is -, read standard input.\n\n" \
  2442. "Options:\n" \
  2443. USAGE_UNSIMPLE_TAIL("\t-c N[kbm]\toutput the last N bytes\n") \
  2444. "\t-n N[kbm]\tprint last N lines instead of last 10\n" \
  2445. "\t-f\t\toutput data as the file grows" \
  2446. USAGE_UNSIMPLE_TAIL( "\n\t-q\t\tnever output headers giving file names\n" \
  2447. "\t-s SEC\t\twait SEC seconds between reads with -f\n" \
  2448. "\t-v\t\talways output headers giving file names\n\n" \
  2449. "If the first character of N (bytes or lines) is a '+', output begins with \n" \
  2450. "the Nth item from the start of each file, otherwise, print the last N items\n" \
  2451. "in the file. N bytes may be suffixed by k (x1024), b (x512), or m (1024^2)." )
  2452. #define tail_example_usage \
  2453. "$ tail -n 1 /etc/resolv.conf\n" \
  2454. "nameserver 10.0.0.1\n"
  2455. #ifdef CONFIG_FEATURE_TAR_CREATE
  2456. # define USAGE_TAR_CREATE(a) a
  2457. #else
  2458. # define USAGE_TAR_CREATE(a)
  2459. #endif
  2460. #ifdef CONFIG_FEATURE_TAR_EXCLUDE
  2461. # define USAGE_TAR_EXCLUDE(a) a
  2462. #else
  2463. # define USAGE_TAR_EXCLUDE(a)
  2464. #endif
  2465. #ifdef CONFIG_FEATURE_TAR_GZIP
  2466. # define USAGE_TAR_GZIP(a) a
  2467. #else
  2468. # define USAGE_TAR_GZIP(a)
  2469. #endif
  2470. #ifdef CONFIG_FEATURE_TAR_BZIP2
  2471. # define USAGE_TAR_BZIP2(a) a
  2472. #else
  2473. # define USAGE_TAR_BZIP2(a)
  2474. #endif
  2475. #ifdef CONFIG_FEATURE_TAR_COMPRESS
  2476. # define USAGE_TAR_COMPRESS(a) a
  2477. #else
  2478. # define USAGE_TAR_COMPRESS(a)
  2479. #endif
  2480. #define tar_trivial_usage \
  2481. "-[" USAGE_TAR_CREATE("c") USAGE_TAR_GZIP("z") USAGE_TAR_BZIP2("j") USAGE_TAR_COMPRESS("Z") "xtvO] " \
  2482. USAGE_TAR_EXCLUDE("[-X FILE]") \
  2483. "[-f TARFILE] [-C DIR] [FILE(s)] ..."
  2484. #define tar_full_usage \
  2485. "Create, extract, or list files from a tar file.\n\n" \
  2486. "Options:\n" \
  2487. USAGE_TAR_CREATE("\tc\t\tcreate\n") \
  2488. "\tx\t\textract\n" \
  2489. "\tt\t\tlist\n" \
  2490. "\nArchive format selection:\n" \
  2491. USAGE_TAR_GZIP("\tz\t\tFilter the archive through gzip\n") \
  2492. USAGE_TAR_BZIP2("\tj\t\tFilter the archive through bzip2\n") \
  2493. USAGE_TAR_COMPRESS("\tZ\t\tFilter the archive through compress\n") \
  2494. "\nFile selection:\n" \
  2495. "\tf\t\tname of TARFILE or \"-\" for stdin\n" \
  2496. "\tO\t\textract to stdout\n" \
  2497. USAGE_TAR_EXCLUDE( \
  2498. "\texclude\t\tfile to exclude\n" \
  2499. "\tX\t\tfile with names to exclude\n" \
  2500. ) \
  2501. "\tC\t\tchange to directory DIR before operation\n" \
  2502. "\tv\t\tverbosely list files processed"
  2503. #define tar_example_usage \
  2504. "$ zcat /tmp/tarball.tar.gz | tar -xf -\n" \
  2505. "$ tar -cf /tmp/tarball.tar /usr/local\n"
  2506. #define tee_trivial_usage \
  2507. "[OPTION]... [FILE]..."
  2508. #define tee_full_usage \
  2509. "Copy standard input to each FILE, and also to standard output.\n\n" \
  2510. "Options:\n" \
  2511. "\t-a\tappend to the given FILEs, do not overwrite\n" \
  2512. "\t-i\tignore interrupt signals (SIGINT)"
  2513. #define tee_example_usage \
  2514. "$ echo \"Hello\" | tee /tmp/foo\n" \
  2515. "$ cat /tmp/foo\n" \
  2516. "Hello\n"
  2517. #ifdef CONFIG_FEATURE_TELNET_AUTOLOGIN
  2518. #define telnet_trivial_usage \
  2519. "[-a] [-l USER] HOST [PORT]"
  2520. #define telnet_full_usage \
  2521. "Telnet is used to establish interactive communication with another\n" \
  2522. "computer over a network using the TELNET protocol.\n\n" \
  2523. "Options:\n" \
  2524. "\t-a\t\tAttempt an automatic login with the USER variable\n" \
  2525. "\t-l USER\t\tAttempt an automatic login with the USER argument\n" \
  2526. "\tHOST\t\tThe official name, alias or the IP address of the\n" \
  2527. "\t\t\tremote host.\n" \
  2528. "\tPORT\t\tThe remote port number to connect to. If it is not\n" \
  2529. "\t\t\tspecified, the default telnet (23) port is used."
  2530. #else
  2531. #define telnet_trivial_usage \
  2532. "HOST [PORT]"
  2533. #define telnet_full_usage \
  2534. "Telnet is used to establish interactive communication with another\n" \
  2535. "computer over a network using the TELNET protocol."
  2536. #endif
  2537. #ifdef CONFIG_FEATURE_TELNETD_INETD
  2538. #define telnetd_trivial_usage \
  2539. "(inetd mode) [OPTION]"
  2540. #define telnetd_full_usage \
  2541. "Telnetd uses incoming TELNET connections via inetd.\n" \
  2542. "Options:\n" \
  2543. "\t-l LOGIN\texec LOGIN on connect (default /bin/sh)\n" \
  2544. "\t-f issue_file\tDisplay issue_file instead of /etc/issue"
  2545. #else
  2546. #define telnetd_trivial_usage \
  2547. "[OPTION]"
  2548. #define telnetd_full_usage \
  2549. "Telnetd listens for incoming TELNET connections on PORT.\n" \
  2550. "Options:\n" \
  2551. "\t-p PORT\tlisten for connections on PORT (default 23)\n" \
  2552. "\t-l LOGIN\texec LOGIN on connect (default /bin/sh)\n" \
  2553. "\t-f issue_file\tDisplay issue_file instead of /etc/issue"
  2554. #endif
  2555. #define test_trivial_usage \
  2556. "EXPRESSION\n or [ EXPRESSION ]"
  2557. #define test_full_usage \
  2558. "Checks file types and compares values returning an exit\n" \
  2559. "code determined by the value of EXPRESSION."
  2560. #define test_example_usage \
  2561. "$ test 1 -eq 2\n" \
  2562. "$ echo $?\n" \
  2563. "1\n" \
  2564. "$ test 1 -eq 1\n" \
  2565. "$ echo $?\n" \
  2566. "0\n" \
  2567. "$ [ -d /etc ]\n" \
  2568. "$ echo $?\n" \
  2569. "0\n" \
  2570. "$ [ -d /junk ]\n" \
  2571. "$ echo $?\n" \
  2572. "1\n"
  2573. #ifdef CONFIG_FEATURE_TFTP_GET
  2574. # define USAGE_TFTP_GET(a) a
  2575. #else
  2576. # define USAGE_TFTP_GET(a)
  2577. #endif
  2578. #ifdef CONFIG_FEATURE_TFTP_PUT
  2579. # define USAGE_TFTP_PUT(a) a
  2580. #else
  2581. # define USAGE_TFTP_PUT(a)
  2582. #endif
  2583. #ifdef CONFIG_FEATURE_TFTP_BLOCKSIZE
  2584. # define USAGE_TFTP_BS(a) a
  2585. #else
  2586. # define USAGE_TFTP_BS(a)
  2587. #endif
  2588. #define tftp_trivial_usage \
  2589. "[OPTION]... HOST [PORT]"
  2590. #define tftp_full_usage \
  2591. "Transfers a file from/to a tftp server using \"octet\" mode.\n\n" \
  2592. "Options:\n" \
  2593. "\t-l FILE\tLocal FILE\n" \
  2594. "\t-r FILE\tRemote FILE" \
  2595. USAGE_TFTP_GET( \
  2596. "\n\t-g\tGet file" \
  2597. ) \
  2598. USAGE_TFTP_PUT( \
  2599. "\n\t-p\tPut file" \
  2600. ) \
  2601. USAGE_TFTP_BS( \
  2602. "\n\t-b SIZE\tTransfer blocks of SIZE octets" \
  2603. )
  2604. #define time_trivial_usage \
  2605. "[OPTION]... COMMAND [ARGS...]"
  2606. #define time_full_usage \
  2607. "Runs the program COMMAND with arguments ARGS. When COMMAND finishes,\n" \
  2608. "COMMAND's resource usage information is displayed\n\n" \
  2609. "Options:\n" \
  2610. "\t-v\tDisplays verbose resource usage information"
  2611. #define top_trivial_usage \
  2612. "[-d <seconds>]"
  2613. #define top_full_usage \
  2614. "top provides an view of processor activity in real time.\n" \
  2615. "This utility reads the status for all processes in /proc each <seconds>\n" \
  2616. "and shows the status for however many processes will fit on the screen.\n" \
  2617. "This utility will not show processes that are started after program startup,\n" \
  2618. "but it will show the EXIT status for and PIDs that exit while it is running."
  2619. #define touch_trivial_usage \
  2620. "[-c] FILE [FILE ...]"
  2621. #define touch_full_usage \
  2622. "Update the last-modified date on the given FILE[s].\n\n" \
  2623. "Options:\n" \
  2624. "\t-c\tDo not create any files"
  2625. #define touch_example_usage \
  2626. "$ ls -l /tmp/foo\n" \
  2627. "/bin/ls: /tmp/foo: No such file or directory\n" \
  2628. "$ touch /tmp/foo\n" \
  2629. "$ ls -l /tmp/foo\n" \
  2630. "-rw-rw-r-- 1 andersen andersen 0 Apr 15 01:11 /tmp/foo\n"
  2631. #define tr_trivial_usage \
  2632. "[-cds] STRING1 [STRING2]"
  2633. #define tr_full_usage \
  2634. "Translate, squeeze, and/or delete characters from\n" \
  2635. "standard input, writing to standard output.\n\n" \
  2636. "Options:\n" \
  2637. "\t-c\ttake complement of STRING1\n" \
  2638. "\t-d\tdelete input characters coded STRING1\n" \
  2639. "\t-s\tsqueeze multiple output characters of STRING2 into one character"
  2640. #define tr_example_usage \
  2641. "$ echo \"gdkkn vnqkc\" | tr [a-y] [b-z]\n" \
  2642. "hello world\n"
  2643. #define traceroute_trivial_usage \
  2644. "[-dnrv] [-m max_ttl] [-p port#] [-q nqueries]\n" \
  2645. "\t[-s src_addr] [-t tos] [-w wait] host [data size]"
  2646. #define traceroute_full_usage \
  2647. "trace the route ip packets follow going to \"host\"\n" \
  2648. "Options:\n" \
  2649. "\t-d\tset SO_DEBUG options to socket\n" \
  2650. "\t-n\tPrint hop addresses numerically rather than symbolically\n" \
  2651. "\t-r\tBypass the normal routing tables and send directly to a host\n" \
  2652. "\t-v\tVerbose output\n" \
  2653. "\t-m max_ttl\tSet the max time-to-live (max number of hops)\n" \
  2654. "\t-p port#\tSet the base UDP port number used in probes\n" \
  2655. "\t\t(default is 33434)\n" \
  2656. "\t-q nqueries\tSet the number of probes per ``ttl'' to nqueries\n" \
  2657. "\t\t(default is 3)\n" \
  2658. "\t-s src_addr\tUse the following IP address as the source address\n" \
  2659. "\t-t tos\tSet the type-of-service in probe packets to the following value\n" \
  2660. "\t\t(default 0)\n" \
  2661. "\t-w wait\tSet the time (in seconds) to wait for a response to a probe\n" \
  2662. "\t\t(default 3 sec.)"
  2663. #define true_trivial_usage \
  2664. ""
  2665. #define true_full_usage \
  2666. "Return an exit code of TRUE (0)."
  2667. #define true_example_usage \
  2668. "$ true\n" \
  2669. "$ echo $?\n" \
  2670. "0\n"
  2671. #define tty_trivial_usage \
  2672. ""
  2673. #define tty_full_usage \
  2674. "Print the file name of the terminal connected to standard input.\n\n" \
  2675. "Options:\n" \
  2676. "\t-s\tprint nothing, only return an exit status"
  2677. #define tty_example_usage \
  2678. "$ tty\n" \
  2679. "/dev/tty2\n"
  2680. #define tune2fs_trivial_usage \
  2681. "[-c max-mounts-count] [-e errors-behavior] [-g group] " \
  2682. "[-i interval[d|m|w]] [-j] [-J journal-options] [-l] [-s sparse-flag] " \
  2683. "[-m reserved-blocks-percent] [-o [^]mount-options[,...]] " \
  2684. "[-r reserved-blocks-count] [-u user] [-C mount-count] " \
  2685. "[-L volume-label] [-M last-mounted-dir] [-O [^]feature[,...]] " \
  2686. "[-T last-check-time] [-U UUID] device"
  2687. #define tune2fs_full_usage \
  2688. "Adjust filesystem options on ext[23] filesystems.\n\n"
  2689. #define udhcpc_trivial_usage \
  2690. "[-fbnqv] [-c CLIENTID] [-H HOSTNAME] [-i INTERFACE]\n[-p pidfile] [-r IP] [-s script]"
  2691. #define udhcpc_full_usage \
  2692. "\t-c,\t--clientid=CLIENTID\tClient identifier\n" \
  2693. "\t-H,\t--hostname=HOSTNAME\tClient hostname\n" \
  2694. "\t-h,\t \tAlias for -H\n" \
  2695. "\t-f,\t--foreground\tDo not fork after getting lease\n" \
  2696. "\t-b,\t--background\tFork to background if lease cannot be immediately negotiated\n" \
  2697. "\t-i,\t--interface=INTERFACE\tInterface to use (default: eth0)\n" \
  2698. "\t-n,\t--now\tExit with failure if lease cannot be immediately negotiated\n" \
  2699. "\t-p,\t--pidfile=file\tStore process ID of daemon in file\n" \
  2700. "\t-q,\t--quit\tQuit after obtaining lease\n" \
  2701. "\t-r,\t--request=IP\tIP address to request (default: none)\n" \
  2702. "\t-s,\t--script=file\tRun file at dhcp events (default: /usr/share/udhcpc/default.script)\n" \
  2703. "\t-v,\t--version\tDisplay version"
  2704. #define udhcpd_trivial_usage \
  2705. "[configfile]\n" \
  2706. #define udhcpd_full_usage \
  2707. ""
  2708. #ifdef CONFIG_FEATURE_MOUNT_FORCE
  2709. # define USAGE_MOUNT_FORCE(a) a
  2710. #else
  2711. # define USAGE_MOUNT_FORCE(a)
  2712. #endif
  2713. #define umount_trivial_usage \
  2714. "[flags] FILESYSTEM|DIRECTORY"
  2715. #define umount_full_usage \
  2716. "Unmount file systems\n" \
  2717. "\nFlags:\n" "\t-a\tUnmount all file systems" \
  2718. USAGE_MTAB(" in /etc/mtab\n\t-n\tDon't erase /etc/mtab entries") \
  2719. "\n\t-r\tTry to remount devices as read-only if mount is busy" \
  2720. USAGE_MOUNT_FORCE("\n\t-f\tForce umount (i.e., unreachable NFS server)") \
  2721. USAGE_MOUNT_LOOP("\n\t-l\tDo not free loop device (if a loop device has been used)")
  2722. #define umount_example_usage \
  2723. "$ umount /dev/hdc1 \n"
  2724. #define uname_trivial_usage \
  2725. "[OPTION]..."
  2726. #define uname_full_usage \
  2727. "Print certain system information. With no OPTION, same as -s.\n\n" \
  2728. "Options:\n" \
  2729. "\t-a\tprint all information\n" \
  2730. "\t-m\tthe machine (hardware) type\n" \
  2731. "\t-n\tprint the machine's network node hostname\n" \
  2732. "\t-r\tprint the operating system release\n" \
  2733. "\t-s\tprint the operating system name\n" \
  2734. "\t-p\tprint the host processor type\n" \
  2735. "\t-v\tprint the operating system version"
  2736. #define uname_example_usage \
  2737. "$ uname -a\n" \
  2738. "Linux debian 2.4.23 #2 Tue Dec 23 17:09:10 MST 2003 i686 GNU/Linux\n"
  2739. #define uncompress_trivial_usage \
  2740. "[-c] [-f] [ name ... ]"
  2741. #define uncompress_full_usage \
  2742. "Uncompress .Z file[s]\n" \
  2743. "Options:\n" \
  2744. "\t-c\textract to stdout\n" \
  2745. "\t-f\tforce overwrite an existing file"
  2746. #define uniq_trivial_usage \
  2747. "[OPTION]... [INPUT [OUTPUT]]"
  2748. #define uniq_full_usage \
  2749. "Discard all but one of successive identical lines from INPUT\n" \
  2750. "(or standard input), writing to OUTPUT (or standard output).\n\n" \
  2751. "Options:\n" \
  2752. "\t-c\tprefix lines by the number of occurrences\n" \
  2753. "\t-d\tonly print duplicate lines\n" \
  2754. "\t-u\tonly print unique lines\n" \
  2755. "\t-f N\tskip the first N fields\n" \
  2756. "\t-s N\tskip the first N chars (after any skipped fields)"
  2757. #define uniq_example_usage \
  2758. "$ echo -e \"a\\na\\nb\\nc\\nc\\na\" | sort | uniq\n" \
  2759. "a\n" \
  2760. "b\n" \
  2761. "c\n"
  2762. #define unix2dos_trivial_usage \
  2763. "[option] [FILE]"
  2764. #define unix2dos_full_usage \
  2765. "Converts FILE from unix format to dos format. When no option\n" \
  2766. "is given, the input is converted to the opposite output format.\n" \
  2767. "When no file is given, uses stdin for input and stdout for output.\n" \
  2768. "Options:\n" \
  2769. "\t-u\toutput will be in UNIX format\n" \
  2770. "\t-d\toutput will be in DOS format"
  2771. #define unzip_trivial_usage \
  2772. "[-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]"
  2773. #define unzip_full_usage \
  2774. "Extracts files from ZIP archives.\n\n" \
  2775. "Options:\n" \
  2776. "\t-l\tlist archive contents (short form)\n" \
  2777. "\t-n\tnever overwrite existing files (default)\n" \
  2778. "\t-o\toverwrite files without prompting\n" \
  2779. "\t-p\tsend output to stdout\n" \
  2780. "\t-q\tbe quiet\n" \
  2781. "\t-x\texclude these files\n" \
  2782. "\t-d\textract files into this directory"
  2783. #define uptime_trivial_usage \
  2784. ""
  2785. #define uptime_full_usage \
  2786. "Display the time since the last boot."
  2787. #define uptime_example_usage \
  2788. "$ uptime\n" \
  2789. " 1:55pm up 2:30, load average: 0.09, 0.04, 0.00\n"
  2790. #define usleep_trivial_usage \
  2791. "N"
  2792. #define usleep_full_usage \
  2793. "Pause for N microseconds."
  2794. #define usleep_example_usage \
  2795. "$ usleep 1000000\n" \
  2796. "[pauses for 1 second]\n"
  2797. #define uudecode_trivial_usage \
  2798. "[FILE]..."
  2799. #define uudecode_full_usage \
  2800. "Uudecode a file that is uuencoded.\n\n" \
  2801. "Options:\n" \
  2802. "\t-o FILE\tdirect output to FILE"
  2803. #define uudecode_example_usage \
  2804. "$ uudecode -o busybox busybox.uu\n" \
  2805. "$ ls -l busybox\n" \
  2806. "-rwxr-xr-x 1 ams ams 245264 Jun 7 21:35 busybox\n"
  2807. #define uuencode_trivial_usage \
  2808. "[OPTION] [INFILE] REMOTEFILE"
  2809. #define uuencode_full_usage \
  2810. "Uuencode a file.\n\n" \
  2811. "Options:\n" \
  2812. "\t-m\tuse base64 encoding per RFC1521"
  2813. #define uuencode_example_usage \
  2814. "$ uuencode busybox busybox\n" \
  2815. "begin 755 busybox\n" \
  2816. "<encoded file snipped>\n" \
  2817. "$ uudecode busybox busybox > busybox.uu\n" \
  2818. "$\n"
  2819. #define vconfig_trivial_usage \
  2820. "COMMAND [OPTIONS] ..."
  2821. #define vconfig_full_usage \
  2822. "vconfig lets you create and remove virtual ethernet devices.\n\n" \
  2823. "Options:\n" \
  2824. "\tadd [interface-name] [vlan_id]\n" \
  2825. "\trem [vlan-name]\n" \
  2826. "\tset_flag [interface-name] [flag-num] [0 | 1]\n" \
  2827. "\tset_egress_map [vlan-name] [skb_priority] [vlan_qos]\n" \
  2828. "\tset_ingress_map [vlan-name] [skb_priority] [vlan_qos]\n" \
  2829. "\tset_name_type [name-type]"
  2830. #define vi_trivial_usage \
  2831. "[OPTION] [FILE]..."
  2832. #define vi_full_usage \
  2833. "edit FILE.\n\n" \
  2834. "Options:\n" \
  2835. "\t-R\tRead-only- do not write to the file"
  2836. #define vlock_trivial_usage \
  2837. "[OPTIONS]"
  2838. #define vlock_full_usage \
  2839. "Lock a virtual terminal. A password is required to unlock\n" \
  2840. "Options:\n" \
  2841. "\t-a\tLock all VTs"
  2842. #define watch_trivial_usage \
  2843. "[-n <seconds>] COMMAND..."
  2844. #define watch_full_usage \
  2845. "Executes a program periodically.\n" \
  2846. "Options:\n" \
  2847. "\t-n\tLoop period in seconds - default is 2"
  2848. #define watch_example_usage \
  2849. "$ watch date\n" \
  2850. "Mon Dec 17 10:31:40 GMT 2000\n" \
  2851. "Mon Dec 17 10:31:42 GMT 2000\n" \
  2852. "Mon Dec 17 10:31:44 GMT 2000"
  2853. #define watchdog_trivial_usage \
  2854. "[-t <seconds>] DEV"
  2855. #define watchdog_full_usage \
  2856. "Periodically write to watchdog device DEV.\n" \
  2857. "Options:\n" \
  2858. "\t-t\tTimer period in seconds - default is 30"
  2859. #define wc_trivial_usage \
  2860. "[OPTION]... [FILE]..."
  2861. #define wc_full_usage \
  2862. "Print line, word, and byte counts for each FILE, and a total line if\n" \
  2863. "more than one FILE is specified. With no FILE, read standard input.\n\n" \
  2864. "Options:\n" \
  2865. "\t-c\tprint the byte counts\n" \
  2866. "\t-l\tprint the newline counts\n" \
  2867. "\t-L\tprint the length of the longest line\n" \
  2868. "\t-w\tprint the word counts"
  2869. #define wc_example_usage \
  2870. "$ wc /etc/passwd\n" \
  2871. " 31 46 1365 /etc/passwd\n"
  2872. #define wget_trivial_usage \
  2873. "[-c|--continue] [-q|--quiet] [-O|--output-document file]\n" \
  2874. "\t\t[--header 'header: value'] [-Y|--proxy on/off] [-P DIR] url"
  2875. #define wget_full_usage \
  2876. "wget retrieves files via HTTP or FTP\n\n" \
  2877. "Options:\n" \
  2878. "\t-c\tcontinue retrieval of aborted transfers\n" \
  2879. "\t-q\tquiet mode - do not print\n" \
  2880. "\t-P\tSet directory prefix to DIR\n" \
  2881. "\t-O\tsave to filename ('-' for stdout)\n" \
  2882. "\t-Y\tuse proxy ('on' or 'off')"
  2883. #define which_trivial_usage \
  2884. "[COMMAND ...]"
  2885. #define which_full_usage \
  2886. "Locates a COMMAND."
  2887. #define which_example_usage \
  2888. "$ which login\n" \
  2889. "/bin/login\n"
  2890. #define who_trivial_usage \
  2891. " "
  2892. #define who_full_usage \
  2893. "Prints the current user names and related information"
  2894. #define whoami_trivial_usage \
  2895. ""
  2896. #define whoami_full_usage \
  2897. "Prints the user name associated with the current effective user id."
  2898. #ifdef CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
  2899. #define USAGE_XARGS_CONFIRMATION(a) a
  2900. #else
  2901. #define USAGE_XARGS_CONFIRMATION(a)
  2902. #endif
  2903. #ifdef CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
  2904. #define USAGE_XARGS_TERMOPT(a) a
  2905. #else
  2906. #define USAGE_XARGS_TERMOPT(a)
  2907. #endif
  2908. #ifdef CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM
  2909. #define USAGE_XARGS_ZERO_TERM(a) a
  2910. #else
  2911. #define USAGE_XARGS_ZERO_TERM(a)
  2912. #endif
  2913. #define xargs_trivial_usage \
  2914. "[COMMAND] [OPTIONS] [ARGS...]"
  2915. #define xargs_full_usage \
  2916. "Executes COMMAND on every item given by standard input.\n\n" \
  2917. "Options:\n" \
  2918. USAGE_XARGS_CONFIRMATION("\t-p\tPrompt the user about whether to run each command\n") \
  2919. "\t-r\tDo not run command for empty readed lines\n" \
  2920. USAGE_XARGS_TERMOPT("\t-x\tExit if the size is exceeded\n") \
  2921. USAGE_XARGS_ZERO_TERM("\t-0\tInput filenames are terminated by a null character\n") \
  2922. "\t-t\tPrint the command line on stderr before executing it"
  2923. #define xargs_example_usage \
  2924. "$ ls | xargs gzip\n" \
  2925. "$ find . -name '*.c' -print | xargs rm\n"
  2926. #define yes_trivial_usage \
  2927. "[OPTION]... [STRING]..."
  2928. #define yes_full_usage \
  2929. "Repeatedly outputs a line with all specified STRING(s), or 'y'."
  2930. #define zcat_trivial_usage \
  2931. "FILE"
  2932. #define zcat_full_usage \
  2933. "Uncompress to stdout."
  2934. #define zcip_trivial_usage \
  2935. "[OPTIONS] ifname script"
  2936. #define zcip_full_usage \
  2937. "zcip manages a ZeroConf IPv4 link-local address.\n" \
  2938. "Options:\n" \
  2939. "\t-f foreground mode\n" \
  2940. "\t-q quit after address (no daemon)\n" \
  2941. "\t-r 169.254.x.x request this address first\n" \
  2942. "\t-v verbose; show version\n"
  2943. #endif /* __BB_USAGE_H__ */