sysv-generator: there's really no need to invoke fstatat() multiple times on the same sysv script
It's sufficient to check once if something is a regular file, hence, let's do that.
This commit is contained in:
@@ -749,12 +749,10 @@ static int enumerate_sysv(LookupPaths lp, Hashmap *all_services) {
|
||||
struct stat st;
|
||||
int r;
|
||||
|
||||
dirent_ensure_type(d, de);
|
||||
if (hidden_file(de->d_name))
|
||||
continue;
|
||||
|
||||
if (!dirent_is_file(de))
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user