POSIX conformance documentation for busybox

Attached a start for POSIX conformance documentation for busybox (see
TODO file and discussion last week).
A table of all options as defined by POSIX and as implemented by
busybox (see for a FreeBSD example
http://people.freebsd.org/~schweikh/posix-utilities.html).

Only the tools that are stand-alone applets are documented (not ash
built-ins as 'read'), as there are multiple shells.
When there are two versions (echo) the stand-alone version was
checked. I think this may be the wrong way to go, as most users will
probably use the built-in version - but which shell?

The table was auto-generated by running, for each POSIX utility,
latest git allyesconfig* "busybox <tool> --help" and parsing the
output, and comparing that to tool options extracted from its man page
at http://www.opengroup.org/onlinepubs/9699919799/.
This means that it the usage string is not correct, the table is also
wrong. I noticed that for 'kill', for example, the usage string does
not mention the -s, -q, -o options.
For each option is set whether it exists in busybox and if it is, is
it compliant to the standard. Of course, checking compliance can only
be done manually - a process which will probably take some time (see
'cat' for example).

I didn't post the auto-generation script (python, ugly) because the
table will now change manually; I can post it if there is anyone
interested.

As for the tools not implemented by busybox at all, I think most of
them are indeed fairly esotetic. Some I was suprised to see missing
are link, file, newgrp, unlink.

* Well, almost allyesconfig - but nothing very POSIX-y was disabled.

Signed-off-by: David Krakov <krakov@gmail.org>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
David Krakov 2009-05-26 19:42:34 -04:00 committed by Mike Frysinger
parent 68759edb6e
commit 29ec116037

698
docs/posix_conformance.txt Normal file
View File

@ -0,0 +1,698 @@
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/utilities/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
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 | |
-L | yes | |
-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 | |
-2 | yes | |
-3 | yes | |
comm Busybox specific options: None
cp POSIX options
option | exists | compliant | remarks
-H | yes | |
-L | yes | |
-P | yes | |
-R | yes | |
-f | yes | |
-i | yes | |
-p | 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 | |
-c list | yes | |
-d delim | yes | |
-f list | yes | |
-n | yes | |
-s | 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: None
dd Busybox specific options:
df POSIX options
option | exists | compliant | remarks
-P | yes | |
-k | yes | |
-t | no | no |
df Busybox specific options:
-a, -m, -B SIZE, -i, -h
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
echo Busybox specific options:
-e, -E, -n
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 | |
expand Busybox specific options:
--tabs=N, -i, --initial
expr POSIX options: None
expr Busybox specific options:
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 | |
-s | yes | |
-w width | 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 | |
-g | yes | |
-n | yes | |
-r | yes | |
-u | 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 | |
-s | 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 | |
-A | yes | |
-C | yes | |
-F | yes | |
-H | no | no |
-L | yes | |
-R | yes | |
-S | yes | |
-a | yes | |
-c | yes | |
-d | yes | |
-f | no | no |
-g | no | no |
-i | yes | |
-k | yes | |
-l | yes | |
-m | no | no |
-n | yes | |
-o | no | no |
-p | yes | |
-q | no | no |
-r | yes | |
-s | yes | |
-t | yes | |
-u | yes | |
-x | 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 | |
-p | 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 | |
-i | yes | |
mv Busybox specific options: None
nice POSIX options
option | exists | compliant | remarks
-n increment | 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 | |
-b | no | no |
-c | no | no |
-d dir | no | no |
-e | no | no |
-i patchfile | yes | |
-l | no | no |
-n | no | no |
-o outfile | no | no |
-p num | 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 | |
-n increment | yes | |
-p | yes | |
-u | yes | |
renice Busybox specific options: None
rm POSIX options
option | exists | compliant | remarks
-R | yes | |
-f | yes | |
-i | yes | |
-r | yes | |
rm Busybox specific options: None
rmdir POSIX options
option | exists | compliant | remarks
-p | 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 | |
-c | yes | |
-d | yes | |
-f | yes | |
-i | yes | |
-k keydef | yes | |
-m | no | no |
-n | yes | |
-o output | yes | |
-r | yes | |
-t char | yes | |
-u | yes | |
sort Busybox specific options:
-mST, -g, -M, -s, -z
split POSIX options
option | exists | compliant | remarks
-a suffix_length | yes | |
-b n | yes | |
-b nk | yes | |
-b nm | yes | |
-l line_count | yes | |
split Busybox specific options: None
strings POSIX options
option | exists | compliant | remarks
-a | yes | |
-n number | yes | |
-t format | no | no |
strings Busybox specific options:
-o, -f
stty POSIX options
option | exists | compliant | remarks
-a | yes | |
-g | 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 | |
-i | 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 | |
-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 | |
-d | yes | |
-s | 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 | |
-m | yes | |
-n | yes | |
-r | yes | |
-s | yes | |
-v | yes | |
uname Busybox specific options:
-p
uncompress POSIX options
option | exists | compliant | remarks
-c | yes | |
-f | yes | |
-v | no | no |
uncompress Busybox specific options: None
unexpand POSIX options
option | exists | compliant | remarks
-a | yes | |
-t tablist | yes | |
unexpand Busybox specific options:
--tabs=N, -f, --first-only, --all
uniq POSIX options
option | exists | compliant | remarks
-c | yes | |
-d | yes | |
-f fields | yes | |
-s chars | yes | |
-u | 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 | |
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 | |
-l | yes | |
-m | no | no |
-w | yes | |
wc Busybox specific options:
-L
who POSIX options
option | exists | compliant | remarks
-H | no | no |
-T | no | no |
-a | yes | |
-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 | |
-p | yes | |
-s size | yes | |
-t | yes | |
-x | yes | |
xargs Busybox specific options:
-e[STR], -0, -r
zcat POSIX options: None
zcat Busybox specific options: None