mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-01-10 01:17:44 +03:00
condition: add ConditionFileNotEmpty=
https://bugs.freedesktop.org/show_bug.cgi?id=54448
This commit is contained in:
parent
b5b46d5995
commit
742a862bb8
@ -755,6 +755,7 @@
|
||||
<term><varname>ConditionPathIsMountPoint=</varname></term>
|
||||
<term><varname>ConditionPathIsReadWrite=</varname></term>
|
||||
<term><varname>ConditionDirectoryNotEmpty=</varname></term>
|
||||
<term><varname>ConditionFileNotEmpty=</varname></term>
|
||||
<term><varname>ConditionFileIsExecutable=</varname></term>
|
||||
<term><varname>ConditionKernelCommandLine=</varname></term>
|
||||
<term><varname>ConditionVirtualization=</varname></term>
|
||||
@ -825,13 +826,6 @@
|
||||
(i.e. not mounted
|
||||
read-only).</para>
|
||||
|
||||
<para><varname>ConditionFileIsExecutable=</varname>
|
||||
is similar to
|
||||
<varname>ConditionPathExists=</varname>
|
||||
but verifies whether a certain path
|
||||
exists, is a regular file and marked
|
||||
executable.</para>
|
||||
|
||||
<para><varname>ConditionDirectoryNotEmpty=</varname>
|
||||
is similar to
|
||||
<varname>ConditionPathExists=</varname>
|
||||
@ -839,7 +833,21 @@
|
||||
exists and is a non-empty
|
||||
directory.</para>
|
||||
|
||||
<para>Similarly,
|
||||
<para><varname>ConditionFileNotEmpty=</varname>
|
||||
is similar to
|
||||
<varname>ConditionPathExists=</varname>
|
||||
but verifies whether a certain path
|
||||
exists and refers to a regular file
|
||||
with a non-zero size.</para>
|
||||
|
||||
<para><varname>ConditionFileIsExecutable=</varname>
|
||||
is similar to
|
||||
<varname>ConditionPathExists=</varname>
|
||||
but verifies whether a certain path
|
||||
exists, is a regular file and marked
|
||||
executable.</para>
|
||||
|
||||
<para>Similar,
|
||||
<varname>ConditionKernelCommandLine=</varname>
|
||||
may be used to check whether a
|
||||
specific kernel command line option is
|
||||
|
@ -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",
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user