ndk-busybox/docs/posix_conformance.txt
Denys Vlasenko 145512c634 Update POSIX compliance table
Signed-off-by: Max Panasenkov <panmax@gmail.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2009-06-12 15:32:51 +02:00

743 lines
26 KiB
Plaintext

Busybox POSIX conformance table
See POSIX documentation (1003.1-2008) here:
http://www.opengroup.org/onlinepubs/9699919799/
And the complete list of all utilities that POSIX covers:
http://www.opengroup.org/onlinepubs/9699919799/idx/utilities.html
This listing is a work in progress, and currently only covers
tool options (not operands, enviroment variables, return codes, etc..).
For each option it is set if it (a) exists and (b) compliant to POSIX 2008.
Some options exist but there is no value in the 'compliant' column: that
means no one has yet bothered to make sure that the option does what it is
required to do.
-----------------------------------------------
POSIX Tools supported only as shell built-ins (ash shell):
alias, bg, cd, fg, getopts, hash, jobs, read, type, umask, ulimit,
unalias, wait, write
POSIX Tools not supported:
asa, at, batch, bc, c99, command, compress, csplit, ex, fc, file,
gencat, getconf, iconv, join, link, locale, localedef, lp, m4,
mailx, newgrp, nl, paste, pathchk, pax, pr, qalter, qdel, qhold, qmove,
qmsg, qrerun, qrls, qselect, qsig, qstat, qsub, tabs, talk, tput,
tsort, unlink, uucp, uustat, uux
POSIX Tools not supported (DEVELOPMENT):
admin, cflow, ctags, cxref, delta, fort77, get, lex, make, nm, prs, rmdel,
sact, sccs, strip, unget, val, what, yacc
POSIX Tools supported:
Note: echo, printf, kill, pwd documented here as stand-alone applets,
not as ash built-ins.
ar POSIX options ********************* Failed to recognize zip & tar (did not compare to regular ar)
option | exists | compliant | remarks
-C | no | no |
-T | no | no |
-a | no | no |
-b | no | no |
-c | no | no |
-d | no | no |
-i | no | no |
-m | no | no |
-p | yes | |
-q | no | no |
-r | no | no |
-s | no | no |
-t | yes | |
-u | no | no |
-v | yes | |
-x | yes | |
ar Busybox specific options:
-o
awk POSIX options
option | exists | compliant | remarks
-F ERE | yes | |
-f progfile | yes | |
-v assignment | yes | |
awk Busybox specific options: None
basename POSIX options: None
basename Busybox specific options: None
cal POSIX options: None
cal Busybox specific options:
-y, -j
cat POSIX options
option | exists | compliant | remarks
-u | yes | no | option is ignored
cat Busybox specific options: None
chgrp POSIX options
option | exists | compliant | remarks
-H | yes | |
-L | yes | |
-P | yes | |
-R | yes | |
-h | yes | |
chgrp Busybox specific options:
-f, -c, -v
chmod POSIX options
option | exists | compliant | remarks
-R | yes | yes |
chmod Busybox specific options:
-f, -v, -c
chown POSIX options *********************************************
option | exists | compliant | remarks
-H | yes | | It seems like all flags are supported (according to printout), but
-L | yes | | it fails to work on my machine
-P | yes | |
-R | yes | |
-h | yes | |
chown Busybox specific options:
-f, -c, -v
cksum POSIX options: None
cksum Busybox specific options: None
cmp POSIX options
option | exists | compliant | remarks
-l | yes | yes |
-s | yes | yes |
cmp Busybox specific options:
comm POSIX options
option | exists | compliant | remarks
-1 | yes | yes |
-2 | yes | yes |
-3 | yes | yes |
comm Busybox specific options: None
cp POSIX options
option | exists | compliant | remarks
-H | yes | yes |
-L | yes | yes |
-P | yes | yes |
-R | yes | yes |
-f | yes | yes |
-i | yes | yes |
-p | yes | yes |
cp Busybox specific options:
-d, -a, -s, -c, -r, -l
crontab POSIX options
option | exists | compliant | remarks
-e | yes | |
-l | yes | |
-r | yes | |
crontab Busybox specific options:
-u, -c
cut POSIX options
option | exists | compliant | remarks
-b list | yes | yes |
-c list | yes | yes |
-d delim | yes | yes |
-f list | yes | yes |
-n | yes | yes |
-s | yes | yes |
cut Busybox specific options: None
date POSIX options
option | exists | compliant | remarks
-u | yes | yes |
date Busybox specific options:
-I[SPEC], -d TIME, -r FILE, -R, -D FMT
dd POSIX options:
option | exists | compliant | remarks
if | yes | |
of | yes | |
ibs | yes | |
obs | yes | |
bs | yes | |
cbs | no | no |
skip | yes | |
seek | yes | |
count | yes | |
conv=ascii | no | no |
conv=ebcdic | no | no |
conv=ibm | no | no |
conv=block | no | no |
conv=unblock | no | no |
conv=lcase | no | no |
conv=ucase | no | no |
conv=swap | no | no |
conv=noerror | yes | |
conv=notrunc | yes | |
conv=sync | yes | |
dd Busybox specific options:
conv=fsync
df POSIX options
option | exists | compliant | remarks
-P | yes | yes |
-k | yes | yes |
-t | no | no |
df Busybox specific options:
-a, -m, -B SIZE, -i, -h
Remark:
- It seems that GNU df doesnt rount percents up in its output (thus its results are a bit different)
diff POSIX options
option | exists | compliant | remarks
-C n | no | no |
-U n | yes | |
-b | yes | |
-c | no | no |
-e | no | no |
-f | no | no |
-r | yes | |
-u | no | no |
diff Busybox specific options:
-d, -a, -s, -t, -L, -N, -i, -T, -w, -q, -S
dirname POSIX options: None
dirname Busybox specific options: None
du POSIX options
option | exists | compliant | remarks
-H | yes | |
-L | yes | |
-a | yes | |
-k | yes | |
-s | yes | |
-x | yes | |
du Busybox specific options:
-c, -m, -h, -d N, -l
echo POSIX options: None
option | exists | compliant | remarks
-n | yes | yes | The result of -n is "implementation-defined"
echo Busybox specific options:
-e, -E
ed POSIX options
option | exists | compliant | remarks
-p string | no | no |
-s | no | no |
ed Busybox specific options: None
env POSIX options
option | exists | compliant | remarks
-i | no | no |
env Busybox specific options:
-u, -, -i
expand POSIX options
option | exists | compliant | remarks
-t tablist | yes | yes |
expand Busybox specific options:
--tabs=N, -i, --initial
expr POSIX operations:
option | exists | compliant | remarks
| | yes | yes |
& | yes | yes |
= | yes | yes |
> | yes | yes |
>= | yes | yes |
<= | yes | yes |
< | yes | yes |
!= | yes | yes |
+ | yes | yes |
- | yes | yes |
* | yes | yes |
/ | yes | yes |
% | yes | yes |
: | yes | yes |
(expr) | yes | yes |
integer | yes | yes |
string | yes | yes |
expr Busybox specific operations:
match, substr, index, length, quote
false POSIX options: None
false Busybox specific options: None
find POSIX options
option | exists | compliant | remarks
-H | no | no |
-L | no | no |
find Busybox specific options:
-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]
fold POSIX options
option | exists | compliant | remarks
-b | yes | yes |
-s | yes | yes |
-w width | yes | yes |
fold Busybox specific options: None
fuser POSIX options
option | exists | compliant | remarks
-c | no | no |
-f | no | no |
-u | no | no |
fuser Busybox specific options:
-m, -k, -4, -SIGNAL, -6, -s
grep POSIX options
option | exists | compliant | remarks
-E | yes | |
-F | yes | |
-c | yes | |
-e pattern_list | yes | |
-f pattern_file | yes | |
-i | yes | |
-l | yes | |
-n | yes | |
-q | yes | |
-s | yes | |
-v | yes | |
-x | no | no |
grep Busybox specific options:
-A, -C, -B, -L, -H, -o, -h, -w, -r, -z, -m MAX
head POSIX options
option | exists | compliant | remarks
-n number | yes | yes |
head Busybox specific options:
-v, -c NUM, -q
id POSIX options
option | exists | compliant | remarks
-G | yes | yes |
-g | yes | yes |
-n | yes | yes |
-r | yes | yes |
-u | yes | yes |
id Busybox specific options:
-Z
ipcrm POSIX options
option | exists | compliant | remarks
-M shmkey | no | no |
-Q msgkey | no | no |
-S semkey | no | no |
-m shmid | no | no |
-q msgid | no | no |
-s semid | no | no |
ipcrm Busybox specific options:
-mM, -qQ, -sS
ipcs POSIX options
option | exists | compliant | remarks
-a | yes | |
-b | no | no |
-c | yes | |
-m | yes | |
-o | no | no |
-p | yes | |
-q | yes | |
-s | yes | |
-t | yes | |
ipcs Busybox specific options:
-l, -i, -u
kill POSIX options
option | exists | compliant | remarks
-l | yes | yes |
-s signal_name | yes | yes |
-signal_name | yes | yes |
-signal_number | yes | yes |
kill Busybox specific options:
-q, -o
ln POSIX options
option | exists | compliant | remarks
-L | no | no |
-P | no | no |
-f | yes | yes |
-s | yes | yes |
ln Busybox specific options:
-S suf, -n, -b
logger POSIX options: None
logger Busybox specific options:
-p PRIO, -t TAG, -s
logname POSIX options: None
logname Busybox specific options: None
ls POSIX options
option | exists | compliant | remarks
-1 | yes | yes |
-A | yes | yes |
-C | yes | yes |
-F | yes | yes | And more: '=' for sockets (not defined by POSIX)
-H | no | no |
-L | yes | yes | But coloring may be wrong (at least POSIX does not require correct colors :) )
-R | yes | yes |
-S | yes | yes |
-a | yes | yes |
-c | yes | no | Sorts output with '-l' (should only show ctime with '-l', and sort only with '-t')
-d | yes | no | When invoked together with '-L' should read symbolic links, and doesn't
-f | no | no |
-g | no | no |
-i | yes | yes |
-k | yes | no | Does something completely unrelated! (Lists security context instead of specifying block size)
-l | yes | yes |
-m | no | no |
-n | yes | no | Works correctly only together with '-l' (but POSIX requires '-l' to be implicitly assumed)
-o | no | no |
-p | yes | yes |
-q | no | no |
-r | yes | yes |
-s | yes | yes |
-t | yes | yes |
-u | yes | yes |
-x | yes | yes |
ls Busybox specific options:
--color, -T NUM, -K, -X, -Z, -e, -h, -v, -w NUM
man POSIX options
option | exists | compliant | remarks
-k | no | no |
man Busybox specific options:
-a Display all pages
mesg POSIX options: None
mesg Busybox specific options: None
mkdir POSIX options
option | exists | compliant | remarks
-m mode | yes | yes |
-p | yes | yes |
mkdir Busybox specific options:
-Z
mkfifo POSIX options
option | exists | compliant | remarks
-m mode | yes | yes |
mkfifo Busybox specific options:
-Z
more POSIX options
option | exists | compliant | remarks
-c | no | no |
-e | no | no |
-i | no | no |
-n number | no | no |
-p command | no | no |
-s | no | no |
-t tagstring | no | no |
-u | no | no |
more Busybox specific options: None
mv POSIX options
option | exists | compliant | remarks
-f | yes | yes |
-i | yes | yes |
mv Busybox specific options: None
nice POSIX options
option | exists | compliant | remarks
-n increment | yes | yes |
nice Busybox specific options: None
nohup POSIX options: None
nohup Busybox specific options: None
od POSIX options
option | exists | compliant | remarks
-A address_base | no | no |
-N count | no | no |
-b | no | no |
-c | no | no |
-d | no | no |
-j skip | no | no |
-o | no | no |
-s | no | no |
-t type_string | no | no |
-v | no | no |
-x | no | no |
od Busybox specific options: None
patch POSIX options
option | exists | compliant | remarks
-D define | no | no |
-N | no | no |
-R | yes | yes |
-b | no | no |
-c | no | no |
-d dir | no | no |
-e | no | no |
-i patchfile | yes | yes |
-l | no | no |
-n | no | no |
-o outfile | no | no |
-p num | yes | yes |
-r rejectfile | no | no |
-u | no | no |
patch Busybox specific options: None
printf POSIX options: None
printf Busybox specific options: None
ps POSIX options
option | exists | compliant | remarks
-A | no | no |
-G grouplist | no | no |
-U userlist | no | no |
-a | no | no |
-d | no | no |
-e | no | no |
-f | no | no |
-g grouplist | no | no |
-l | no | no |
-n namelist | no | no |
-o format | yes | no | not supported: ruser, group, rgroup, pcpu
-p proclist | no | no |
-t termlist | no | no |
-u userlist | no | no |
ps Busybox specific options: None
pwd POSIX options
option | exists | compliant | remarks
-L | no | no |
-P | no | no |
pwd Busybox specific options: None
renice POSIX options
option | exists | compliant | remarks
-g | yes | yes |
-n increment | yes | yes | Note POSIX allows only to run with this option (busybox also allows to run without '-n' and set niceness directly)
-p | yes | yes |
-u | yes | yes |
renice Busybox specific options: None
rm POSIX options
option | exists | compliant | remarks
-R | yes | yes |
-f | yes | yes |
-i | yes | yes |
-r | yes | yes |
rm Busybox specific options: None
rmdir POSIX options
option | exists | compliant | remarks
-p | yes | yes |
rmdir Busybox specific options:
--parents
sed POSIX options
option | exists | compliant | remarks
-e script | yes | |
-f script_file | yes | |
-n | yes | |
sed Busybox specific options:
-i, -r
sh POSIX options
option | exists | compliant | remarks
-c | no | no |
-i | no | no |
-s | no | no |
sh Busybox specific options: None
sleep POSIX options: None
sleep Busybox specific options: None
sort POSIX options
option | exists | compliant | remarks
-C | no | no |
-b | yes | yes |
-c | yes | yes |
-d | yes | yes |
-f | yes | yes |
-i | yes | yes | But is not like GNU sort, which isn't! (try to sort 'a\nA\nB\nb' with and without -f)
-k keydef | yes | |
-m | no | no |
-n | yes | yes |
-o output | yes | yes |
-r | yes | yes |
-t char | yes | |
-u | yes | yes |
sort Busybox specific options:
-mST, -g, -M, -s, -z
split POSIX options
option | exists | compliant | remarks
-a suffix_length | yes | yes |
-b n | yes | yes |
-b nk | yes | yes |
-b nm | yes | yes |
-l line_count | yes | yes |
split Busybox specific options: None
strings POSIX options
option | exists | compliant | remarks
-a | yes | yes |
-n number | yes | yes |
-t format | no | no |
strings Busybox specific options:
-o, -f
stty POSIX options
option | exists | compliant | remarks
-a | yes | yes |
-g | yes | yes |
stty Busybox specific options:
-F DEVICE
tail POSIX options
option | exists | compliant | remarks
-c number | yes | yes |
-f | yes | yes |
-n number | yes | yes |
tail Busybox specific options:
-v, -q, -s SEC
tee POSIX options
option | exists | compliant | remarks
-a | yes | yes |
-i | yes | yes |
tee Busybox specific options: None
test POSIX options: None
test Busybox specific options: None
time POSIX options
option | exists | compliant | remarks
-p | no | no |
time Busybox specific options:
-v
touch POSIX options
option | exists | compliant | remarks
-a | no | no |
-c | yes | yes |
-d date_time | no | no |
-m | no | no |
-r ref_file | no | no |
-t time | no | no |
touch Busybox specific options: None
tr POSIX options
option | exists | compliant | remarks
-C | no | no |
-c | yes | yes |
-d | yes | yes |
-s | yes | yes |
tr Busybox specific options: None
true POSIX options: None
true Busybox specific options: None
tty POSIX options: None
tty Busybox specific options:
-s
uname POSIX options
option | exists | compliant | remarks
-a | yes | yes |
-m | yes | yes |
-n | yes | yes |
-r | yes | yes |
-s | yes | yes |
-v | yes | yes |
uname Busybox specific options:
-p
uncompress POSIX options
option | exists | compliant | remarks
-c | yes | yes |
-f | yes | yes |
-v | no | no |
uncompress Busybox specific options: None
unexpand POSIX options
option | exists | compliant | remarks
-a | yes | no | POSIX requires converting two or more spaces to tabs, busybox converts one or more spaces
-t tablist | yes | yes |
unexpand Busybox specific options:
--tabs=N, -f, --first-only, --all
uniq POSIX options
option | exists | compliant | remarks
-c | yes | yes |
-d | yes | yes |
-f fields | yes | yes |
-s chars | yes | yes |
-u | yes | yes |
uniq Busybox specific options:
-w N
uudecode POSIX options
option | exists | compliant | remarks
-o outfile | no | no |
uudecode Busybox specific options: None
uuencode POSIX options
option | exists | compliant | remarks
-m | yes | yes |
uuencode Busybox specific options: None
vi POSIX options
option | exists | compliant | remarks
-R | yes | |
-c command | yes | |
-r | no | no |
-t tagstring | no | no |
-w size | no | no |
vi Busybox specific options:
-H
wc POSIX options
option | exists | compliant | remarks
-c | yes | yes |
-l | yes | yes |
-m | no | no |
-w | yes | yes |
wc Busybox specific options:
-L
who POSIX options
option | exists | compliant | remarks
-H | no | no |
-T | no | no |
-a | yes | no | just shows all
-b | no | no |
-d | no | no |
-l | no | no |
-m | no | no |
-p | no | no |
-q | no | no |
-r | no | no |
-s | no | no |
-t | no | no |
-u | no | no |
who Busybox specific options: None
xargs POSIX options
option | exists | compliant | remarks
-E eofstr | no | no |
-I replstr | no | no |
-L number | no | no |
-n number | yes | yes |
-p | yes | yes |
-s size | yes | yes |
-t | yes | yes |
-x | yes | yes |
xargs Busybox specific options:
-e[STR], -0, -r
zcat POSIX options: None
zcat Busybox specific options: None