_cleanup_free_ char *wants = NULL;
_cleanup_free_ char *conflicts = NULL;
int r;
- struct stat st;
before = strv_join(s->before, " ");
if (!before)
/* We might already have a symlink with the same name from a Provides:,
* or from backup files like /etc/init.d/foo.bak. Real scripts always win,
* so remove an existing link */
- if (lstat(unit, &st) == 0 && S_ISLNK(st.st_mode)) {
+ if (is_symlink(unit)) {
log_warning("Overwriting existing symlink %s with real service", unit);
- unlink(unit);
+ (void) unlink(unit);
}
f = fopen(unit, "wxe");
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;
}
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();