posix_conformance.txt 25 KB

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