posix_conformance.txt 25 KB

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