X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcondition.c;h=76ee0370d22c398ef87bcad6331220ea16c0b8ff;hb=aca4c78676cd503079581fe878e06332ce6bb255;hp=ee0809f76d421a8ec32bb214b483f3b23a6f4c54;hpb=07e833bc1d60e282b062eb205bb13215dc0e8cdf;p=elogind.git diff --git a/src/condition.c b/src/condition.c index ee0809f76..76ee0370d 100644 --- a/src/condition.c +++ b/src/condition.c @@ -34,6 +34,8 @@ Condition* condition_new(ConditionType type, const char *parameter, bool trigger, bool negate) { Condition *c; + assert(type < _CONDITION_TYPE_MAX); + if (!(c = new0(Condition, 1))) return NULL; @@ -134,7 +136,7 @@ static bool test_virtualization(const char *parameter) { static bool test_security(const char *parameter) { #ifdef HAVE_SELINUX - if (!strcasecmp(parameter, "SELinux")) + if (streq(parameter, "selinux")) return is_selinux_enabled() > 0; #endif return false; @@ -148,6 +150,9 @@ bool condition_test(Condition *c) { case CONDITION_PATH_EXISTS: return (access(c->parameter, F_OK) >= 0) == !c->negate; + case CONDITION_PATH_EXISTS_GLOB: + return (glob_exists(c->parameter) > 0) == !c->negate; + case CONDITION_PATH_IS_DIRECTORY: { struct stat st; @@ -231,6 +236,7 @@ void condition_dump_list(Condition *first, FILE *f, const char *prefix) { static const char* const condition_type_table[_CONDITION_TYPE_MAX] = { [CONDITION_PATH_EXISTS] = "ConditionPathExists", + [CONDITION_PATH_EXISTS_GLOB] = "ConditionPathExistsGlob", [CONDITION_PATH_IS_DIRECTORY] = "ConditionPathIsDirectory", [CONDITION_DIRECTORY_NOT_EMPTY] = "ConditionDirectoryNotEmpty", [CONDITION_KERNEL_COMMAND_LINE] = "ConditionKernelCommandLine",