posix_conformance.txt 25 KB

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