X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fsysv-generator%2Fsysv-generator.c;h=09ade0dc3a308c4557f484e03a8cb7f2087f30d7;hp=984beab70ad397ed5760dd4e2cc00d64b3095c9d;hb=a986501b9059b72e8deced262554fbdd1ab9da17;hpb=7dfb0404b3b6882d582a571f61a52b2f56961675;ds=sidebyside diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c index 984beab70..09ade0dc3 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();