]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/shared/condition.h
Merge pull request #2076 from keszybz/downgrade-masked-unit-message
[thirdparty/systemd.git] / src / shared / condition.h
CommitLineData
b77c08e0
TG
1/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
2
3#pragma once
4
5/***
6 This file is part of systemd.
7
8 Copyright 2010 Lennart Poettering
9
10 systemd is free software; you can redistribute it and/or modify it
11 under the terms of the GNU Lesser General Public License as published by
12 the Free Software Foundation; either version 2.1 of the License, or
13 (at your option) any later version.
14
15 systemd is distributed in the hope that it will be useful, but
16 WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 Lesser General Public License for more details.
19
20 You should have received a copy of the GNU Lesser General Public License
21 along with systemd; If not, see <http://www.gnu.org/licenses/>.
22***/
23
24#include <stdbool.h>
25#include <stdio.h>
26
27#include "list.h"
28#include "macro.h"
29
30typedef enum ConditionType {
651c3318
LP
31 CONDITION_ARCHITECTURE,
32 CONDITION_VIRTUALIZATION,
33 CONDITION_HOST,
34 CONDITION_KERNEL_COMMAND_LINE,
35 CONDITION_SECURITY,
36 CONDITION_CAPABILITY,
37 CONDITION_AC_POWER,
38
39 CONDITION_NEEDS_UPDATE,
40 CONDITION_FIRST_BOOT,
59fccdc5 41
b77c08e0
TG
42 CONDITION_PATH_EXISTS,
43 CONDITION_PATH_EXISTS_GLOB,
44 CONDITION_PATH_IS_DIRECTORY,
45 CONDITION_PATH_IS_SYMBOLIC_LINK,
46 CONDITION_PATH_IS_MOUNT_POINT,
47 CONDITION_PATH_IS_READ_WRITE,
48 CONDITION_DIRECTORY_NOT_EMPTY,
49 CONDITION_FILE_NOT_EMPTY,
50 CONDITION_FILE_IS_EXECUTABLE,
59fccdc5 51
651c3318 52 CONDITION_NULL,
59fccdc5 53
b77c08e0
TG
54 _CONDITION_TYPE_MAX,
55 _CONDITION_TYPE_INVALID = -1
56} ConditionType;
57
cc50ef13
LP
58typedef enum ConditionResult {
59 CONDITION_UNTESTED,
60 CONDITION_SUCCEEDED,
61 CONDITION_FAILED,
62 CONDITION_ERROR,
63 _CONDITION_RESULT_MAX,
64 _CONDITION_RESULT_INVALID = -1
65} ConditionResult;
592fd144 66
b77c08e0 67typedef struct Condition {
59fccdc5 68 ConditionType type:8;
b77c08e0
TG
69
70 bool trigger:1;
71 bool negate:1;
72
59fccdc5
LP
73 ConditionResult result:6;
74
b77c08e0 75 char *parameter;
b77c08e0
TG
76
77 LIST_FIELDS(struct Condition, conditions);
78} Condition;
79
80Condition* condition_new(ConditionType type, const char *parameter, bool trigger, bool negate);
81void condition_free(Condition *c);
447021aa 82Condition* condition_free_list(Condition *c);
b77c08e0 83
d1bddcec
LP
84int condition_test(Condition *c);
85
59fccdc5
LP
86void condition_dump(Condition *c, FILE *f, const char *prefix, const char *(*to_string)(ConditionType t));
87void condition_dump_list(Condition *c, FILE *f, const char *prefix, const char *(*to_string)(ConditionType t));
b77c08e0
TG
88
89const char* condition_type_to_string(ConditionType t) _const_;
59fccdc5
LP
90ConditionType condition_type_from_string(const char *s) _pure_;
91
92const char* assert_type_to_string(ConditionType t) _const_;
93ConditionType assert_type_from_string(const char *s) _pure_;
cc50ef13
LP
94
95const char* condition_result_to_string(ConditionResult r) _const_;
96ConditionResult condition_result_from_string(const char *s) _pure_;