suckless unix tools
Go to file
Mattias Andrée 609169d600 install: ignore -s
The -s flag previously called strip(1) on the installed file.
This patch changes install(1)'s behaviour to ignore -s.

Many makefiles use the -s flag, so it has to be recognised for
compatibility, however it does not have to do anything because
symbols do not negatively affect the functionallity of binaries.

Ignoring -s have the added benefit that the user do not need
to edit makefiles if they want the symbols that are useful for
debugging. If the user wants to strip away symbols, it can be
done manually or automatically by the package manager.

Laslo: Update the man-date and remove -s from usage()

Signed-off-by: Mattias Andrée <maandree@kth.se>
2016-12-27 13:56:27 +01:00
libutf
libutil parsemode: No need to return after eprintf 2016-12-27 13:33:35 +01:00
LICENSE ed: Don't match against line 0 in search() 2016-12-27 12:28:36 +01:00
Makefile remove install.1 on make uninstall 2016-12-27 13:30:08 +01:00
README Add rev(1) 2016-12-27 11:35:27 +01:00
TODO Rever the strmem() addition and add a TODO element 2016-02-26 09:54:46 +00:00
arg.h arg.h: fixed argv checks order 2016-02-20 08:23:57 +00:00
basename.1
basename.c
cal.1
cal.c cal: Highlight current day 2015-11-21 10:20:07 +00:00
cat.1
cat.c cat: fix u flag 2016-03-01 11:14:42 +00:00
chgrp.1
chgrp.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
chmod.1
chmod.c
chown.1 chown: fix user:group option parsing 2015-12-21 19:07:51 +00:00
chown.c chown: fix user:group option parsing 2015-12-21 19:07:51 +00:00
chroot.1
chroot.c
cksum.1
cksum.c
cmp.1
cmp.c
cols.1
cols.c Use the UTF8_POINT macro in cols(1) 2016-03-10 08:48:09 +00:00
comm.1
comm.c Rename struct linebufline to struct line and add linecmp() 2016-03-10 08:48:09 +00:00
compat.h
config.mk Use -D_FILE_OFFSET_BITS=64 by default 2015-11-13 11:01:00 +00:00
cp.1
cp.c
cron.1
cron.c Sync cron with latest scron 2015-11-06 11:01:00 +00:00
crypt.h
cut.1
cut.c Support NUL containing lines in cut(1) 2016-03-10 08:48:09 +00:00
date.1
date.c
dirname.1
dirname.c
du.1
du.c Fix type mismatches 2015-11-26 10:35:46 +00:00
echo.1
echo.c
ed.1 ed: add manpage 2016-12-27 12:53:30 +01:00
ed.c ed: Use strlcpy() instead of strcpy() and other minor things 2016-12-27 13:07:02 +01:00
env.1
env.c
expand.1
expand.c
expr.1
expr.c
false.1
false.c
find.1
find.c find: remove VLAs 2016-12-27 12:46:06 +01:00
flock.1
flock.c flock: Check for waitpid() error 2015-12-21 14:13:36 +00:00
fold.1
fold.c Support NUL containing lines in fold(1) and reuse the line-buffer(!) 2016-03-10 08:48:09 +00:00
fs.h
getconf.1
getconf.c use only one getconf header 2016-10-05 18:48:10 +02:00
getconf.sh getconf.sh: Be more explicit we are using a heredoc here 2016-10-05 18:48:10 +02:00
grep.1
grep.c grep: Fix -v output and exit status 2016-05-14 12:58:38 +01:00
head.1
head.c Support NUL containing lines in head(1) 2016-03-10 08:48:09 +00:00
hostname.1
hostname.c
join.1
join.c Support NUL containing lines in join(1) 2016-03-10 08:48:09 +00:00
kill.1
kill.c
link.1
link.c
ln.1
ln.c ln: Only fail if same inode without -f flag 2016-07-09 10:17:16 +01:00
logger.1
logger.c
logname.1
logname.c
ls.1
ls.c ls: respect -q when printing directory names with -R 2016-10-06 10:21:12 +02:00
md5.h
md5sum.1
md5sum.c
mkdir.1
mkdir.c
mkfifo.1
mkfifo.c
mktemp.1
mktemp.c
mv.1
mv.c mv: Ensure stat is initialized when we prune a tree 2015-11-13 14:21:07 +00:00
nice.1
nice.c Check if PRIO_MIN and PRIO_MAX are defined 2015-12-15 17:05:21 +00:00
nl.1
nl.c Support NUL containing lines in nl(1) and reuse the line-buffer(!) 2016-03-10 08:48:09 +00:00
nohup.1
nohup.c
od.1 od: Add some missing type flags 2016-07-09 10:17:16 +01:00
od.c od: Don't advance past end of type string 2016-07-09 10:17:16 +01:00
paste.1
paste.c Properly use delimlen instead of len in paste(1) 2016-03-10 13:39:49 +00:00
pathchk.1 Fix pathchk manpage regarding exit status 2016-02-11 10:09:38 +00:00
pathchk.c pathchk: fixes and cleanup 2016-10-05 18:48:10 +02:00
printenv.1 printenv: exit status is 2 on failure 2016-04-20 22:57:40 +01:00
printenv.c printenv: exit status is 2 on failure 2016-04-20 22:57:40 +01:00
printf.1 Change the note in printf.1 on octal escapes 2016-02-21 08:52:48 +00:00
printf.c printf: handle \0 in %b arguments 2016-12-27 13:25:38 +01:00
pwd.1
pwd.c
queue.h
readlink.1 readlink: Remove broken support for -m and -e 2015-11-16 16:30:19 +00:00
readlink.c readlink: Remove broken support for -m and -e 2015-11-16 16:30:19 +00:00
renice.1
renice.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
rev.1 Add rev(1) 2016-12-27 11:35:27 +01:00
rev.c Add rev(1) 2016-12-27 11:35:27 +01:00
rm.1
rm.c
rmdir.1
rmdir.c
sed.1
sed.c Revert "fix length after '\' getline string termination" 2016-03-01 15:24:32 +00:00
seq.1
seq.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
setsid.1
setsid.c
sha1.h
sha1sum.1
sha1sum.c
sha224.h add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha224sum.1 add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha224sum.c add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha256.h
sha256sum.1
sha256sum.c
sha384.h add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha384sum.1 add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha384sum.c add sha224sum and sha384sum 2016-02-24 10:15:16 +00:00
sha512-224.h add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-224sum.1 add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-224sum.c add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-256.h add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-256sum.1 add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512-256sum.c add sha512-224sum (SHA512/224) and sha512-256sum (SHA512/256) 2016-02-24 10:40:57 +00:00
sha512.h
sha512sum.1
sha512sum.c
sleep.1
sleep.c
sort.1 Forgot to bump date for sort(1) manpage 2016-02-17 08:43:15 +00:00
sort.c sort: Fix line comparison when col buffer contains data from longer line 2016-07-09 10:09:50 +01:00
split.1
split.c Fix type mismatch in split(1) 2015-11-26 10:35:46 +00:00
sponge.1
sponge.c
strings.1
strings.c
sync.1
sync.c
tail.1
tail.c Support NUL containing lines in tail(1) 2016-03-10 08:48:09 +00:00
tar.1 tar: support -f - for stdin/out 2016-02-15 10:20:12 +00:00
tar.c tar: make remove(3) non-fatal when extracting 2016-02-15 14:27:10 +00:00
tee.1
tee.c tee: Make sure we continue on error 2016-06-23 19:38:05 +01:00
test.1 Update test.1: 2016-04-20 22:57:40 +01:00
test.c test: -erwx test against effetive uid/gid, not real 2016-10-05 18:48:10 +02:00
text.h Rename struct linebufline to struct line and add linecmp() 2016-03-10 08:48:09 +00:00
tftp.1
tftp.c Include sys/time.h for timeval structure 2015-11-13 11:32:11 +00:00
time.1
time.c Fix type mismatches 2015-11-26 10:35:46 +00:00
touch.1
touch.c touch: Avoid unnecessary call to stat 2016-07-09 10:17:16 +01:00
tr.1 tr.1: Make note of some changes in the utility 2016-10-05 21:42:24 +02:00
tr.c tr: Fix multiple ranges with different lengths (Michael Forney) 2016-11-18 12:45:59 +01:00
true.1
true.c
tsort.1 tsort.1: use mandoc literal block for example 2016-02-26 09:54:46 +00:00
tsort.c tsort style fixes 2016-02-24 15:57:33 +00:00
tty.1
tty.c
uname.1
uname.c
unexpand.1
unexpand.c
uniq.1
uniq.c uniq: always store previous line length 2016-03-11 15:38:36 +00:00
unlink.1
unlink.c
utf.h
util.h Support NUL-containing lines in sort(1) 2016-03-10 08:48:09 +00:00
uudecode.1
uudecode.c Revert "fix length after '\' getline string termination" 2016-03-01 15:24:32 +00:00
uuencode.1
uuencode.c uuencode: style: just use pointer *b 2016-03-01 15:24:32 +00:00
wc.1
wc.c Fix wc(1) output for large files 2016-02-24 14:45:20 +00:00
which.1
which.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
whoami.1 Add whoami(1) 2015-12-14 10:14:07 +00:00
whoami.c Fix style issue in whoami which broke the sbase-box target 2015-12-14 11:59:48 +00:00
xargs.1
xargs.c Cleanup usage() across sbase 2015-12-21 18:07:25 +00:00
xinstall.1 install: ignore -s 2016-12-27 13:56:27 +01:00
xinstall.c install: ignore -s 2016-12-27 13:56:27 +01:00
yes.1
yes.c

