posix_conformance.txt 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. Busybox POSIX conformance table
  2. See POSIX documentation (1003.1-2008) here:
  3. http://www.opengroup.org/onlinepubs/9699919799/
  4. And the complete list of all utilities that POSIX covers:
  5. http://www.opengroup.org/onlinepubs/9699919799/idx/utilities.html
  6. This listing is a work in progress, and currently only covers
  7. tool options (not operands, environment variables, return codes, etc..).
  8. For each option it is set if it (a) exists and (b) compliant to POSIX 2008.
  9. Some options exist but there is no value in the 'compliant' column: that
  10. means no one has yet bothered to make sure that the option does what it is
  11. required to do.
  12. -----------------------------------------------
  13. POSIX Tools supported only as shell built-ins (ash shell):
  14. alias, bg, cd, fg, getopts, hash, jobs, read, type, umask, ulimit,
  15. unalias, wait, write
  16. POSIX Tools not supported:
  17. asa, at, batch, bc, c99, command, compress, csplit, ex, fc, file,
  18. gencat, getconf, iconv, join, link, locale, localedef, lp, m4,
  19. mailx, newgrp, nl, pathchk, pax, pr, qalter, qdel, qhold, qmove,
  20. qmsg, qrerun, qrls, qselect, qsig, qstat, qsub, tabs, talk, tput,
  21. tsort, unlink, uucp, uustat, uux
  22. POSIX Tools not supported (DEVELOPMENT):
  23. admin, cflow, ctags, cxref, delta, fort77, get, lex, make, nm, prs, rmdel,
  24. sact, sccs, strip, unget, val, what, yacc
  25. POSIX Tools supported:
  26. Note: echo, printf, kill, pwd documented here as stand-alone applets,
  27. not as ash built-ins.
  28. ar POSIX options ********************* Failed to recognize zip & tar (did not compare to regular ar)
  29. option | exists | compliant | remarks
  30. -C | no | no |
  31. -T | no | no |
  32. -a | no | no |
  33. -b | no | no |
  34. -c | no | no |
  35. -d | no | no |
  36. -i | no | no |
  37. -m | no | no |
  38. -p | yes | |
  39. -q | no | no |
  40. -r | no | no |
  41. -s | no | no |
  42. -t | yes | |
  43. -u | no | no |
  44. -v | yes | |
  45. -x | yes | |
  46. ar Busybox specific options:
  47. -o
  48. awk POSIX options
  49. option | exists | compliant | remarks
  50. -F ERE | yes | |
  51. -f progfile | yes | |
  52. -v assignment | yes | |
  53. awk Busybox specific options: None
  54. basename POSIX options: None
  55. basename Busybox specific options: None
  56. cal POSIX options: None
  57. cal Busybox specific options:
  58. -y, -j
  59. cat POSIX options
  60. option | exists | compliant | remarks
  61. -u | yes | no | option is ignored
  62. cat Busybox specific options: None
  63. chgrp POSIX options
  64. option | exists | compliant | remarks
  65. -H | yes | |
  66. -L | yes | |
  67. -P | yes | |
  68. -R | yes | |
  69. -h | yes | |
  70. chgrp Busybox specific options:
  71. -f, -c, -v
  72. chmod POSIX options
  73. option | exists | compliant | remarks
  74. -R | yes | yes |
  75. chmod Busybox specific options:
  76. -f, -v, -c
  77. chown POSIX options *********************************************
  78. option | exists | compliant | remarks
  79. -H | yes | | It seems like all flags are supported (according to printout), but
  80. -L | yes | | it fails to work on my machine
  81. -P | yes | |
  82. -R | yes | |
  83. -h | yes | |
  84. chown Busybox specific options:
  85. -f, -c, -v
  86. cksum POSIX options: None
  87. cksum Busybox specific options: None
  88. cmp POSIX options
  89. option | exists | compliant | remarks
  90. -l | yes | yes |
  91. -s | yes | yes |
  92. cmp Busybox specific options:
  93. comm POSIX options
  94. option | exists | compliant | remarks
  95. -1 | yes | yes |
  96. -2 | yes | yes |
  97. -3 | yes | yes |
  98. comm Busybox specific options: None
  99. cp POSIX options
  100. option | exists | compliant | remarks
  101. -H | yes | yes |
  102. -L | yes | yes |
  103. -P | yes | yes |
  104. -R | yes | yes |
  105. -f | yes | yes |
  106. -i | yes | yes |
  107. -p | yes | yes |
  108. cp Busybox specific options:
  109. -d, -a, -s, -c, -r, -l
  110. crontab POSIX options
  111. option | exists | compliant | remarks
  112. -e | yes | |
  113. -l | yes | |
  114. -r | yes | |
  115. crontab Busybox specific options:
  116. -u, -c
  117. cut POSIX options
  118. option | exists | compliant | remarks
  119. -b list | yes | yes |
  120. -c list | yes | yes |
  121. -d delim | yes | yes |
  122. -f list | yes | yes |
  123. -n | yes | yes |
  124. -s | yes | yes |
  125. cut Busybox specific options: None
  126. date POSIX options
  127. option | exists | compliant | remarks
  128. -u | yes | yes |
  129. date Busybox specific options:
  130. -I[SPEC], -d TIME, -r FILE, -R, -D FMT
  131. dd POSIX options:
  132. option | exists | compliant | remarks
  133. if | yes | |
  134. of | yes | |
  135. ibs | yes | |
  136. obs | yes | |
  137. bs | yes | |
  138. cbs | no | no |
  139. skip | yes | |
  140. seek | yes | |
  141. count | yes | |
  142. conv=ascii | no | no |
  143. conv=ebcdic | no | no |
  144. conv=ibm | no | no |
  145. conv=block | no | no |
  146. conv=unblock | no | no |
  147. conv=lcase | no | no |
  148. conv=ucase | no | no |
  149. conv=swap | no | no |
  150. conv=noerror | yes | |
  151. conv=notrunc | yes | |
  152. conv=sync | yes | |
  153. dd compatibility options:
  154. conv=fsync | yes | |
  155. iflag=skip_bytes| yes | |
  156. iflag=fullblock | yes | |
  157. oflag=seek_bytes| yes | |
  158. oflag=append | yes | |
  159. df POSIX options
  160. option | exists | compliant | remarks
  161. -P | yes | yes |
  162. -k | yes | yes |
  163. -t | no | no |
  164. df Busybox specific options:
  165. -a, -m, -B SIZE, -i, -h
  166. Remark:
  167. - It seems that GNU df does not round percents up in its output (thus its results are a bit different)
  168. diff POSIX options
  169. option | exists | compliant | remarks
  170. -C n | no | no |
  171. -U n | yes | |
  172. -b | yes | |
  173. -c | no | no |
  174. -e | no | no |
  175. -f | no | no |
  176. -r | yes | |
  177. -u | no | no |
  178. diff Busybox specific options:
  179. -d, -a, -s, -t, -L, -N, -i, -T, -w, -q, -S
  180. dirname POSIX options: None
  181. dirname Busybox specific options: None
  182. du POSIX options
  183. option | exists | compliant | remarks
  184. -H | yes | |
  185. -L | yes | |
  186. -a | yes | |
  187. -k | yes | |
  188. -s | yes | |
  189. -x | yes | |
  190. du Busybox specific options:
  191. -c, -m, -h, -d N, -l
  192. echo POSIX options: None
  193. option | exists | compliant | remarks
  194. -n | yes | yes | The result of -n is "implementation-defined"
  195. echo Busybox specific options:
  196. -e, -E
  197. ed POSIX options
  198. option | exists | compliant | remarks
  199. -p string | no | no |
  200. -s | no | no |
  201. ed Busybox specific options: None
  202. env POSIX options
  203. option | exists | compliant | remarks
  204. -i | no | no |
  205. env Busybox specific options:
  206. -u, -, -i
  207. expand POSIX options
  208. option | exists | compliant | remarks
  209. -t tablist | yes | yes |
  210. expand Busybox specific options:
  211. --tabs=N, -i, --initial
  212. expr POSIX operations:
  213. option | exists | compliant | remarks
  214. | | yes | yes |
  215. & | yes | yes |
  216. = | yes | yes |
  217. > | yes | yes |
  218. >= | yes | yes |
  219. <= | yes | yes |
  220. < | yes | yes |
  221. != | yes | yes |
  222. + | yes | yes |
  223. - | yes | yes |
  224. * | yes | yes |
  225. / | yes | yes |
  226. % | yes | yes |
  227. : | yes | yes |
  228. (expr) | yes | yes |
  229. integer | yes | yes |
  230. string | yes | yes |
  231. expr Busybox specific operations:
  232. match, substr, index, length, quote
  233. false POSIX options: None
  234. false Busybox specific options: None
  235. find POSIX options
  236. option | exists | compliant | remarks
  237. -H | no | no |
  238. -L | no | no |
  239. find Busybox specific options:
  240. -group NAME, -mtime DAYS, -print, -maxdepth N, -exec CMD ARG ;, -newer FILE, -context, -iname PATTERN, -follow, -depth, -xdev, -inum N, -type X, -print0, -mindepth N, -mmin MINS, -regex PATTERN, -prune, -path PATTERN, -user NAME, -delete, -perm NNN, -name PATTERN, -size N[bck]
  241. fold POSIX options
  242. option | exists | compliant | remarks
  243. -b | yes | yes |
  244. -s | yes | yes |
  245. -w width | yes | yes |
  246. fold Busybox specific options: None
  247. fuser POSIX options
  248. option | exists | compliant | remarks
  249. -c | no | no |
  250. -f | no | no |
  251. -u | no | no |
  252. fuser Busybox specific options:
  253. -m, -k, -4, -SIGNAL, -6, -s
  254. grep POSIX options
  255. option | exists | compliant | remarks
  256. -E | yes | |
  257. -F | yes | |
  258. -c | yes | |
  259. -e pattern_list | yes | |
  260. -f pattern_file | yes | |
  261. -i | yes | |
  262. -l | yes | |
  263. -n | yes | |
  264. -q | yes | |
  265. -s | yes | |
  266. -v | yes | |
  267. -x | no | no |
  268. grep Busybox specific options:
  269. -A, -C, -B, -L, -H, -o, -h, -w, -r, -z, -m MAX
  270. head POSIX options
  271. option | exists | compliant | remarks
  272. -n number | yes | yes |
  273. head Busybox specific options:
  274. -v, -c NUM, -q
  275. id POSIX options
  276. option | exists | compliant | remarks
  277. -G | yes | yes |
  278. -g | yes | yes |
  279. -n | yes | yes |
  280. -r | yes | yes |
  281. -u | yes | yes |
  282. id Busybox specific options:
  283. -Z
  284. ipcrm POSIX options
  285. option | exists | compliant | remarks
  286. -M shmkey | no | no |
  287. -Q msgkey | no | no |
  288. -S semkey | no | no |
  289. -m shmid | no | no |
  290. -q msgid | no | no |
  291. -s semid | no | no |
  292. ipcrm Busybox specific options:
  293. -mM, -qQ, -sS
  294. ipcs POSIX options
  295. option | exists | compliant | remarks
  296. -a | yes | |
  297. -b | no | no |
  298. -c | yes | |
  299. -m | yes | |
  300. -o | no | no |
  301. -p | yes | |
  302. -q | yes | |
  303. -s | yes | |
  304. -t | yes | |
  305. ipcs Busybox specific options:
  306. -l, -i, -u
  307. kill POSIX options
  308. option | exists | compliant | remarks
  309. -l | yes | yes |
  310. -s signal_name | yes | yes |
  311. -signal_name | yes | yes |
  312. -signal_number | yes | yes |
  313. kill Busybox specific options:
  314. -q, -o
  315. ln POSIX options
  316. option | exists | compliant | remarks
  317. -L | no | no |
  318. -P | no | no |
  319. -f | yes | yes |
  320. -s | yes | yes |
  321. ln Busybox specific options:
  322. -S suf, -n, -b
  323. logger POSIX options: None
  324. logger Busybox specific options:
  325. -p PRIO, -t TAG, -s
  326. logname POSIX options: None
  327. logname Busybox specific options: None
  328. ls POSIX options
  329. option | exists | compliant | remarks
  330. -1 | yes | yes |
  331. -A | yes | yes |
  332. -C | yes | yes |
  333. -F | yes | yes | And more: '=' for sockets (not defined by POSIX)
  334. -H | no | no |
  335. -L | yes | yes | But coloring may be wrong (at least POSIX does not require correct colors :) )
  336. -R | yes | yes |
  337. -S | yes | yes |
  338. -a | yes | yes |
  339. -c | yes | no | Sorts output with '-l' (should only show ctime with '-l', and sort only with '-t')
  340. -d | yes | no | When invoked together with '-L' should read symbolic links, and doesn't
  341. -f | no | no |
  342. -g | no | no |
  343. -i | yes | yes |
  344. -k | yes | no | Does something completely unrelated! (Lists security context instead of specifying block size)
  345. -l | yes | yes |
  346. -m | no | no |
  347. -n | yes | no | Works correctly only together with '-l' (but POSIX requires '-l' to be implicitly assumed)
  348. -o | no | no |
  349. -p | yes | yes |
  350. -q | no | no |
  351. -r | yes | yes |
  352. -s | yes | yes |
  353. -t | yes | yes |
  354. -u | yes | yes |
  355. -x | yes | yes |
  356. ls Busybox specific options:
  357. --color, -T NUM, -K, -X, -Z, -e, -h, -v, -w NUM
  358. man POSIX options
  359. option | exists | compliant | remarks
  360. -k | no | no |
  361. man Busybox specific options:
  362. -a Display all pages
  363. mesg POSIX options: None
  364. mesg Busybox specific options: None
  365. mkdir POSIX options
  366. option | exists | compliant | remarks
  367. -m mode | yes | yes |
  368. -p | yes | yes |
  369. mkdir Busybox specific options:
  370. -Z
  371. mkfifo POSIX options
  372. option | exists | compliant | remarks
  373. -m mode | yes | yes |
  374. mkfifo Busybox specific options:
  375. -Z
  376. more POSIX options
  377. option | exists | compliant | remarks
  378. -c | no | no |
  379. -e | no | no |
  380. -i | no | no |
  381. -n number | no | no |
  382. -p command | no | no |
  383. -s | no | no |
  384. -t tagstring | no | no |
  385. -u | no | no |
  386. more Busybox specific options: None
  387. mv POSIX options
  388. option | exists | compliant | remarks
  389. -f | yes | yes |
  390. -i | yes | yes |
  391. mv Busybox specific options: None
  392. nice POSIX options
  393. option | exists | compliant | remarks
  394. -n increment | yes | yes |
  395. nice Busybox specific options: None
  396. nohup POSIX options: None
  397. nohup Busybox specific options: None
  398. od POSIX options
  399. option | exists | compliant | remarks
  400. -A address_base | no | no |
  401. -N count | no | no |
  402. -b | no | no |
  403. -c | no | no |
  404. -d | no | no |
  405. -j skip | no | no |
  406. -o | no | no |
  407. -s | no | no |
  408. -t type_string | no | no |
  409. -v | no | no |
  410. -x | no | no |
  411. od Busybox specific options: None
  412. paste POSIX options
  413. option | exists | compliant | remarks
  414. -d list | yes | yes |
  415. -s | yes | yes |
  416. paste Busybox specific options: None
  417. patch POSIX options
  418. option | exists | compliant | remarks
  419. -D define | no | no |
  420. -N | no | no |
  421. -R | yes | yes |
  422. -b | no | no |
  423. -c | no | no |
  424. -d dir | no | no |
  425. -e | no | no |
  426. -i patchfile | yes | yes |
  427. -l | no | no |
  428. -n | no | no |
  429. -o outfile | no | no |
  430. -p num | yes | yes |
  431. -r rejectfile | no | no |
  432. -u | no | no |
  433. patch Busybox specific options: None
  434. printf POSIX options: None
  435. printf Busybox specific options: None
  436. ps POSIX options
  437. option | exists | compliant | remarks
  438. -A | no | no |
  439. -G grouplist | no | no |
  440. -U userlist | no | no |
  441. -a | no | no |
  442. -d | no | no |
  443. -e | no | no |
  444. -f | no | no |
  445. -g grouplist | no | no |
  446. -l | no | no |
  447. -n namelist | no | no |
  448. -o format | yes | no | not supported: ruser, group, rgroup, pcpu
  449. -p proclist | no | no |
  450. -t termlist | no | no |
  451. -u userlist | no | no |
  452. ps Busybox specific options: None
  453. pwd POSIX options
  454. option | exists | compliant | remarks
  455. -L | no | no |
  456. -P | no | no |
  457. pwd Busybox specific options: None
  458. renice POSIX options
  459. option | exists | compliant | remarks
  460. -g | yes | yes |
  461. -n increment | yes | yes | Note POSIX allows only to run with this option (busybox also allows to run without '-n' and set niceness directly)
  462. -p | yes | yes |
  463. -u | yes | yes |
  464. renice Busybox specific options: None
  465. rm POSIX options
  466. option | exists | compliant | remarks
  467. -R | yes | yes |
  468. -f | yes | yes |
  469. -i | yes | yes |
  470. -r | yes | yes |
  471. rm Busybox specific options: None
  472. rmdir POSIX options
  473. option | exists | compliant | remarks
  474. -p | yes | yes |
  475. rmdir Busybox specific options:
  476. --parents
  477. sed POSIX options
  478. option | exists | compliant | remarks
  479. -e script | yes | |
  480. -f script_file | yes | |
  481. -n | yes | |
  482. sed Busybox specific options:
  483. -i, -r
  484. sh POSIX options
  485. option | exists | compliant | remarks
  486. -c | no | no |
  487. -i | no | no |
  488. -s | no | no |
  489. sh Busybox specific options: None
  490. sleep POSIX options: None
  491. sleep Busybox specific options: None
  492. sort POSIX options
  493. option | exists | compliant | remarks
  494. -C | no | no |
  495. -b | yes | yes |
  496. -c | yes | yes |
  497. -d | yes | yes |
  498. -f | yes | yes |
  499. -i | yes | yes | But is not like GNU sort, which isn't! (try to sort 'a\nA\nB\nb' with and without -f)
  500. -k keydef | yes | |
  501. -m | no | no |
  502. -n | yes | yes |
  503. -o output | yes | yes |
  504. -r | yes | yes |
  505. -t char | yes | |
  506. -u | yes | yes |
  507. sort Busybox specific options:
  508. -mST, -g, -M, -s, -z
  509. split POSIX options
  510. option | exists | compliant | remarks
  511. -a suffix_length | yes | yes |
  512. -b n | yes | yes |
  513. -b nk | yes | yes |
  514. -b nm | yes | yes |
  515. -l line_count | yes | yes |
  516. split Busybox specific options: None
  517. strings POSIX options
  518. option | exists | compliant | remarks
  519. -a | yes | yes |
  520. -n number | yes | yes |
  521. -t format | no | no |
  522. strings Busybox specific options:
  523. -o, -f
  524. stty POSIX options
  525. option | exists | compliant | remarks
  526. -a | yes | yes |
  527. -g | yes | yes |
  528. stty Busybox specific options:
  529. -F DEVICE
  530. tail POSIX options
  531. option | exists | compliant | remarks
  532. -c number | yes | yes |
  533. -f | yes | yes |
  534. -n number | yes | yes |
  535. tail Busybox specific options:
  536. -v, -q, -s SEC
  537. tee POSIX options
  538. option | exists | compliant | remarks
  539. -a | yes | yes |
  540. -i | yes | yes |
  541. tee Busybox specific options: None
  542. test POSIX options: None
  543. test Busybox specific options: None
  544. time POSIX options
  545. option | exists | compliant | remarks
  546. -p | no | no |
  547. time Busybox specific options:
  548. -v
  549. touch POSIX options
  550. option | exists | compliant | remarks
  551. -a | no | no |
  552. -c | yes | yes |
  553. -d date_time | no | no |
  554. -m | no | no |
  555. -r ref_file | no | no |
  556. -t time | no | no |
  557. touch Busybox specific options: None
  558. tr POSIX options
  559. option | exists | compliant | remarks
  560. -C | no | no |
  561. -c | yes | yes |
  562. -d | yes | yes |
  563. -s | yes | yes |
  564. tr Busybox specific options: None
  565. true POSIX options: None
  566. true Busybox specific options: None
  567. tty POSIX options: None
  568. tty Busybox specific options:
  569. -s
  570. uname POSIX options
  571. option | exists | compliant | remarks
  572. -a | yes | yes |
  573. -m | yes | yes |
  574. -n | yes | yes |
  575. -r | yes | yes |
  576. -s | yes | yes |
  577. -v | yes | yes |
  578. uname Busybox specific options:
  579. -p
  580. uncompress POSIX options
  581. option | exists | compliant | remarks
  582. -c | yes | yes |
  583. -f | yes | yes |
  584. -v | no | no |
  585. uncompress Busybox specific options: None
  586. unexpand POSIX options
  587. option | exists | compliant | remarks
  588. -a | yes | no | POSIX requires converting two or more spaces to tabs, busybox converts one or more spaces
  589. -t tablist | yes | yes |
  590. unexpand Busybox specific options:
  591. --tabs=N, -f, --first-only, --all
  592. uniq POSIX options
  593. option | exists | compliant | remarks
  594. -c | yes | yes |
  595. -d | yes | yes |
  596. -f fields | yes | yes |
  597. -s chars | yes | yes |
  598. -u | yes | yes |
  599. uniq Busybox specific options:
  600. -w N
  601. uudecode POSIX options
  602. option | exists | compliant | remarks
  603. -o outfile | no | no |
  604. uudecode Busybox specific options: None
  605. uuencode POSIX options
  606. option | exists | compliant | remarks
  607. -m | yes | yes |
  608. uuencode Busybox specific options: None
  609. vi POSIX options
  610. option | exists | compliant | remarks
  611. -R | yes | |
  612. -c command | yes | |
  613. -r | no | no |
  614. -t tagstring | no | no |
  615. -w size | no | no |
  616. vi Busybox specific options:
  617. -H
  618. wc POSIX options
  619. option | exists | compliant | remarks
  620. -c | yes | yes |
  621. -l | yes | yes |
  622. -m | no | no |
  623. -w | yes | yes |
  624. wc Busybox specific options:
  625. -L
  626. who POSIX options
  627. option | exists | compliant | remarks
  628. -H | no | no |
  629. -T | no | no |
  630. -a | yes | no | just shows all
  631. -b | no | no |
  632. -d | no | no |
  633. -l | no | no |
  634. -m | no | no |
  635. -p | no | no |
  636. -q | no | no |
  637. -r | no | no |
  638. -s | no | no |
  639. -t | no | no |
  640. -u | no | no |
  641. who Busybox specific options: None
  642. xargs POSIX options
  643. option | exists | compliant | remarks
  644. -E eofstr | no | no |
  645. -I replstr | no | no |
  646. -L number | no | no |
  647. -n number | yes | yes |
  648. -p | yes | yes |
  649. -s size | yes | yes |
  650. -t | yes | yes |
  651. -x | yes | yes |
  652. xargs Busybox specific options:
  653. -e[STR], -0, -r
  654. zcat POSIX options: None
  655. zcat Busybox specific options: None