- if (r < 0 && errno != EEXIST) {
- log_error_errno(errno, "Failed to create directory at %s/%s: %m", root, table[i].dir);
- return -errno;
+ if (r < 0 && errno != EEXIST)
+ return log_error_errno(errno, "Failed to create directory at %s/%s: %m", root, table[i].dir);
+
+ if (uid != UID_INVALID || gid != UID_INVALID) {
+ if (fchownat(fd, table[i].dir, uid, gid, AT_SYMLINK_NOFOLLOW) < 0)
+ return log_error_errno(errno, "Failed to chown directory at %s/%s: %m", root, table[i].dir);