diff options
| author | Karel Zak <kzak@redhat.com> | 2024-05-22 10:52:04 +0200 |
|---|---|---|
| committer | Karel Zak <kzak@redhat.com> | 2024-05-22 10:52:04 +0200 |
| commit | c40235720ee0a742f4d8aca2333e1ccad726269a (patch) | |
| tree | 618a8b90ddba17d7aa7608c860c560b4d3d66e99 /libmount/src/context.c | |
| parent | 6b871f465b436a792623bb9492ada9d51e22b4ba (diff) | |
| download | util-linux-c40235720ee0a742f4d8aca2333e1ccad726269a.tar.gz | |
libmount: add functions to use error buffer
* Add mnt_context_set_errmsg() and mnt_context_append_errmsg() functions.
* Replace custom code with mnt_context_syscall_save_status() function.
* Optionally use syscall name when generating error message.
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libmount/src/context.c')
| -rw-r--r-- | libmount/src/context.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/libmount/src/context.c b/libmount/src/context.c index ef5da32a0d..7cf4ef79ed 100644 --- a/libmount/src/context.c +++ b/libmount/src/context.c @@ -2635,8 +2635,35 @@ void mnt_context_syscall_reset_status(struct libmnt_context *cxt) cxt->syscall_status = 0; cxt->syscall_name = NULL; - free(cxt->syscall_errmsg); - cxt->syscall_errmsg = NULL; + free(cxt->errmsg); + cxt->errmsg = NULL; +} + +int mnt_context_set_errmsg(struct libmnt_context *cxt, const char *msg) +{ + char *p = NULL; + + if (msg) { + p = strdup(msg); + if (!p) + return -ENOMEM; + } + + free(cxt->errmsg); + cxt->errmsg = p; + + return 0; +} + +int mnt_context_append_errmsg(struct libmnt_context *cxt, const char *msg) +{ + if (cxt->errmsg) { + int rc = strappend(&cxt->errmsg, "; "); + if (rc) + return rc; + } + + return strappend(&cxt->errmsg, msg); } /** |
