diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/sysv-generator/sysv-generator.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c index 984beab70a..09ade0dc3a 100644 --- a/src/sysv-generator/sysv-generator.c +++ b/src/sysv-generator/sysv-generator.c @@ -749,12 +749,10 @@ static int enumerate_sysv(LookupPaths lp, Hashmap *all_services) { struct stat st; int r; - dirent_ensure_type(d, de); - - if (!dirent_is_file(de)) - continue; + if (hidden_file(de->d_name)) + continue; - if (fstatat(dirfd(d), de->d_name, &st, 0) < 0) { + if (fstatat(dirfd(d), de->d_name, &st, AT_SYMLINK_NOFOLLOW) < 0) { log_warning_errno(errno, "stat() failed on %s/%s: %m", *path, de->d_name); continue; } @@ -769,13 +767,13 @@ static int enumerate_sysv(LookupPaths lp, Hashmap *all_services) { if (!name) return log_oom(); + if (hashmap_contains(all_services, name)) + continue; + fpath = strjoin(*path, "/", de->d_name, NULL); if (!fpath) return log_oom(); - if (hashmap_contains(all_services, name)) - continue; - service = new0(SysvStub, 1); if (!service) return log_oom(); |