summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFranck Bui <fbui@suse.com>2017-06-27 09:52:12 +0200
committerFranck Bui <fbui@suse.com>2017-06-27 10:04:20 +0200
commitb9088048b15cd21242b2308498fa865f864bfe45 (patch)
tree87ecb02b4142b1297e6f94c5d92723058e202855 /src
parentd31ae54818c7a02d4bb07aa41e24166d252d6f31 (diff)
downloadsystemd-b9088048b15cd21242b2308498fa865f864bfe45.tar.gz
fstab-util: don't eat up errors in fstab_is_mount_point()
That way the caller can decide what to do with failures, whether to consider them or ignore them.
Diffstat (limited to 'src')
-rw-r--r--src/gpt-auto-generator/gpt-auto-generator.c5
-rw-r--r--src/shared/fstab-util.c13
-rw-r--r--src/shared/fstab-util.h2
3 files changed, 14 insertions, 6 deletions
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
index 3578e2513c..a6cd8af1b7 100644
--- a/src/gpt-auto-generator/gpt-auto-generator.c
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
@@ -435,7 +435,10 @@ static int add_esp(DissectedPartition *p) {
esp = access("/efi/", F_OK) >= 0 ? "/efi" : "/boot";
/* We create an .automount which is not overridden by the .mount from the fstab generator. */
- if (fstab_is_mount_point(esp)) {
+ r = fstab_is_mount_point(esp);
+ if (r < 0)
+ return log_error_errno(r, "Failed to parse fstab: %m");
+ if (r == 0) {
log_debug("%s specified in fstab, ignoring.", esp);
return 0;
}
diff --git a/src/shared/fstab-util.c b/src/shared/fstab-util.c
index c3106f1ae9..5675b0beac 100644
--- a/src/shared/fstab-util.c
+++ b/src/shared/fstab-util.c
@@ -34,18 +34,23 @@
#include "strv.h"
#include "util.h"
-bool fstab_is_mount_point(const char *mount) {
+int fstab_is_mount_point(const char *mount) {
_cleanup_endmntent_ FILE *f = NULL;
struct mntent *m;
f = setmntent("/etc/fstab", "re");
if (!f)
- return false;
+ return errno == ENOENT ? false : -errno;
+
+ for (;;) {
+ errno = 0;
+ m = getmntent(f);
+ if (!m)
+ return errno != 0 ? -errno : false;
- while ((m = getmntent(f)))
if (path_equal(m->mnt_dir, mount))
return true;
-
+ }
return false;
}
diff --git a/src/shared/fstab-util.h b/src/shared/fstab-util.h
index 679f6902f7..bae8c0a894 100644
--- a/src/shared/fstab-util.h
+++ b/src/shared/fstab-util.h
@@ -24,7 +24,7 @@
#include "macro.h"
-bool fstab_is_mount_point(const char *mount);
+int fstab_is_mount_point(const char *mount);
int fstab_filter_options(const char *opts, const char *names, const char **namefound, char **value, char **filtered);