posix_conformance.txt 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749
  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. df POSIX options
  158. option | exists | compliant | remarks
  159. -P | yes | yes |
  160. -k | yes | yes |
  161. -t | no | no |
  162. df Busybox specific options:
  163. -a, -m, -B SIZE, -i, -h
  164. Remark:
  165. - It seems that GNU df does not round percents up in its output (thus its results are a bit different)
  166. diff POSIX options
  167. option | exists | compliant | remarks
  168. -C n | no | no |
  169. -U n | yes | |
  170. -b | yes | |
  171. -c | no | no |
  172. -e | no | no |
  173. -f | no | no |
  174. -r | yes | |
  175. -u | no | no |
  176. diff Busybox specific options:
  177. -d, -a, -s, -t, -L, -N, -i, -T, -w, -q, -S
  178. dirname POSIX options: None
  179. dirname Busybox specific options: None
  180. du POSIX options
  181. option | exists | compliant | remarks
  182. -H | yes | |
  183. -L | yes | |
  184. -a | yes | |
  185. -k | yes | |
  186. -s | yes | |
  187. -x | yes | |
  188. du Busybox specific options:
  189. -c, -m, -h, -d N, -l
  190. echo POSIX options: None
  191. option | exists | compliant | remarks
  192. -n | yes | yes | The result of -n is "implementation-defined"
  193. echo Busybox specific options:
  194. -e, -E
  195. ed POSIX options
  196. option | exists | compliant | remarks
  197. -p string | no | no |
  198. -s | no | no |
  199. ed Busybox specific options: None
  200. env POSIX options
  201. option | exists | compliant | remarks
  202. -i | no | no |
  203. env Busybox specific options:
  204. -u, -, -i
  205. expand POSIX options
  206. option | exists | compliant | remarks
  207. -t tablist | yes | yes |
  208. expand Busybox specific options:
  209. --tabs=N, -i, --initial
  210. expr POSIX operations:
  211. option | exists | compliant | remarks
  212. | | yes | yes |
  213. & | yes | yes |
  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. (expr) | yes | yes |
  227. integer | yes | yes |
  228. string | yes | yes |
  229. expr Busybox specific operations:
  230. match, substr, index, length, quote
  231. false POSIX options: None
  232. false Busybox specific options: None
  233. find POSIX options
  234. option | exists | compliant | remarks
  235. -H | no | no |
  236. -L | no | no |
  237. find Busybox specific options:
  238. -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]
  239. fold POSIX options
  240. option | exists | compliant | remarks
  241. -b | yes | yes |
  242. -s | yes | yes |
  243. -w width | yes | yes |
  244. fold Busybox specific options: None
  245. fuser POSIX options
  246. option | exists | compliant | remarks
  247. -c | no | no |
  248. -f | no | no |
  249. -u | no | no |
  250. fuser Busybox specific options:
  251. -m, -k, -4, -SIGNAL, -6, -s
  252. grep POSIX options
  253. option | exists | compliant | remarks
  254. -E | yes | |
  255. -F | yes | |
  256. -c | yes | |
  257. -e pattern_list | yes | |
  258. -f pattern_file | yes | |
  259. -i | yes | |
  260. -l | yes | |
  261. -n | yes | |
  262. -q | yes | |
  263. -s | yes | |
  264. -v | yes | |
  265. -x | no | no |
  266. grep Busybox specific options:
  267. -A, -C, -B, -L, -H, -o, -h, -w, -r, -z, -m MAX
  268. head POSIX options
  269. option | exists | compliant | remarks
  270. -n number | yes | yes |
  271. head Busybox specific options:
  272. -v, -c NUM, -q
  273. id POSIX options
  274. option | exists | compliant | remarks
  275. -G | yes | yes |
  276. -g | yes | yes |
  277. -n | yes | yes |
  278. -r | yes | yes |
  279. -u | yes | yes |
  280. id Busybox specific options:
  281. -Z
  282. ipcrm POSIX options
  283. option | exists | compliant | remarks
  284. -M shmkey | no | no |
  285. -Q msgkey | no | no |
  286. -S semkey | no | no |
  287. -m shmid | no | no |
  288. -q msgid | no | no |
  289. -s semid | no | no |
  290. ipcrm Busybox specific options:
  291. -mM, -qQ, -sS
  292. ipcs POSIX options
  293. option | exists | compliant | remarks
  294. -a | yes | |
  295. -b | no | no |
  296. -c | yes | |
  297. -m | yes | |
  298. -o | no | no |
  299. -p | yes | |
  300. -q | yes | |
  301. -s | yes | |
  302. -t | yes | |
  303. ipcs Busybox specific options:
  304. -l, -i, -u
  305. kill POSIX options
  306. option | exists | compliant | remarks
  307. -l | yes | yes |
  308. -s signal_name | yes | yes |
  309. -signal_name | yes | yes |
  310. -signal_number | yes | yes |
  311. kill Busybox specific options:
  312. -q, -o
  313. ln POSIX options
  314. option | exists | compliant | remarks
  315. -L | no | no |
  316. -P | no | no |
  317. -f | yes | yes |
  318. -s | yes | yes |
  319. ln Busybox specific options:
  320. -S suf, -n, -b
  321. logger POSIX options: None
  322. logger Busybox specific options:
  323. -p PRIO, -t TAG, -s
  324. logname POSIX options: None
  325. logname Busybox specific options: None
  326. ls POSIX options
  327. option | exists | compliant | remarks
  328. -1 | yes | yes |
  329. -A | yes | yes |
  330. -C | yes | yes |
  331. -F | yes | yes | And more: '=' for sockets (not defined by POSIX)
  332. -H | no | no |
  333. -L | yes | yes | But coloring may be wrong (at least POSIX does not require correct colors :) )
  334. -R | yes | yes |
  335. -S | yes | yes |
  336. -a | yes | yes |
  337. -c | yes | no | Sorts output with '-l' (should only show ctime with '-l', and sort only with '-t')
  338. -d | yes | no | When invoked together with '-L' should read symbolic links, and doesn't
  339. -f | no | no |
  340. -g | no | no |
  341. -i | yes | yes |
  342. -k | yes | no | Does something completely unrelated! (Lists security context instead of specifying block size)
  343. -l | yes | yes |
  344. -m | no | no |
  345. -n | yes | no | Works correctly only together with '-l' (but POSIX requires '-l' to be implicitly assumed)
  346. -o | no | no |
  347. -p | yes | yes |
  348. -q | no | no |
  349. -r | yes | yes |
  350. -s | yes | yes |
  351. -t | yes | yes |
  352. -u | yes | yes |
  353. -x | yes | yes |
  354. ls Busybox specific options:
  355. --color, -T NUM, -K, -X, -Z, -e, -h, -v, -w NUM
  356. man POSIX options
  357. option | exists | compliant | remarks
  358. -k | no | no |
  359. man Busybox specific options:
  360. -a Display all pages
  361. mesg POSIX options: None
  362. mesg Busybox specific options: None
  363. mkdir POSIX options
  364. option | exists | compliant | remarks
  365. -m mode | yes | yes |
  366. -p | yes | yes |
  367. mkdir Busybox specific options:
  368. -Z
  369. mkfifo POSIX options
  370. option | exists | compliant | remarks
  371. -m mode | yes | yes |
  372. mkfifo Busybox specific options:
  373. -Z
  374. more POSIX options
  375. option | exists | compliant | remarks
  376. -c | no | no |
  377. -e | no | no |
  378. -i | no | no |
  379. -n number | no | no |
  380. -p command | no | no |
  381. -s | no | no |
  382. -t tagstring | no | no |
  383. -u | no | no |
  384. more Busybox specific options: None
  385. mv POSIX options
  386. option | exists | compliant | remarks
  387. -f | yes | yes |
  388. -i | yes | yes |
  389. mv Busybox specific options: None
  390. nice POSIX options
  391. option | exists | compliant | remarks
  392. -n increment | yes | yes |
  393. nice Busybox specific options: None
  394. nohup POSIX options: None
  395. nohup Busybox specific options: None
  396. od POSIX options
  397. option | exists | compliant | remarks
  398. -A address_base | no | no |
  399. -N count | no | no |
  400. -b | no | no |
  401. -c | no | no |
  402. -d | no | no |
  403. -j skip | no | no |
  404. -o | no | no |
  405. -s | no | no |
  406. -t type_string | no | no |
  407. -v | no | no |
  408. -x | no | no |
  409. od Busybox specific options: None
  410. paste POSIX options
  411. option | exists | compliant | remarks
  412. -d list | yes | yes |
  413. -s | yes | yes |
  414. paste Busybox specific options: None
  415. patch POSIX options
  416. option | exists | compliant | remarks
  417. -D define | no | no |
  418. -N | no | no |
  419. -R | yes | yes |
  420. -b | no | no |
  421. -c | no | no |
  422. -d dir | no | no |
  423. -e | no | no |
  424. -i patchfile | yes | yes |
  425. -l | no | no |
  426. -n | no | no |
  427. -o outfile | no | no |
  428. -p num | yes | yes |
  429. -r rejectfile | no | no |
  430. -u | no | no |
  431. patch Busybox specific options: None
  432. printf POSIX options: None
  433. printf Busybox specific options: None
  434. ps POSIX options
  435. option | exists | compliant | remarks
  436. -A | no | no |
  437. -G grouplist | no | no |
  438. -U userlist | no | no |
  439. -a | no | no |
  440. -d | no | no |
  441. -e | no | no |
  442. -f | no | no |
  443. -g grouplist | no | no |
  444. -l | no | no |
  445. -n namelist | no | no |
  446. -o format | yes | no | not supported: ruser, group, rgroup, pcpu
  447. -p proclist | no | no |
  448. -t termlist | no | no |
  449. -u userlist | no | no |
  450. ps Busybox specific options: None
  451. pwd POSIX options
  452. option | exists | compliant | remarks
  453. -L | no | no |
  454. -P | no | no |
  455. pwd Busybox specific options: None
  456. renice POSIX options
  457. option | exists | compliant | remarks
  458. -g | yes | yes |
  459. -n increment | yes | yes | Note POSIX allows only to run with this option (busybox also allows to run without '-n' and set niceness directly)
  460. -p | yes | yes |
  461. -u | yes | yes |
  462. renice Busybox specific options: None
  463. rm POSIX options
  464. option | exists | compliant | remarks
  465. -R | yes | yes |
  466. -f | yes | yes |
  467. -i | yes | yes |
  468. -r | yes | yes |
  469. rm Busybox specific options: None
  470. rmdir POSIX options
  471. option | exists | compliant | remarks
  472. -p | yes | yes |
  473. rmdir Busybox specific options:
  474. --parents
  475. sed POSIX options
  476. option | exists | compliant | remarks
  477. -e script | yes | |
  478. -f script_file | yes | |
  479. -n | yes | |
  480. sed Busybox specific options:
  481. -i, -r
  482. sh POSIX options
  483. option | exists | compliant | remarks
  484. -c | no | no |
  485. -i | no | no |
  486. -s | no | no |
  487. sh Busybox specific options: None
  488. sleep POSIX options: None
  489. sleep Busybox specific options: None
  490. sort POSIX options
  491. option | exists | compliant | remarks
  492. -C | no | no |
  493. -b | yes | yes |
  494. -c | yes | yes |
  495. -d | yes | yes |
  496. -f | yes | yes |
  497. -i | yes | yes | But is not like GNU sort, which isn't! (try to sort 'a\nA\nB\nb' with and without -f)
  498. -k keydef | yes | |
  499. -m | no | no |
  500. -n | yes | yes |
  501. -o output | yes | yes |
  502. -r | yes | yes |
  503. -t char | yes | |
  504. -u | yes | yes |
  505. sort Busybox specific options:
  506. -mST, -g, -M, -s, -z
  507. split POSIX options
  508. option | exists | compliant | remarks
  509. -a suffix_length | yes | yes |
  510. -b n | yes | yes |
  511. -b nk | yes | yes |
  512. -b nm | yes | yes |
  513. -l line_count | yes | yes |
  514. split Busybox specific options: None
  515. strings POSIX options
  516. option | exists | compliant | remarks
  517. -a | yes | yes |
  518. -n number | yes | yes |
  519. -t format | no | no |
  520. strings Busybox specific options:
  521. -o, -f
  522. stty POSIX options
  523. option | exists | compliant | remarks
  524. -a | yes | yes |
  525. -g | yes | yes |
  526. stty Busybox specific options:
  527. -F DEVICE
  528. tail POSIX options
  529. option | exists | compliant | remarks
  530. -c number | yes | yes |
  531. -f | yes | yes |
  532. -n number | yes | yes |
  533. tail Busybox specific options:
  534. -v, -q, -s SEC
  535. tee POSIX options
  536. option | exists | compliant | remarks
  537. -a | yes | yes |
  538. -i | yes | yes |
  539. tee Busybox specific options: None
  540. test POSIX options: None
  541. test Busybox specific options: None
  542. time POSIX options
  543. option | exists | compliant | remarks
  544. -p | no | no |
  545. time Busybox specific options:
  546. -v
  547. touch POSIX options
  548. option | exists | compliant | remarks
  549. -a | no | no |
  550. -c | yes | yes |
  551. -d date_time | no | no |
  552. -m | no | no |
  553. -r ref_file | no | no |
  554. -t time | no | no |
  555. touch Busybox specific options: None
  556. tr POSIX options
  557. option | exists | compliant | remarks
  558. -C | no | no |
  559. -c | yes | yes |
  560. -d | yes | yes |
  561. -s | yes | yes |
  562. tr Busybox specific options: None
  563. true POSIX options: None
  564. true Busybox specific options: None
  565. tty POSIX options: None
  566. tty Busybox specific options:
  567. -s
  568. uname POSIX options
  569. option | exists | compliant | remarks
  570. -a | yes | yes |
  571. -m | yes | yes |
  572. -n | yes | yes |
  573. -r | yes | yes |
  574. -s | yes | yes |
  575. -v | yes | yes |
  576. uname Busybox specific options:
  577. -p
  578. uncompress POSIX options
  579. option | exists | compliant | remarks
  580. -c | yes | yes |
  581. -f | yes | yes |
  582. -v | no | no |
  583. uncompress Busybox specific options: None
  584. unexpand POSIX options
  585. option | exists | compliant | remarks
  586. -a | yes | no | POSIX requires converting two or more spaces to tabs, busybox converts one or more spaces
  587. -t tablist | yes | yes |
  588. unexpand Busybox specific options:
  589. --tabs=N, -f, --first-only, --all
  590. uniq POSIX options
  591. option | exists | compliant | remarks
  592. -c | yes | yes |
  593. -d | yes | yes |
  594. -f fields | yes | yes |
  595. -s chars | yes | yes |
  596. -u | yes | yes |
  597. uniq Busybox specific options:
  598. -w N
  599. uudecode POSIX options
  600. option | exists | compliant | remarks
  601. -o outfile | no | no |
  602. uudecode Busybox specific options: None
  603. uuencode POSIX options
  604. option | exists | compliant | remarks
  605. -m | yes | yes |
  606. uuencode Busybox specific options: None
  607. vi POSIX options
  608. option | exists | compliant | remarks
  609. -R | yes | |
  610. -c command | yes | |
  611. -r | no | no |
  612. -t tagstring | no | no |
  613. -w size | no | no |
  614. vi Busybox specific options:
  615. -H
  616. wc POSIX options
  617. option | exists | compliant | remarks
  618. -c | yes | yes |
  619. -l | yes | yes |
  620. -m | no | no |
  621. -w | yes | yes |
  622. wc Busybox specific options:
  623. -L
  624. who POSIX options
  625. option | exists | compliant | remarks
  626. -H | no | no |
  627. -T | no | no |
  628. -a | yes | no | just shows all
  629. -b | no | no |
  630. -d | no | no |
  631. -l | no | no |
  632. -m | no | no |
  633. -p | no | no |
  634. -q | no | no |
  635. -r | no | no |
  636. -s | no | no |
  637. -t | no | no |
  638. -u | no | no |
  639. who Busybox specific options: None
  640. xargs POSIX options
  641. option | exists | compliant | remarks
  642. -E eofstr | no | no |
  643. -I replstr | no | no |
  644. -L number | no | no |
  645. -n number | yes | yes |
  646. -p | yes | yes |
  647. -s size | yes | yes |
  648. -t | yes | yes |
  649. -x | yes | yes |
  650. xargs Busybox specific options:
  651. -e[STR], -0, -r
  652. zcat POSIX options: None
  653. zcat Busybox specific options: None