README

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:

'#'  -> UTF-8 support, '=' -> Implicit UTF-8 support, '*' -> Finished,
'|'  -> Audited,       'o' -> POSIX 2013 compliant,   'x' -> Non-POSIX,
'0'  -> NUL handling,  '()' -> Petty flag

      UTILITY         MISSING
      -------         -------
0=*|o basename        .
0=*|o cal             .
0=*|o cat             .
0=*|o chgrp           .
0=*|o chmod           .
0=*|o chown           .
0=*|x chroot          .
0=*|o cksum           .
0=*|o cmp             .
0#*|x cols            .
0=*|o comm            .
0=*|o cp              (-i)
0=*|x cron            .
0#*|o cut             .
0=*|o date            .
0=*|o dirname         .
0=*|o du              .
0=*|o echo            .
    o ed              .
0=*|o env             .
0#*|o expand          .
0#*|o expr            .
0=*|o false           .
0=    find            .
0=* x flock           .
0#*|o fold            .
0=*|o getconf         (-v)
 =*|o grep            .
0=*|o head            .
0=*|x hostname        .
0=*|x install         .
0=* o join            .
0=*|o kill            .
0=*|o link            .
0=*|o ln              .
0=*|o logger          .
0=*|o logname         .
0#* o ls              (-C, -k, -m, -p, -s, -x)
0=*|x md5sum          .
0=*|o mkdir           .
0=*|o mkfifo          .
0=*|x mktemp          .
0=*|o mv              (-i)
0=*|o nice            .
0#*|o nl              .
0=*|o nohup           .
0=*|o od              .
0#* o pathchk         .
 #*|o paste           .
