aboutsummaryrefslogtreecommitdiffstats
path: root/libmount/src/context.c
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2024-05-22 10:52:04 +0200
committerKarel Zak <kzak@redhat.com>2024-05-22 10:52:04 +0200
commitc40235720ee0a742f4d8aca2333e1ccad726269a (patch)
tree618a8b90ddba17d7aa7608c860c560b4d3d66e99 /libmount/src/context.c
parent6b871f465b436a792623bb9492ada9d51e22b4ba (diff)
downloadutil-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.c31
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);
}
/**