Skip to content

Commit 8597212

Browse files
committed
Fix fs configuration support
Signed-off-by: Jo-Philipp Wich <[email protected]>
1 parent 5ba1807 commit 8597212

File tree

4 files changed

+14
-12
lines changed

4 files changed

+14
-12
lines changed

canned_fs_config.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,13 @@ int load_canned_fs_config(const char* fn) {
7878
return 0;
7979
}
8080

81-
void canned_fs_config(const char* path, int dir,
81+
int canned_fs_config(const char* path, int dir,
8282
unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities) {
8383
Path key;
84-
key.path = path+1; // canned paths lack the leading '/'
84+
key.path = path;
8585
Path* p = (Path*) bsearch(&key, canned_data, canned_used, sizeof(Path), path_compare);
8686
if (p == NULL) {
87-
fprintf(stderr, "failed to find [%s] in canned fs_config\n", path);
88-
exit(1);
87+
return 0;
8988
}
9089
*uid = p->uid;
9190
*gid = p->gid;
@@ -104,4 +103,6 @@ void canned_fs_config(const char* path, int dir,
104103
if (c_mode != *mode) printf("%s mode 0%o 0%o\n", path, *mode, c_mode);
105104
if (c_capabilities != *capabilities) printf("%s capabilities %llx %llx\n", path, *capabilities, c_capabilities);
106105
#endif
106+
107+
return 1;
107108
}

canned_fs_config.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include <inttypes.h>
2121

2222
int load_canned_fs_config(const char* fn);
23-
void canned_fs_config(const char* path, int dir,
24-
unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities);
23+
int canned_fs_config(const char* path, int dir,
24+
unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities);
2525

2626
#endif

ext4_utils.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ u64 parse_num(const char *arg);
150150
void ext4_parse_sb_info(struct ext4_super_block *sb);
151151
u16 ext4_crc16(u16 crc_in, const void *buf, int size);
152152

153-
typedef void (*fs_config_func_t)(const char *path, int dir, unsigned *uid, unsigned *gid,
153+
typedef int (*fs_config_func_t)(const char *path, int dir, unsigned *uid, unsigned *gid,
154154
unsigned *mode, uint64_t *capabilities);
155155

156156
struct selabel_handle;

make_ext4fs.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,12 @@ static u32 build_directory_structure(const char *full_path, const char *dir_path
151151
unsigned int uid = 0;
152152
unsigned int gid = 0;
153153
int dir = S_ISDIR(stat.st_mode);
154-
fs_config_func(dentries[i].path, dir, &uid, &gid, &mode, &capabilities);
155-
dentries[i].mode = mode;
156-
dentries[i].uid = uid;
157-
dentries[i].gid = gid;
158-
dentries[i].capabilities = capabilities;
154+
if (fs_config_func(dentries[i].path, dir, &uid, &gid, &mode, &capabilities)) {
155+
dentries[i].mode = mode;
156+
dentries[i].uid = uid;
157+
dentries[i].gid = gid;
158+
dentries[i].capabilities = capabilities;
159+
}
159160
}
160161

161162
if (S_ISREG(stat.st_mode)) {

0 commit comments

Comments
 (0)