summary refs log tree commit diff
path: root/www/text.causal.agency/006-some-libs.7
blob: 5af65404b2c722f13284962870604a239ec1bdf7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
.Dd December 11, 2019
.Dt SOME-LIBS 7
.Os "Causal Agency"
.
.Sh NAME
.Nm Some Libraries
.Nd good ones
.
.Sh DESCRIPTION
This is a little list of C libraries
I've had good experiences using.
.
.Bl -tag -width Ds
.It Fl lcurl
The library behind the
.Xr curl 1
command.
It downloads or uploads things on the internet
through a number of protocols,
not just HTTP.
It has an easy-to-use library API,
appropriately named
.Xr libcurl-easy 3 .
I've used it to implement a
.Lk https://causal.agency/bin/title.html "page title fetcher" .
.
.It Fl lcurses
Okay so this one really isn't great.
Its interfaces can seem archaic
and its documentation is often poor.
However, it gets the job done
and is commonly available pretty much everywhere.
Interesting to note that
.Nx
uses its own implementation of curses
that is not GNU ncurses,
unlike
.Fx .
.
.It Fl ledit
This is a BSD line editing library,
similar to GNU readline.
It supports right-aligned prompts,
which I prefer for variable-length
information in shells.
.
.It Fl lkcgi
A CGI and FastCGI library
for web applications in C.
Don't worry,
it isolates HTTP parsing and input validation
from application logic
in sandboxed processes.
I think it's an excellent example
of how to design an API for C.
I used it to implement the
.Lk https://ascii.town/explore.html "torus web viewer" .
.
.It Fl lsqlite3
An embedded relational database engine.
It's amazing what you can do with this,
and it's super easy to use!
My one gripe with it is that the library and SQL documentation
are not available as
.Xr man 1
pages.
I'm currently working on a project using SQLite,
but it hasn't gotten very far yet.
.
.It Fl ltls
This is a new library in LibreSSL
which provides a much simpler interface for TLS sockets
compared to
.Fl lssl .
It's much more like what you'd expect
from other TLS socket wrappers,
with calls like
.Xr tls_connect 3 ,
.Xr tls_read 3
and
.Xr tls_write 3 .
I've used this for IRC clients, bouncers and bots.
.
.It Fl lz
An implementation of the DEFLATE compression algorithm
and gzip format.
It's all documented in comments in
.In zlib.h ,
which isn't bad,
but for my own use I copied the docs into
.Lk https://code.causal.agency/june/zlib-man-pages "manual pages" .
I've used this for decoding and encoding PNG images.
.El
.
.Sh AUTHORS
.An June Bug Aq Mt june@causal.agency
orking harder here. 2021-02-07Fully configure and rebind cwmJune McEnroe This is sort of a mix of trying to emulate macOS somewhat for my muscle memory and just rebinding some of the cwm defaults to use 4- rather than M-. 2021-02-07Add BintiJune McEnroe 2021-02-07Finish configuring xtermJune McEnroe 2021-02-06Enable tapping, reverse scroll, set scaling in wsconsctlJune McEnroe 2021-02-06Set root window to black on purple snowJune McEnroe 2021-02-06Add xmodmap configurationJune McEnroe 2021-02-06Add initial OpenBSD X configurationJune McEnroe cwm still needs a lot more rebinding, and I need to actually look at its other options. xterm definitely still needs some configuration, but I at least managed to get it to use a decent looking font. Very happy that OpenBSD includes Luxi Mono, which is what my usual font, Go Mono, is based on anyway. Still missing is xmodmap and such. 2021-02-06Add xterm output to schemeJune McEnroe