Move file type checking to separate function

Signed-off-by: Dmitry Kasatkin <d.kasatkin@samsung.com>
This commit is contained in:
Dmitry Kasatkin 2014-01-17 15:07:38 +02:00
parent 51dbb77c4f
commit e4e0cabc21

View File

@ -1102,6 +1102,34 @@ static int sign_ima(const char *file, const char *key)
return 0; return 0;
} }
static int get_file_type(const char *path, const char *search_type)
{
int err, dts = 0, i;
struct stat st;
for (i = 0; search_type[i]; i++) {
switch (search_type[i]) {
case 'f':
dts |= REG_MASK; break;
case 'd':
dts |= DIR_MASK; break;
case 's':
dts |= BLK_MASK | CHR_MASK | LNK_MASK; break;
case 'm':
/* stay within the same filesystem*/
err = lstat(path, &st);
if (err < 0) {
log_err("stat() failed\n");
return err;
}
fs_dev = st.st_dev; /* filesystem to start from */
break;
}
}
return dts;
}
static int cmd_sign_ima(struct command *cmd) static int cmd_sign_ima(struct command *cmd)
{ {
char *key, *file = g_argv[optind++]; char *key, *file = g_argv[optind++];
@ -1144,7 +1172,6 @@ static int cmd_sign_evm(struct command *cmd)
{ {
char *path = g_argv[optind++]; char *path = g_argv[optind++];
int err, dts = REG_MASK; /* only regular files by default */ int err, dts = REG_MASK; /* only regular files by default */
struct stat st;
if (!path) { if (!path) {
log_err("Parameters missing\n"); log_err("Parameters missing\n");
@ -1154,30 +1181,10 @@ static int cmd_sign_evm(struct command *cmd)
if (recursive) { if (recursive) {
if (de_type) { if (de_type) {
int i; dts = get_file_type(path, de_type);
if (dts < 0)
dts = 0; return dts;
for (i = 0; de_type[i]; i++) {
switch (de_type[i]) {
case 'f':
dts |= REG_MASK; break;
case 'd':
dts |= DIR_MASK; break;
case 's':
dts |= BLK_MASK | CHR_MASK | LNK_MASK; break;
case 'm':
/* stay within the same filesystem*/
err = lstat(path, &st);
if (err < 0) {
log_err("stat() failed\n");
return err;
}
fs_dev = st.st_dev; /* filesystem to start from */
break;
}
}
} }
err = find(path, dts, sign_evm_path); err = find(path, dts, sign_evm_path);
} else { } else {
err = sign_evm_path(path); err = sign_evm_path(path);