From: Franck Bui Date: Tue, 27 Jun 2017 07:52:12 +0000 (+0200) Subject: fstab-util: don't eat up errors in fstab_is_mount_point() X-Git-Tag: v234~79^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b9088048b15cd21242b2308498fa865f864bfe45;p=platform%2Fupstream%2Fsystemd.git 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. --- diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 3578e25..a6cd8af 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 c3106f1..5675b0b 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 679f690..bae8c0a 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);