From: Yu Watanabe Date: Thu, 26 Jun 2025 13:49:31 +0000 (+0900) Subject: stat-util: split null_or_empty() into two X-Git-Tag: v258-rc1~233 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9d0fed7b44800ee84d5305084350ee8a7d7de140;p=thirdparty%2Fsystemd.git stat-util: split null_or_empty() into two --- diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c index cbdcf190547..94b4f55c349 100644 --- a/src/basic/stat-util.c +++ b/src/basic/stat-util.c @@ -184,19 +184,19 @@ int dir_is_empty_at(int dir_fd, const char *path, bool ignore_hidden_or_backup) return 1; } -bool null_or_empty(struct stat *st) { +bool stat_may_be_dev_null(struct stat *st) { assert(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 character * device node?" check. */ - if (S_ISCHR(st->st_mode)) - return true; + return S_ISCHR(st->st_mode); +} - return false; +bool stat_is_empty(struct stat *st) { + assert(st); + + return S_ISREG(st->st_mode) && st->st_size <= 0; } int null_or_empty_path_with_root(const char *fn, const char *root) { diff --git a/src/basic/stat-util.h b/src/basic/stat-util.h index 11da6f4ab7a..347d885a19f 100644 --- a/src/basic/stat-util.h +++ b/src/basic/stat-util.h @@ -29,7 +29,11 @@ static inline int dir_is_empty(const char *path, bool ignore_hidden_or_backup) { return dir_is_empty_at(AT_FDCWD, path, ignore_hidden_or_backup); } -bool null_or_empty(struct stat *st) _pure_; +bool stat_may_be_dev_null(struct stat *st) _pure_; +bool stat_is_empty(struct stat *st) _pure_; +static inline bool null_or_empty(struct stat *st) { + return stat_may_be_dev_null(st) || stat_is_empty(st); +} int null_or_empty_path_with_root(const char *fn, const char *root); static inline int null_or_empty_path(const char *fn) {