Commit Graph

783 Commits (61b42713e624034fa015fc42fe0615197a5d6045)

Author SHA1 Message Date
C. McEnroe 61b42713e6 Move mention of pledge(2) and unveil(2) to README
The manual is the wrong place to document platform support.
2021-01-25 13:58:02 -05:00
C. McEnroe 61bd4079a0 Preserve order of filters when removing
Filters should be kept in order since the first one that matches,
wins. This lets highlights or ignores take priority over each other,
if desired.
2021-01-23 16:15:39 -05:00
C. McEnroe 9adedc660b Fix /unignore command
Yikes, copy-paste fail.
2021-01-23 16:12:25 -05:00
C. McEnroe bc29082f9d Remove use of "%n" to appease de Raadt
Sure, it was completely unnecessary, but I resent being told how
to use snprintf.

https://cvsweb.openbsd.org/src/lib/libc/stdio/vfprintf.c?rev=1.79&content-type=text/x-cvsweb-markup
2021-01-23 12:34:30 -05:00
Klemens Nanni bc3bd95648 Drop filesystem access iff possible
Log files and state save/restore both require read/write access to
the filesystem, both during start and exit.

If neither features are used, catgirl may run with "stdio tty".
2021-01-23 00:48:19 -05:00
Klemens Nanni 837c9efce4 Drop exec capability iff restricted
Nothing must be executed when running /copy, et al.
2021-01-23 00:48:19 -05:00
Klemens Nanni c93c56e4e5 Drop network capability after ircConnect()
catgirl has no reconnect feature and generally must not do
anything but read/write from/to the connected socket which
does not require "inet" or "dns" promises.
2021-01-23 00:48:19 -05:00
Klemens Nanni a19f48d840 Call pledge(2) after unveil(2)
Simplify logic, be more idiomatic and finalize by pledging after
all unveiling is done by omitting the "unveil" promise and thereby
not allowing further calls to it.
2021-01-23 00:48:19 -05:00
C. McEnroe 95bb627ffb Separate kiosk mode from restrict mode
Restrict mode will focus on sandboxing, while kiosk will continue
to restrict IRC access through a public kiosk. Kiosk mode without
restrict mode allows execution of man 1 catgirl with /help, assuming
external sandboxing.

