libslack

A UNIX/C library of general utilities for programmers with Slack

Slack(n.): The state in which you need nothing,
because you already have it.
-- Dobbs, 1956


What is libslack? | Features | Development | Supported Platforms | Documentation | Download | Mailing Lists

What is libslack?

Libslack is a library of general utilities designed to make UNIX/C programming a bit easier on the eye. It is a seemingly random collection of modules and functions that I find commonly useful. It was originally implemented as part of the daemon program (although some of the code dates back much further).

It's a small library with lots of functionality, accurately documented and thoroughly tested. Good library naming conventions are not rigorously observed on the principle that common operations should always be easy to write and code should always be easy to read.

Libslack is freely available under the GNU General Public License.

Features

For more information read the manual entries in the Documentation section.

Supported Platforms

Currently, libslack is only known to compile and work on:

It is written in ISO C using POSIX almost exclusively except for some BSD functions that appear on most systems (e.g. sockets). So it shouldn't be difficult to get it working on other (recent) systems that support ISO C, POSIX and XPG4.

Documentation

There is a README file, libslack overview manpage, a manpage for each module in libslack and a manpage for the libslack-config utility. There is also the paper MT-Disciplined - decoupling thread safety.

README - Description, Install, Requirements, Copying, History, References, TODO
libslack(3) - an overview of libslack
libslack-config(1) - administration utility for libslack
agent(3) - agent oriented programming (header, source)
coproc(3) - coprocesses using pipes or pseudo terminals (header, source)
daemon(3) - becoming a daemon (header, source)
err(3) - message/error/debug/verbosity/alert messaging (header, source)
fio(3) - fifo and file control and some I/O (header, source)
getopt(3) - GNU getopt_long() for systems that don't have it (header, source)
hsort(3) - heap sort (by Stephen Russell) (header, source)
lim(3) - POSIX.1 limits convenience functions (header, source)
link(3) - abstract linked lists with optional growable free lists (header, source)
list(3) - list (growable pointer array) data type (header, source)
locker(3) - abstract locking and reader/writer lock implementation (header, source)
map(3) - map (hash table) data type (header, source)
mem(3) - memory helper functions, secure memory, memory pools (header, source)
msg(3) - message handling and syslog helper functions (header, source)
net(3) - network functions (clients/servers, expect/send, pack/unpack, mail) (header, source)
prog(3) - program framework and flexible command line option handling (header, source)
prop(3) - program properties files (header, source)
pseudo(3) - pseudo terminals (by Tatu Ylonen) (header, source)
sig(3) - ISO C compliant signal handling (header, source)
snprintf(3) - safe sprintf() for systems that don't have it (header, source)
str(3) - string data type (tr, regex, regsub, fmt, trim, lc, uc, ...) (header, source)
vsscanf(3) - sscanf() with va_list argument for systems that don't have it (header, source)

Download