0=*|x printenv        .
0#*|o printf          .
0=*|o pwd             .
0=*|x readlink        .
0=*|o renice          .
0#* x rev             .
0=*|o rm              (-i)
0=*|o rmdir           .
 #    sed             .
0=*|x seq             .
0=*|x setsid          .
0=*|x sha1sum         .
0=* x sha224sum       .
0=*|x sha256sum       .
0=* x sha238sum       .
0=*|x sha512sum       .
0=* x sha512-224sum   .
0=* x sha512-256sum   .
0=*|o sleep           .
0#*|o sort            .
0=*|o split           .
0=*|x sponge          .
0#*|o strings         .
0=*|x sync            .
0=*|o tail            .
0=*|x tar             .
0=*|o tee             .
0=*|o test            .
0=*|x tftp            .
0=*|o time            .
0=*|o touch           .
0#*|o tr              .
0=*|o true            .
0=* o tsort           .
0=*|o tty             .
0=*|o uname           .
0#*|o unexpand        .
0=*|o uniq            .
0=*|o unlink          .
0=*|o uudecode        .
0=*|o uuencode        .
0#*|o wc              .
0=*|x which           .
0=*|x whoami          .
0=*|o xargs           (-p)
0=*|x yes             .

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 or run: make sbase-box-install

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/