The /list and /part commands are also added to the list of disabled
commands in kiosk mode, since they are pointless without access to
/join.
2021-01-23 00:48:15 -05:00
C. McEnroe 6ee0aea9e5 Simplify windowUpdate loops and factor out windowTop
No idea why I made that more complicated than it had to be looping
backwards.
2021-01-21 11:57:23 -05:00
C. McEnroe 6a6456a0dc Document that M-l shows timestamps 2021-01-21 10:36:29 -05:00
Jeremy O'Brien 1fbc8fe394 Don't lose swapped window when navigating to current buffer 2021-01-19 12:14:43 -05:00
C. McEnroe 965b6987a9 Use Warm heat for manually inserted blank lines
Oops, forgot about these.
2021-01-19 10:50:55 -05:00
Klemens Nanni f944c6455d Add example tmux(1) config
Spawn one catgirl per network and handle reconnects through tmux,
no extra tool required.
2021-01-18 14:44:49 -05:00
C. McEnroe 06683aa4e3 Use Warm heat for blank lines
So they're not hidden by M-+.
2021-01-17 00:35:59 -05:00
C. McEnroe 063f2aaa0c Add -I highlight option and /highlight 2021-01-16 14:15:00 -05:00
C. McEnroe 5a490945ea Rename ignore code to filter 2021-01-16 13:36:39 -05:00
C. McEnroe 6160b3f18c Remove join/part/quit ignore example
These can now be hidden with M-+.
2021-01-16 13:36:39 -05:00
C. McEnroe 1a1fe1fb7a Save and load window visibility thresholds 2021-01-16 13:09:55 -05:00
C. McEnroe 43b1dba720 Restore toggling ignore with M--
So that pressing M-- repeatedly maintains the previous behavior.
2021-01-16 13:05:01 -05:00
C. McEnroe d05872303e Generalize ignore toggling to visibility threshold 2021-01-16 12:58:16 -05:00
C. McEnroe 51c92f94ff Save and load the URL ring in the save file 2021-01-11 18:05:22 -05:00
C. McEnroe 763802cae6 Don't pass nick to urlScan for MOTD and help 2021-01-11 17:59:12 -05:00
C. McEnroe 0f7518226e Check fprintf return values rather than ferror 2021-01-10 22:00:40 -05:00
C. McEnroe df280aa7d6 Sandbox with unveil(2) on OpenBSD in restricted mode
I wrote all this in vi and it was nice.
2021-01-10 19:23:01 -05:00
C. McEnroe c6cd90c2dd Print chain to stdout with -o 2021-01-10 18:00:41 -05:00
C. McEnroe cdff668d8f Allow interspersing flags and config files
Don't wait for getopt_long to move all the arguments to the end. This
allows overriding options set by config files by placing flags after
them on the command line.
2021-01-10 13:49:57 -05:00
C. McEnroe a437761267 Move -o to a separate SYNOPSIS line 2021-01-10 13:20:50 -05:00
C. McEnroe 7b8bd50063 Exit immediately when using -o 2021-01-10 11:47:48 -05:00
C. McEnroe 7bf96ac8e1 Make SYNOPSIS arguments consistent with option names
Can't keep the 4-letter pattern forever :(
2021-01-09 19:15:57 -05:00
C. McEnroe e42b3aa08e Add -o and -t options to trust self-signed certificates 2021-01-09 19:11:57 -05:00
C. McEnroe a324795b86 Allow configuring the upper bound of the hash function
This allows limiting the nick colors used to the 16-color terminal set
without modifying the TERM environment variable. Produces different
results from just using the default configuration in a 16-color
terminal, but what can you do?
2021-01-09 17:58:29 -05:00
C. McEnroe bf70fcbfed Count width of 2 for invalid multibyte with high bit 2021-01-09 17:28:42 -05:00
C. McEnroe 8d57d700a5 Use execl rather than execlp for shell
SHELL is an absolute path.
2021-01-07 13:28:54 -05:00
C. McEnroe 9ea029c580 Sandbox with pledge(2) on OpenBSD 2021-01-06 21:47:56 -05:00
C. McEnroe 3b54425ec1 Collapse whitespace while wrapping and discard trailing space
The latter avoids an extra blank line when a message ends with
whitespace that hits the edge of the window.
2021-01-04 14:28:37 -05:00
C. McEnroe 4b883177dc Split ignore fields to avoid over-eager * matching
Split ignore fields and match each separately to avoid an early *
eagerly matching across several fields. For example, "* JOIN * *" should
not match messages which happen to contain the word "JOIN" followed by
two other words.

Ignore capacity is reduced to 64 to keep the size of the array the same.
I don't think it's an issue.
2021-01-01 20:09:10 -05:00
C. McEnroe 519fcc436f Factor out reply count checking and decrementing 2020-12-30 16:54:03 -05:00
C. McEnroe 8b6a476c35 Add /whowas 2020-12-30 14:29:32 -05:00
C. McEnroe 05fbcb41c9 Show setnames like nick changes 2020-12-30 00:19:52 -05:00
C. McEnroe 1662b01a5f Add /setname command
I'm not sure about that replies check in handleStandardReply. If more of
those are added the reply counter system will definitely need
refactoring.
2020-12-29 23:54:30 -05:00
C. McEnroe b4ed58602b Handle so-called Standard Replies 2020-12-29 23:11:57 -05:00
C. McEnroe df577c9cd4 Alphabetize STANDARDS section 2020-12-29 22:58:40 -05:00
C. McEnroe 3bb5a3462b Document commands which can be filtered 2020-12-08 18:55:54 -05:00
C. McEnroe 65004e8b63 Clarify the optional portions of an ignore
Each optional portion requires the optional portions before it,
including a full hostmask.
2020-12-08 17:53:05 -05:00
C. McEnroe f91a898e13 Fix manual page lints 2020-12-08 17:45:42 -05:00
C. McEnroe 9a81456f0a Clarify configuration file usage example
Point to EXAMPLES and /help from the top of the manual.
2020-12-08 17:19:08 -05:00
C. McEnroe 997c932e83 Handle 437 ERR_UNAVAILRESOURCE like ERR_NICKNAMEINUSE
Not totally clear under what conditions 437 is returned, but if it
happens during registration, we should pick a new nick.
2020-12-05 23:06:45 -05:00
C. McEnroe d6b4aed4df Split /exec lines by \r as well as \n
This fixes local rendering of /exec toilet --irc, which outputs \r\n
line endings.
2020-11-24 19:15:57 -05:00
C. McEnroe e4aa21d788 Add topic diffing to notable features 2020-11-11 13:27:22 -05:00