diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/condition.c | 10 | ||||
-rw-r--r-- | src/core/condition.h | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/core/condition.c b/src/core/condition.c index e5cda21c37..32a37ccad6 100644 --- a/src/core/condition.c +++ b/src/core/condition.c @@ -261,6 +261,15 @@ bool condition_test(Condition *c) { return !(k == -ENOENT || k > 0) == !c->negate; } + case CONDITION_FILE_NOT_EMPTY: { + struct stat st; + + if (stat(c->parameter, &st) < 0) + return c->negate; + + return (S_ISREG(st.st_mode) && st.st_size > 0) == !c->negate; + } + case CONDITION_FILE_IS_EXECUTABLE: { struct stat st; @@ -350,6 +359,7 @@ static const char* const condition_type_table[_CONDITION_TYPE_MAX] = { [CONDITION_PATH_IS_MOUNT_POINT] = "ConditionPathIsMountPoint", [CONDITION_PATH_IS_READ_WRITE] = "ConditionPathIsReadWrite", [CONDITION_DIRECTORY_NOT_EMPTY] = "ConditionDirectoryNotEmpty", + [CONDITION_FILE_NOT_EMPTY] = "ConditionFileNotEmpty", [CONDITION_KERNEL_COMMAND_LINE] = "ConditionKernelCommandLine", [CONDITION_VIRTUALIZATION] = "ConditionVirtualization", [CONDITION_SECURITY] = "ConditionSecurity", diff --git a/src/core/condition.h b/src/core/condition.h index 55b331edd7..03954e40b3 100644 --- a/src/core/condition.h +++ b/src/core/condition.h @@ -33,6 +33,7 @@ typedef enum ConditionType { CONDITION_PATH_IS_MOUNT_POINT, CONDITION_PATH_IS_READ_WRITE, CONDITION_DIRECTORY_NOT_EMPTY, + CONDITION_FILE_NOT_EMPTY, CONDITION_FILE_IS_EXECUTABLE, CONDITION_KERNEL_COMMAND_LINE, CONDITION_VIRTUALIZATION, |