Lines Matching refs:dentries
87 struct dentry dentries = { in build_default_directory_structure() local
95 root_inode = make_directory(0, 1, &dentries, 1); in build_default_directory_structure()
97 *dentries.inode = inode; in build_default_directory_structure()
98 inode_set_permissions(inode, dentries.mode, in build_default_directory_structure()
99 dentries.uid, dentries.gid, dentries.mtime); in build_default_directory_structure()
133 struct dentry *dentries; in build_directory_structure() local
160 dentries = calloc(entries, sizeof(struct dentry)); in build_directory_structure()
161 if (dentries == NULL) in build_directory_structure()
165 dentries[i].filename = strdup(namelist[i]->d_name); in build_directory_structure()
166 if (dentries[i].filename == NULL) in build_directory_structure()
169 asprintf(&dentries[i].path, "%s%s", dir_path, namelist[i]->d_name); in build_directory_structure()
170 asprintf(&dentries[i].full_path, "%s%s", full_path, namelist[i]->d_name); in build_directory_structure()
174 ret = lstat(dentries[i].full_path, &stat); in build_directory_structure()
182 dentries[i].size = stat.st_size; in build_directory_structure()
183 dentries[i].mode = stat.st_mode & (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO); in build_directory_structure()
185 dentries[i].mtime = stat.st_mtime; in build_directory_structure()
187 dentries[i].mtime = fixed_time; in build_directory_structure()
196 fs_config_func(dentries[i].path, dir, &uid, &gid, &mode, &capabilities); in build_directory_structure()
197 dentries[i].mode = mode; in build_directory_structure()
198 dentries[i].uid = uid; in build_directory_structure()
199 dentries[i].gid = gid; in build_directory_structure()
200 dentries[i].capabilities = capabilities; in build_directory_structure()
207 if (selabel_lookup(sehnd, &dentries[i].secon, dentries[i].path, stat.st_mode) < 0) { in build_directory_structure()
208 error("cannot lookup security context for %s", dentries[i].path); in build_directory_structure()
211 if (dentries[i].secon && verbose) in build_directory_structure()
212 printf("Labeling %s as %s\n", dentries[i].path, dentries[i].secon); in build_directory_structure()
217 dentries[i].file_type = EXT4_FT_REG_FILE; in build_directory_structure()
219 dentries[i].file_type = EXT4_FT_DIR; in build_directory_structure()
222 dentries[i].file_type = EXT4_FT_CHRDEV; in build_directory_structure()
224 dentries[i].file_type = EXT4_FT_BLKDEV; in build_directory_structure()
226 dentries[i].file_type = EXT4_FT_FIFO; in build_directory_structure()
228 dentries[i].file_type = EXT4_FT_SOCK; in build_directory_structure()
230 dentries[i].file_type = EXT4_FT_SYMLINK; in build_directory_structure()
231 dentries[i].link = calloc(info.block_size, 1); in build_directory_structure()
232 readlink(dentries[i].full_path, dentries[i].link, info.block_size - 1); in build_directory_structure()
234 error("unknown file type on %s", dentries[i].path); in build_directory_structure()
245 memcpy(tmp + 1, dentries, entries * sizeof(struct dentry)); in build_directory_structure()
246 dentries = tmp; in build_directory_structure()
248 dentries[0].filename = strdup("lost+found"); in build_directory_structure()
249 asprintf(&dentries[0].path, "%slost+found", dir_path); in build_directory_structure()
250 dentries[0].full_path = NULL; in build_directory_structure()
251 dentries[0].size = 0; in build_directory_structure()
252 dentries[0].mode = S_IRWXU; in build_directory_structure()
253 dentries[0].file_type = EXT4_FT_DIR; in build_directory_structure()
254 dentries[0].uid = 0; in build_directory_structure()
255 dentries[0].gid = 0; in build_directory_structure()
257 if (selabel_lookup(sehnd, &dentries[0].secon, dentries[0].path, dentries[0].mode) < 0) in build_directory_structure()
258 error("cannot lookup security context for %s", dentries[0].path); in build_directory_structure()
264 inode = make_directory(dir_inode, entries, dentries, dirs); in build_directory_structure()
267 if (dentries[i].file_type == EXT4_FT_REG_FILE) { in build_directory_structure()
268 entry_inode = make_file(dentries[i].full_path, dentries[i].size); in build_directory_structure()
269 } else if (dentries[i].file_type == EXT4_FT_DIR) { in build_directory_structure()
272 if (dentries[i].full_path) { in build_directory_structure()
273 ret = asprintf(&subdir_full_path, "%s/", dentries[i].full_path); in build_directory_structure()
277 ret = asprintf(&subdir_dir_path, "%s/", dentries[i].path); in build_directory_structure()
284 } else if (dentries[i].file_type == EXT4_FT_SYMLINK) { in build_directory_structure()
285 entry_inode = make_link(dentries[i].link); in build_directory_structure()
287 error("unknown file type on %s", dentries[i].path); in build_directory_structure()
290 *dentries[i].inode = entry_inode; in build_directory_structure()
292 ret = inode_set_permissions(entry_inode, dentries[i].mode, in build_directory_structure()
293 dentries[i].uid, dentries[i].gid, in build_directory_structure()
294 dentries[i].mtime); in build_directory_structure()
296 error("failed to set permissions on %s\n", dentries[i].path); in build_directory_structure()
305 ret = inode_set_selinux(entry_inode, dentries[i].secon); in build_directory_structure()
307 error("failed to set SELinux context on %s\n", dentries[i].path); in build_directory_structure()
308 ret = inode_set_capabilities(entry_inode, dentries[i].capabilities); in build_directory_structure()
310 error("failed to set capability on %s\n", dentries[i].path); in build_directory_structure()
312 free(dentries[i].path); in build_directory_structure()
313 free(dentries[i].full_path); in build_directory_structure()
314 free(dentries[i].link); in build_directory_structure()
315 free((void *)dentries[i].filename); in build_directory_structure()
316 free(dentries[i].secon); in build_directory_structure()
319 free(dentries); in build_directory_structure()