Latest: libslack-0.6.tar.gz (SHA256 23c373d360bbe6d0b99ed8f801a20ad7c7444f749b81e9670a59f73c8fbec304)
libslack-0.6.html.tar.gz (SHA256 1fc08579d86fe22d4514b875e1c47bd120dbd8f67f257ea7fb16eceda1cd32ef)
libslack-0.6-1.src.rpm (SHA256 9e45eef69228594fd328336749051a354622105911636cd310ddb21d132e3fe2)
libslack-0.6-1.x86_64.rpm (SHA256 27cb7135369aea17538a0b6ab4a5977bd0ca3d51f4c5f5df337f13d7de464eee)
libslack-0.6-1.i686.rpm (SHA256 2e1ff7bdd0fb09644ad17be4a72d17f47158b7391f2a4266d0fc328e2b9cf7d5)
libslack-0.6-openbsd-amd64.tgz (SHA256 cb92645845762c1ac7c9b99e75bcdaa3232c4a7bd82369a3f3d94aa290261bc5)
libslack-0.6-openbsd-i386.tgz (SHA256 f93ab0f2f96eb4aebae184526c9ea6fc4b70fb7da21a071628a4ee3157b7546a)
libslack-0.6-freebsd-amd64.tbz (SHA256 5b72bde11d3d5b87f9f0c68811d64a1040010ba9affa79a90ff901f6807c4651)
libslack-0.6-freebsd-i386.tbz (SHA256 fa1b7120ad33a02bfa2a1c225fc31e9b3359dfcd0747d0f0c546ce939d13410c)
libslack-0.6-netbsd-amd64.tgz (SHA256 cf6888448ecac4585b6b552a04b7ca1dbc368ee22f22e3ffc75caf6813c069b3)
libslack-0.6-netbsd-i386.tgz (SHA256 9f966388b69c71dba1f06c37ae58ea7bf8c6f23db44b4756826705ffafd92a6b)
libslack-0.6-macosx-universal.tar.gz (SHA256 6317b244d1847a970b52988e9d19941596304a859855eff53877559af6c8adf8)
libslack-0.6-macosx-x86_64.tar.gz (SHA256 82c20f44337265b1a261e93aa23f21dbb65750a58fa39a6f1395f8b6ca6e6594)
libslack-0.6-macosx-i386.tar.gz (SHA256 15a122341e9096791eee779bdf67daff48a67295f240daddd578c991447e51da)
libslack-0.6-macosx-powerpc.tar.gz (SHA256 986065da4bb549032009440faf5f5cd7c0ef833efd5444a539c61e2fd94a0150)
libslack-0.6-macosx-10.4-powerpc.tar.gz (SHA256 a2be5611e7a5b2619b2f01fb0d5038543bcf9c55feb113f23cd3c3559dec5f36)
libslack-0.6-solaris-amd64.pkg.gz (SHA256 7d52468160ee9e45a115b04d8de4da46cf1a6e8b2425e242c4730a7fc3c1a859)
libslack-0.6-solaris-i386.pkg.gz (SHA256 afb459b15c365112efae35517d81be6e9c93d7d5814de6d3baeecc83bb03f061)
     
