Replace assert(0) with abort()

This ensures functions reaching the asserts won't return, and avoids
issues with NDEBUG.
build: disable -Wformat-overflow
Remove annotate.yml

git.sr.ht annotations are deprecated
819e0495 — Issam Maghni 2 months ago
Nitpick details about buit-ins

* exec and trap are special built-ins
* Add remaining utilities as comments
* type now recognizes special built-ins
frontend: PATH_MAX includes the terminating null char
parser: consume final newline in expect_here_document

Fixes the last part of [1].

[1]: https://lists.sr.ht/~emersion/mrsh-dev/%3CC10JME71VSUQ.2ZCBK3RDD2XXW%40homura%3E
parser: consume symbol in expect_here_document
parser: parse here-documents after newline separator

Fixes part of [1].

[1]: https://lists.sr.ht/~emersion/mrsh-dev/%3CC10JME71VSUQ.2ZCBK3RDD2XXW%40homura%3E
ast: print here_document in print_io_redirect
parser: fix typo
parser: fix mrsh_parser.here_documents memory leak
Makefile: remove getopt.h from public_includes

Fixes 'make install' failing since getopt.h was made private
in 8312ce143903f0befff5d0d595bf94d7836236ec.
parser/word: add NULL guards to prevent segfault

References: https://github.com/emersion/mrsh/issues/139
Make mrsh_getopt private
ci: automate sr.ht annotations generation
Check error even when mrsh_parse_program returns non-NULL

In the future, I'd like to make mrsh_parse_program return the
partially-parsed program on error to allow interactive shells to provide
syntax highlighting while typing.
Only handle continuation lines when interactive
test: overhaul conformance tests

This introduces comprehensive conformance testing for section 2.2 of the
POSIX shell standard. However, note that mrsh does not currently pass
these new tests. For what it's worth, neither does dash.
parser/word: fix parser not failing on some errors in back-quotes
shell/task/simple_command: return 127 on command not found