|
|
e2f70f3 |
diff --git a/src/api.c b/src/api.c
|
|
|
e623b7c |
index f8c5acd..3f7d831 100644
|
|
|
e2f70f3 |
--- a/src/api.c
|
|
|
e2f70f3 |
+++ b/src/api.c
|
|
|
e623b7c |
@@ -52,6 +52,10 @@ const struct cgroup_library_version library_version = {
|
|
|
e623b7c |
.release = CGROUP_VER_RELEASE,
|
|
|
e623b7c |
};
|
|
Peter Schiffer |
a9d6912 |
|
|
Peter Schiffer |
a9d6912 |
+int cg_chmod_file(FTS *fts, FTSENT *ent, mode_t dir_mode,
|
|
Peter Schiffer |
a9d6912 |
+ int dirm_change, mode_t file_mode, int filem_change,
|
|
Peter Schiffer |
a9d6912 |
+ int owner_is_umask);
|
|
Peter Schiffer |
a9d6912 |
+
|
|
Peter Schiffer |
a9d6912 |
/*
|
|
|
e623b7c |
* The errno which happend the last time (have to be thread specific)
|
|
Peter Schiffer |
a9d6912 |
*/
|
|
|
e623b7c |
@@ -184,6 +188,8 @@ static int cg_chown_recursive(char **path, uid_t owner, gid_t group)
|
|
Peter Schiffer |
a9d6912 |
{
|
|
Peter Schiffer |
a9d6912 |
int ret = 0;
|
|
Peter Schiffer |
a9d6912 |
FTS *fts;
|
|
Peter Schiffer |
a9d6912 |
+ /* mode 664 */
|
|
Peter Schiffer |
a9d6912 |
+ mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH;
|
|
Peter Schiffer |
a9d6912 |
|
|
Peter Schiffer |
a9d6912 |
cgroup_dbg("chown: path is %s\n", *path);
|
|
|
e623b7c |
fts = fts_open(path, FTS_PHYSICAL | FTS_NOCHDIR | FTS_NOSTAT, NULL);
|
|
|
e623b7c |
@@ -201,6 +207,7 @@ static int cg_chown_recursive(char **path, uid_t owner, gid_t group)
|
|
|
e623b7c |
cgroup_warn("fts_read failed\n");
|
|
Peter Schiffer |
a9d6912 |
break;
|
|
Peter Schiffer |
a9d6912 |
}
|
|
Peter Schiffer |
a9d6912 |
+ cg_chmod_file(fts, ent, mode, 0, mode, 1, 1);
|
|
Peter Schiffer |
a9d6912 |
ret = cg_chown_file(fts, ent, owner, group);
|
|
Peter Schiffer |
a9d6912 |
}
|
|
Peter Schiffer |
a9d6912 |
fts_close(fts);
|