libreboot-utils: unified error handling

i now use a singleton hook function per program:
nvmutil, mkhtemp and lottery

call this at the startup of your program:

(void) errhook(exit_cleanup);

then provide that function. make it static,
so that each program has its own version.

if you're writing a program that handles lots
of files for example, and you want to do certain
cleanup on exit (including error exit), this can
be quite useful.

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-03-28 06:53:37 +00:00
parent 55f0e6ac8e
commit 0f1a22174f
14 changed files with 182 additions and 186 deletions
+4 -4
View File
@@ -73,16 +73,16 @@ void
xopen(int *fd_ptr, const char *path, int flags, struct stat *st)
{
if ((*fd_ptr = open(path, flags)) < 0)
err_no_cleanup(0, errno, "%s", path);
err_exit(errno, "%s", path);
if (fstat(*fd_ptr, st) < 0)
err_no_cleanup(0, errno, "%s: stat", path);
err_exit(errno, "%s: stat", path);
if (!S_ISREG(st->st_mode))
err_no_cleanup(0, errno, "%s: not a regular file", path);
err_exit(errno, "%s: not a regular file", path);
if (lseek_on_eintr(*fd_ptr, 0, SEEK_CUR, 1, 1) == (off_t)-1)
err_no_cleanup(0, errno, "%s: file not seekable", path);
err_exit(errno, "%s: file not seekable", path);
}
int