Previous: libslack-0.5.2.tar.gz (SHA256 4b7795bf2522ffeb854ce7564a4faa3c02920de7cb281a7d119b2d04bceffe59)
libslack-0.5.2.html.tar.gz (SHA256 ffcd8feda9d5a455a435b8c033e2be75a7cae141ad8a0bd93ee72ee216ba120d)
libslack-0.5.2-1.src.rpm (SHA256 7f850be0a4a2e77a986cb96ac180c2b7891044931f7cb7d1023e798817a65158)
libslack-0.5.2-1.i386.rpm (SHA256 f5ffba307804cdba118c596e6c6fb654a6806f2f287edbfe56a3802573c5860b)
libslack-0.5.2-obsd-i386.tar.gz (SHA256 d082a19c2c563ecd1c53770441c1fcd7bcc983bb0e8f89343eb480eaf1f96705)
libslack-0.5.2-fbsd-i386.tar.gz (SHA256 9db81afd3ed9088d6a60ce5da7661815be6c9921748ce006ec418df72034ca3b)
libslack-0.5.2-macosx-powerpc.tar.gz (SHA256 532cc21f7780cd5ba2dce649f2cbd61e2466eaa0efb6480bd3ad8f701d8f6de8)
libslack-0.5.2.sun4u.pkg.gz (SHA256 db35e0040ccf232b47dc47a91ee45f232514d6cd5c9153e108d6fa93b0bb1454)
libslack-0.5.2.i86pc.pkg.gz (SHA256 f9454cac533e4f29c7d744bf2774a3e21ac40973ae35aebfd488c7f8d4e1f5ee)
libslack-0.5.1.tar.gz (SHA256 0f87152735a020279134ac552753bbaec1111e71cbad1b635f348fa01794c0b7)
libslack-0.5.1.html.tar.gz (SHA256 acdebf53074e5fc4562fead74247e252b9675f63d48cfabe1a0b4c0b901a3439)
libslack-0.5.1-1.src.rpm (SHA256 14ab525d0f24bc784de5cdee93c8ea9805a23acce1b554136e1d0f2d2e499cf8)
libslack-0.5.1-1.i386.rpm (SHA256 c467bef577167cd1949d41e395b79c5afc618b346569326d823d75deacfdb738)
libslack-0.5.1-obsd-i386.tar.gz (SHA256 47d74448ebc33f49d414228ce84e8014963331aa66139c1a9222b1f9499802ff)
libslack-0.5.1-fbsd-i386.tar.gz (SHA256 f2f2477a14151cb0b71a8bc1c0f49ec112e26e62be4d2d54d0b92916b16e2d25)
libslack-0.5.1.sun4u.pkg.gz (SHA256 af983596b93289e08c8c5da4bd7a4f38ed7c0c574ddbf6a5c90d827483fbcc89)
libslack-0.5.tar.gz (SHA256 19b7f7027a45994284aa5ca8325dd16fd424b0e7e4a4f6d5b1ca019c69f21cc2)
libslack-0.5.html.tar.gz (SHA3256 edf04b78b1bc273ffe5edbdb2af2cc164f84a8d400e79ea8fcf4e9072d1446d9)
libslack_0.5_i386.deb (SHA256 c72775e9073b92eb482b298cbc1da1ae50e0000a88f2dc75e1db22e0dcecfdfa)
libslack-0.5-1.i386.rpm (SHA256 e7f4ef9a11031f28586f0bf0d13bb01b7e0c0d6a0d75bdc3561a9e4dcd6de701)
libslack-0.5-1.src.rpm (SHA256 79d58becefe9de00ca94e2a6956ab7fb934ee1d2dc52cdc6bc7ea5986ed8ff44)
libslack-0.5-obsd-i386.tar.gz (SHA256 8515b63b5b15cc05da27252c122bba08b411cbb4088357fda604424c3538d5ce)
libslack-0.5.sun4u.pkg.gz (SHA256 c4af55f3fb96e561520eec26cce44d0c974ca0188ec435a08249873726794b31)
libslack-0.4.tar.gz (SHA256 c02235740f1da0e68f1b3900048b377f2b6057b369f440c42c30f73f6b0e35f7)
libslack-0.4.html.tar.gz (SHA256 382889b689af58219c6fb08ef2538b1e4ea4a709a38b96ea9d570e4f2070cd70)
libslack_0.4_i386.deb (SHA256 67c8a052641eb58882c92a954cf995c772f079fbbbdda1a7d242e1497ebc7f39)
libslack-0.4-1.i386.rpm (SHA256 45160b68ee0d2c5c97b9c042579d868be13e7fcab25251d3b3d3001de5d831bd)
libslack-0.4-1.src.rpm (SHA256 25ea426bad7325e5ee58fb0999c3f8a7708dd6c47cf3d3a299c0a33563fdc3e1)
libslack-0.4.sun4u.pkg.gz (SHA256 8715c76066d865bbc1ba98f7d1ce2669a0c8cfbc0402ab2205d91dc025c78792)
libslack-0.3.tar.gz (SHA256 a41f58fc9289ff1841b9f33c4081ab21170b16c301e573a9357f6a06a964211b)
libslack-0.2 (only available as part of daemon-0.2.tar.gz)
libslack-0.1 (only available as part of daemon-0.1.tar.gz)

Mailing Lists

If you'd like to be kept up to date with libslack releases or have questions or suggestions, you can join one or more of the following mailing lists (@libslack.org).

  slack-announce (Announcements)
slack-users (User forum)
slack-dev (Development forum)

To subscribe to any of these mailing lists, send a mail message to listname-request@libslack.org with subscribe as the message body.

 
$ echo subscribe | mail slack-announce-request@libslack.org
$ echo subscribe | mail slack-users-request@libslack.org
$ echo subscribe | mail slack-dev-request@libslack.org

Or you can send a mail message to majordomo@libslack.org with subscribe listname in the message body. This way, you can include multiple subscribe commands to subscribe to multiple lists at the same time.

 
$ mail majordomo@libslack.org
subscribe slack-announce
subscribe slack-users
subscribe slack-dev
.

A digest version of each mailing list is also available. Subscribe to digests as above but append -digest to the listname.

 
$ echo subscribe | mail slack-announce-digest-request@libslack.org
$ echo subscribe | mail slack-users-digest-request@libslack.org
$ echo subscribe | mail slack-dev-digest-request@libslack.org

Or

 
$ mail majordomo@libslack.org
subscribe slack-announce-digest
subscribe slack-users-digest
subscribe slack-dev-digest
.

Note that these are all extremely low volume mailing lists so there's not much use for the digest lists.


What is libslack? | Features | Supported Platforms | Documentation | Download | Mailing Lists

Last modified by raf at Thu Jul 15 10:17:20 EST 2010
v