1
0
mirror of git://git.suckless.org/sbase synced 2024-12-25 00:12:42 +00:00
suckless unix tools
Go to file
2015-01-24 00:24:42 +01:00
libutf chartorunearr: initialize ret 2015-01-10 17:00:01 +00:00
libutil cp: Rename -d option to -P 2014-12-08 10:02:56 +00:00
arg.h Rename __ARG_H__ to ARG_H__ 2013-11-25 21:29:20 +00:00
basename.1 Refactor basename(1)-manpage 2015-01-23 23:18:42 +01:00
basename.c Fix comparison >= 0 is always true in basename(1) 2014-12-08 12:14:39 +00:00
cal.1 Update date in cal.1 2015-01-18 00:42:26 +00:00
cal.c Fix a small error in cal(1) manpage 2015-01-16 21:48:50 +00:00
cat.1 Add mandoc-manpage for cat(1) 2015-01-16 10:03:18 +00:00
cat.c read stdin if arg is exactly "-" not just begins with '-' 2014-11-18 21:53:37 +00:00
chgrp.1
chgrp.c chgrp: Only check errno if getgrnam() fails 2014-12-21 12:14:26 +00:00
chmod.1 Add mandoc-manpage for chmod(1) 2015-01-17 21:59:37 +00:00
chmod.c Add mandoc-manpage for chmod(1) 2015-01-17 21:59:37 +00:00
chown.1 chown: update usage 2014-07-21 16:43:54 +01:00
chown.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
chroot.1
chroot.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
cksum.1 2014 -> 2015 in cksum.1 2015-01-17 23:09:45 +00:00
cksum.c Add mandoc-manpage for cksum(1) and clean up code 2015-01-17 23:09:41 +00:00
cmp.1 Another update to cmp.1 2014-11-21 13:12:36 +00:00
cmp.c cmp(1) is POSIX compliant so mention it in the manpage 2014-11-21 12:32:07 +00:00
cols.1 Forgot .El in cols.1 2014-12-08 15:15:12 +00:00
cols.c Update cols manpage 2014-12-08 15:14:08 +00:00
comm.1 Add mandoc-manpage for comm(1) and clean up code 2015-01-17 23:10:07 +00:00
comm.c Add mandoc-manpage for comm(1) and clean up code 2015-01-17 23:10:07 +00:00
compat.h Add compat.h 2014-11-17 15:46:28 +00:00
config.mk Import strcasestr() from musl and remove -D_GNU_SOURCE 2014-11-20 23:46:06 +00:00
cp.1 cp: Rename -d option to -P 2014-12-08 10:02:56 +00:00
cp.c cp: Rename -d option to -P 2014-12-08 10:02:56 +00:00
cron.1 Add minimal cron.1 2014-12-16 11:04:18 +00:00
cron.c Rename crond to cron 2014-12-16 11:04:07 +00:00
crypt.h checksum tools: implement -c 2014-03-23 18:02:39 +00:00
cut.1 Add support for arbitrary length delimiters in cut(1) 2015-01-22 20:27:54 +01:00
cut.c Add support for arbitrary length delimiters in cut(1) 2015-01-22 20:27:54 +01:00
date.1 Add mandoc-manpage for date(1) and clean up code 2015-01-23 22:54:25 +01:00
date.c Add mandoc-manpage for date(1) and clean up code 2015-01-23 22:54:25 +01:00
dirname.1 Add mandoc-manpage for dirname(1) 2015-01-23 23:17:54 +01:00
dirname.c Fix coding style 2014-11-13 18:08:43 +00:00
du.1 du: add -d flag to specify the max depth to show files or directories 2014-10-18 23:57:00 +01:00
du.c du: fix eprintf parameter 2014-12-22 10:34:29 +00:00
echo.1 Add mandoc-manpage for echo(1) 2015-01-23 23:49:24 +01:00
echo.c Add mandoc-manpage for echo(1) 2015-01-23 23:49:24 +01:00
env.1 Be more consistent in env.1 2015-01-24 00:24:42 +01:00
env.c Add mandoc-manpage for env(1) 2015-01-24 00:22:06 +01:00
expand.1 Implement -i flag for expand 2014-06-09 17:00:33 +01:00
expand.c Handle non-power-of-two tab sizes in expand(1) 2014-12-04 22:26:08 +00:00
expr.1 Add expr.1 2014-09-29 14:22:59 +01:00
expr.c Refactor expr.c 2014-11-17 15:05:49 +00:00
false.1 Add manpages for false(1) and true(1) 2015-01-16 10:03:18 +00:00
false.c Simplify true(1) and false(1) 2014-10-03 00:03:08 +01:00
fold.1
fold.c remove agetline 2014-11-18 21:05:28 +00:00
fs.h cp: Rename -d option to -P 2014-12-08 10:02:56 +00:00
grep.1 Clarify mechanics in grep.1 2015-01-22 17:50:07 +00:00
grep.c Use \< and \> instead of [[:<:]] and [[:>:]] 2015-01-22 17:37:52 +00:00
head.1
head.c Print header in head(1) 2014-11-20 22:52:05 +00:00
hostname.1 Add hostname(1) 2013-10-05 14:58:55 +01:00
hostname.c Fix coding style 2014-11-13 18:08:43 +00:00
kill.1 Fix .SH to .Sh in kill.1 2014-11-23 13:22:55 +00:00
kill.c Un-boolify sbase 2014-11-14 10:54:20 +00:00
LICENSE Various cal(1) improvements 2015-01-02 13:14:41 +00:00
link.1 Add link(1) 2014-10-17 15:36:16 +01:00
link.c Fix coding style 2014-11-13 18:08:43 +00:00
ln.1 ln: Add support for target directories 2014-11-23 20:58:15 +00:00
ln.c Handle ln -sf a foo/ correctly 2015-01-22 16:26:30 +00:00
logger.1 Implement POSIX 2008 compliant logger(1) 2014-12-04 11:36:40 +00:00
logger.c logger: Don't bother freeing buf 2014-12-16 20:14:40 +00:00
logname.1 Add logname(1) 2014-10-17 15:36:27 +01:00
logname.c Fix coding style 2014-11-13 18:08:43 +00:00
ls.1 ls: Implement -c and update manpage 2015-01-20 16:50:37 +00:00
ls.c ls: Implement -c and update manpage 2015-01-20 16:50:37 +00:00
Makefile Rewrite tr(1) in a sane way 2015-01-10 14:26:30 +00:00
md5.h
md5sum.1 update some man pages 2014-04-12 20:33:33 +01:00
md5sum.c Staticise globals 2014-11-17 13:39:11 +00:00
mkdir.1 Implement -m option for mkdir 2013-10-05 13:51:45 +01:00
mkdir.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
mkfifo.1 Implement -m for mkfifo(1) 2013-11-30 20:58:15 +00:00
mkfifo.c Don't stop at first failure in mkfifo(1) 2014-11-22 11:18:21 +00:00
mktemp.1 Forgot to update manpage for mktemp(1) 2013-11-14 19:50:07 +00:00
mktemp.c Fix coding style 2014-11-13 18:08:43 +00:00
mv.1 Support -f for mv 2013-10-05 13:51:45 +01:00
mv.c Un-boolify sbase 2014-11-14 10:54:20 +00:00
nice.1
nice.c Use PRIO_{MIN,MAX} instead of NZERO 2014-11-17 15:02:51 +00:00
nl.1 Update nl(1) manpage 2014-12-04 13:50:15 +00:00
nl.c Update nl(1) manpage 2014-12-04 13:50:15 +00:00
nohup.1
nohup.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
paste.1
paste.c Convert codebase to use emalloc.c utility-functions 2014-11-16 10:22:39 +00:00
printenv.1
printenv.c Style fix 2014-11-16 13:17:06 +00:00
printf.1 Add printf.1 2014-09-29 14:35:35 +01:00
printf.c Import printf(1) from OpenBSD 2014-09-28 15:12:15 +01:00
pwd.1 Update pwd.1 2014-11-23 12:56:19 +00:00
pwd.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
queue.h Use queue.h in grep(1) 2014-11-16 12:39:15 +00:00
readlink.1
readlink.c State the reason for failure in readlink(1) 2014-12-04 12:14:59 +00:00
README Add mandoc-manpage for env(1) 2015-01-24 00:22:06 +01:00
renice.1 renice(1): renice is not PASTE 2014-05-06 16:21:56 +01:00
renice.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
rm.1 Add -R as a synonym to -r for rm(1) 2013-12-12 13:15:47 +00:00
rm.c Un-boolify sbase 2014-11-14 10:54:20 +00:00
rmdir.1
rmdir.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
runetypebody.h Import libutf from http://git.suckless.org/libutf 2014-11-17 15:46:01 +00:00
seq.1
seq.c Un-boolify sbase 2014-11-14 10:54:20 +00:00
setsid.1 Add setsid(1) by arg 2013-10-05 14:58:55 +01:00
setsid.c Sort includes and more cleanup and fixes in util/ 2014-11-14 10:54:10 +00:00
sha1.h
sha1sum.1 update some man pages 2014-04-12 20:33:33 +01:00
sha1sum.c Staticise globals 2014-11-17 13:39:11 +00:00
sha256.h
sha256sum.1 update some man pages 2014-04-12 20:33:33 +01:00
sha256sum.c Staticise globals 2014-11-17 13:39:11 +00:00
sha512.h Add sha512sum(1) 2013-08-04 11:00:34 -04:00
sha512sum.1 update some man pages 2014-04-12 20:33:33 +01:00
sha512sum.c Staticise globals 2014-11-17 13:39:11 +00:00
sleep.1
sleep.c Fix coding style 2014-11-13 18:08:43 +00:00
sort.1 sort: Implement -c and -C flags 2014-11-23 19:42:14 +00:00
sort.c Nuke another freelist() 2014-12-16 21:02:03 +00:00
split.1
split.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
sponge.1
sponge.c Fix error message 2014-11-16 13:20:36 +00:00
strings.1 Add note about standards for strings.1 2014-11-23 12:46:24 +00:00
strings.c Respect exit status in strings(1) and update manpage 2014-11-23 12:44:38 +00:00
sync.1
sync.c Fix coding style 2014-11-13 18:08:43 +00:00
tail.1
tail.c Print header in tail(1) 2014-11-20 23:09:42 +00:00
tar.1
tar.c Un-boolify sbase 2014-11-14 10:54:20 +00:00
tee.1 Add mandoc-manpage for tee(1) 2015-01-23 22:02:45 +01:00
tee.c tee: -i option ignores SIGINT 2015-01-22 21:35:36 +00:00
test.1 Update manpage for binary operations in test(1) 2013-11-11 12:01:47 +00:00
test.c Un-boolify sbase 2014-11-14 10:54:20 +00:00
text.h remove agetline 2014-11-18 21:05:28 +00:00
TODO Update TODO 2014-12-21 00:01:58 +00:00
touch.1 touch: Remember to terminate .Bl with .El 2015-01-20 11:19:32 +00:00
touch.c touch: Style fix 2015-01-20 11:24:37 +00:00
tr.1 Fix date 2015-01-16 10:03:18 +00:00
tr.c Add license remark to tr.c 2015-01-20 15:26:08 +00:00
true.1 Add manpages for false(1) and true(1) 2015-01-16 10:03:18 +00:00
true.c Simplify true(1) and false(1) 2014-10-03 00:03:08 +01:00
tty.1
tty.c Sort includes and more cleanup and fixes in util/ 2014-11-14 10:54:10 +00:00
uname.1
uname.c Un-boolify sbase 2014-11-14 10:54:20 +00:00
unexpand.1 Add unexpand(1) 2014-06-09 17:00:13 +01:00
unexpand.c unexpand: fix eprintf 2014-12-22 10:34:29 +00:00
uniq.1
uniq.c remove agetline 2014-11-18 21:05:28 +00:00
unlink.1
unlink.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
utf.h Rewrite tr(1) in a sane way 2015-01-10 14:26:30 +00:00
util.h Import strcasestr() from musl and remove -D_GNU_SOURCE 2014-11-20 23:46:06 +00:00
uudecode.1 Initial commit of the uudecode tool and man page 2014-02-02 20:50:31 +00:00
uudecode.c remove agetline 2014-11-18 21:05:28 +00:00
uuencode.1 Add uuencode(1) 2014-01-31 15:29:11 +00:00
uuencode.c Fix coding style 2014-11-13 18:08:43 +00:00
wc.1
wc.c Un-boolify sbase 2014-11-14 10:54:20 +00:00
xargs.1 update some man pages 2014-04-12 20:33:33 +01:00
xargs.c Use < 0 instead of == -1 2014-11-19 20:09:29 +00:00
yes.1
yes.c Fix coding style 2014-11-13 18:08:43 +00:00

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
--------

You need GNU make to build sbase on OpenBSD.

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/