diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-14 19:33:32 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-14 19:33:32 +0000 |
commit | 8bb05ac73a5b448b339ce0bc8d396c82c459b47f (patch) | |
tree | 1fdda006866bca20d41cb206767ea5241e36852f /libmount/samples | |
parent | Adding debian version 2.39.3-11. (diff) | |
download | util-linux-8bb05ac73a5b448b339ce0bc8d396c82c459b47f.tar.xz util-linux-8bb05ac73a5b448b339ce0bc8d396c82c459b47f.zip |
Merging upstream version 2.40.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'libmount/samples')
-rw-r--r-- | libmount/samples/Makemodule.am | 11 | ||||
-rw-r--r-- | libmount/samples/overwrite.c | 58 |
2 files changed, 69 insertions, 0 deletions
diff --git a/libmount/samples/Makemodule.am b/libmount/samples/Makemodule.am new file mode 100644 index 0000000..e223ea6 --- /dev/null +++ b/libmount/samples/Makemodule.am @@ -0,0 +1,11 @@ + +check_PROGRAMS += \ + sample-mount-overwrite + +sample_mount_cflags = $(AM_CFLAGS) -I$(ul_libmount_incdir) +sample_mount_ldadd = libmount.la $(LDADD) + + +sample_mount_overwrite_SOURCES = libmount/samples/overwrite.c +sample_mount_overwrite_LDADD = $(sample_mount_ldadd) +sample_mount_overwrite_CFLAGS = $(sample_mount_cflags) diff --git a/libmount/samples/overwrite.c b/libmount/samples/overwrite.c new file mode 100644 index 0000000..ff11b71 --- /dev/null +++ b/libmount/samples/overwrite.c @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2023 Karel Zak <kzak@redhat.com> + * + * This file may be redistributed under the terms of the + * GNU Lesser General Public License. + * + * + * This sample reads the mountpoint entry from /etc/fstab and mounts it to the + * different (on the command line specified) mountpoint. The mount options + * settings are read from fstab. + */ +#include <stdlib.h> + +#include "c.h" + +#include "libmount.h" + + +int main(int argc, char *argv[]) +{ + char *target, *fstab_target; + struct libmnt_table *tab; + struct libmnt_fs *fs; + struct libmnt_context *cxt; + int rc; + + if (argc != 3) + errx(EXIT_FAILURE, "usage: %s <mnt-from-fstab> <target>", + program_invocation_short_name); + + fstab_target = argv[1]; + target = argv[2]; + + printf("Mounting %s from fstab to %s\n", fstab_target, target); + + tab = mnt_new_table_from_file("/etc/fstab"); + if (!tab) + err(EXIT_FAILURE, "failed to parse fstab"); + + fs = mnt_table_find_target(tab, fstab_target, MNT_ITER_FORWARD); + if (!fs) + err(EXIT_FAILURE, "cannot found %s in fstab", argv[1]); + + cxt = mnt_new_context(); + if (!cxt) + err(EXIT_FAILURE, "cannot allocate context"); + + mnt_context_set_fs(cxt, fs); + mnt_context_set_target(cxt, target); + + rc = mnt_context_mount(cxt); + + printf("Done: rc=%d status=%d\n", rc, mnt_context_get_status(cxt)); + + mnt_free_context(cxt); + mnt_unref_table(tab); + return rc == 0 && mnt_context_get_status(cxt) == 1 ? EXIT_SUCCESS : EXIT_FAILURE; +} |