From: Lennart Poettering Date: Fri, 29 May 2020 15:46:40 +0000 (+0200) Subject: stat-util: trivial empty_or_null() tweaks X-Git-Tag: v246-rc1~245 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=29da419305e6cc3c660172e7edcd2f423dc1108b;p=thirdparty%2Fsystemd.git stat-util: trivial empty_or_null() tweaks To small tweaks: /dev/null is definitely a char device. And if we have the path, to a string base comparison first. --- diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c index e4e4d8f0762..904584a9857 100644 --- a/src/basic/stat-util.c +++ b/src/basic/stat-util.c @@ -94,10 +94,10 @@ bool null_or_empty(struct stat *st) { if (S_ISREG(st->st_mode) && st->st_size <= 0) return true; - /* We don't want to hardcode the major/minor of /dev/null, - * hence we do a simpler "is this a device node?" check. */ + /* We don't want to hardcode the major/minor of /dev/null, hence we do a simpler "is this a character + * device node?" check. */ - if (S_ISCHR(st->st_mode) || S_ISBLK(st->st_mode)) + if (S_ISCHR(st->st_mode)) return true; return false; @@ -108,6 +108,10 @@ int null_or_empty_path(const char *fn) { assert(fn); + /* If we have the path, let's do an easy text comparison first. */ + if (path_equal(fn, "/dev/null")) + return true; + if (stat(fn, &st) < 0) return -errno;