FRIGN
692c11bf2b
Add tablist support and a mandoc-manpage to expand(1)
and mark it as finished in the README. This is another example showing how broken the GNU coreutils are: $ echo -e "äää\tüüü\tööö" | gnu-expand -t "5,10,20" äää üüü ööö $ echo -e "äää\tüüü\tööö" | sbase-expand -t "5,10,20" äää üüü ööö This is due to the fact that they are still not UTF8-aware and actually see "ä" as two single characters, expanding the "äää" with 4 spaces to a tab of length 10. The correct way however is to expand the "äää" with 2 spaces to a tab of length 5. One can only imagine how this silently breaks a lot of code around the world. WHAT WERE THEY THINKING?
sbase - suckless unix tools =========================== sbase is a collection of unix tools that are inherently portable across UNIX and UNIX-like systems. The following tools are implemented ('*' == finished, '#' == UTF-8 support, '=' == implicit UTF-8 support): UTILITY POSIX 2008 COMPLIANT MISSING OPTIONS ------- -------------------- --------------- =* basename yes none =* cal yes none =* cat yes none = chgrp no -h, -H, -L, -P =* chmod yes none = chown no -h, -H, -L, -P = chroot non-posix none =* cksum yes none cmp yes none cols non-posix none =* comm yes none = cp no -H, (-i), -L =* cron non-posix none #* cut yes none =* date yes none =* dirname yes none = du no -H, -L, (-x) =* echo yes none =* env yes none #* expand yes none expr yes none =* false yes none fold yes none grep yes none head yes none = hostname non-posix none =* kill yes none = link yes none = ln yes none =* logger yes none = logname yes none = ls no -C, -R, -q, -u md5sum non-posix none = mkdir yes none = mkfifo yes none = mktemp non-posix none = mv yes (-i) = nice yes none = nl no -d, -f, -h, -l, -n, -p, -v, -w = nohup yes none paste yes none = printenv non-posix none printf stolen stolen =* pwd yes none = readlink non-posix none = renice yes none = rm yes (-i) = rmdir no -p = sleep yes none = setsid non-posix none sort no -m, -o, -d, -f, -i split yes none = sponge non-posix none strings no -a, -n, -t = sync non-posix none = tail no -c, -f = tar non-posix none =* tee yes none test yes none = touch no -r #* tr yes none =* true yes none = tty yes none = uudecode no -o = uuencode no -m = uname yes none # unexpand yes none = uniq no -f, -s = unlink yes none seq non-posix none = sha1sum non-posix none = sha256sum non-posix none = sha512sum non-posix none wc yes none = xargs no -I, -L, -p, -s, -t, -x = yes yes none The complement of sbase is ubase[1] which is Linux-specific and provides all the non-portable tools. Together they are intended to form a base system similar to busybox but much smaller and suckless. Building -------- To build sbase, simply type make. You may have to fiddle with config.mk depending on your system. You can also build sbase-box, which generates a single binary containing all the required tools. You can then symlink the individual tools to sbase-box. Ideally you will want to statically link sbase. If you are on Linux we recommend using musl-libc[2]. Portability ----------- sbase has been compiled on a variety of different operating systems, including Linux, *BSD, OSX, Haiku, Solaris, SCO OpenServer and others. Various combinations of operating systems and architectures have also been built. You can build sbase with gcc, clang, tcc, nwcc and pcc. [1] http://git.suckless.org/ubase/ [2] http://www.musl-libc.org/
Description
Languages
C
79.5%
Roff
16%
Shell
1.9%
Awk
1.3%
Makefile
1.3%