X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fcondition.c;h=61812c25705cfec2ca6d6f0675921616b2d13790;hb=1f7f38f6d49eb60e412e1dc79dda3c1766970aa0;hp=1d6cf12ad4b71c46086d5791cd45d5bebd4d4de0;hpb=267632f0ab26bbcec6bc93682cf43d0f983c41d8;p=elogind.git diff --git a/src/condition.c b/src/condition.c index 1d6cf12ad..61812c257 100644 --- a/src/condition.c +++ b/src/condition.c @@ -67,6 +67,9 @@ static bool test_kernel_command_line(const char *parameter) { assert(parameter); + if (detect_virtualization(NULL) > 0) + return false; + if ((r = read_one_line_file("/proc/cmdline", &line)) < 0) { log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r)); return false; @@ -131,6 +134,14 @@ bool condition_test(Condition *c) { case CONDITION_PATH_EXISTS: return (access(c->parameter, F_OK) >= 0) == !c->negate; + case CONDITION_PATH_IS_DIRECTORY: { + struct stat st; + + if (lstat(c->parameter, &st) < 0) + return !c->negate; + return S_ISDIR(st.st_mode) == !c->negate; + } + case CONDITION_DIRECTORY_NOT_EMPTY: { int k;