]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/basic/exit-status.h
Remove kdbus custom endpoint support
[thirdparty/systemd.git] / src / basic / exit-status.h
CommitLineData
c2f1db8f 1#pragma once
1afbdcb0
LP
2
3/***
4 This file is part of systemd.
5
6 Copyright 2010 Lennart Poettering
7
8 systemd is free software; you can redistribute it and/or modify it
5430f7f2
LP
9 under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 2.1 of the License, or
1afbdcb0
LP
11 (at your option) any later version.
12
13 systemd is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5430f7f2 16 Lesser General Public License for more details.
1afbdcb0 17
5430f7f2 18 You should have received a copy of the GNU Lesser General Public License
1afbdcb0
LP
19 along with systemd; If not, see <http://www.gnu.org/licenses/>.
20***/
21
9a57c629 22#include <stdbool.h>
4d7213b2 23
11c3a366
TA
24#include "hashmap.h"
25#include "macro.h"
93cc7779 26#include "set.h"
4d7213b2 27
1afbdcb0
LP
28typedef enum ExitStatus {
29 /* EXIT_SUCCESS defined by libc */
30 /* EXIT_FAILURE defined by libc */
31 EXIT_INVALIDARGUMENT = 2,
32 EXIT_NOTIMPLEMENTED = 3,
33 EXIT_NOPERMISSION = 4,
34 EXIT_NOTINSTALLED = 5,
35 EXIT_NOTCONFIGURED = 6,
36 EXIT_NOTRUNNING = 7,
37
38 /* The LSB suggests that error codes >= 200 are "reserved". We
39 * use them here under the assumption that they hence are
40 * unused by init scripts.
41 *
5b89f67f 42 * http://refspecs.linuxfoundation.org/LSB_3.2.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html */
1afbdcb0
LP
43
44 EXIT_CHDIR = 200,
45 EXIT_NICE,
46 EXIT_FDS,
47 EXIT_EXEC,
48 EXIT_MEMORY,
49 EXIT_LIMITS,
50 EXIT_OOM_ADJUST,
51 EXIT_SIGNAL_MASK,
52 EXIT_STDIN,
53 EXIT_STDOUT,
54 EXIT_CHROOT, /* 210 */
55 EXIT_IOPRIO,
56 EXIT_TIMERSLACK,
57 EXIT_SECUREBITS,
58 EXIT_SETSCHEDULER,
59 EXIT_CPUAFFINITY,
60 EXIT_GROUP,
61 EXIT_USER,
62 EXIT_CAPABILITIES,
63 EXIT_CGROUP,
64 EXIT_SETSID, /* 220 */
65 EXIT_CONFIRM,
66 EXIT_STDERR,
7f8aa671 67 _EXIT_RESERVED, /* used to be tcpwrap, don't reuse! */
ff01d048 68 EXIT_PAM,
4c2630eb 69 EXIT_NETWORK,
8351ceae
LP
70 EXIT_NAMESPACE,
71 EXIT_NO_NEW_PRIVILEGES,
7b52a628 72 EXIT_SECCOMP,
ac45f971 73 EXIT_SELINUX_CONTEXT,
eef65bf3 74 EXIT_PERSONALITY, /* 230 */
4298d0b5
LP
75 EXIT_APPARMOR_PROFILE,
76 EXIT_ADDRESS_FAMILIES,
3900e5fd 77 EXIT_RUNTIME_DIRECTORY,
a4152e3f 78 EXIT_MAKE_STARTER,
3900e5fd 79 EXIT_CHOWN,
2ca620c4 80 EXIT_SMACK_PROCESS_LABEL,
1afbdcb0
LP
81} ExitStatus;
82
83typedef enum ExitStatusLevel {
84 EXIT_STATUS_MINIMAL,
85 EXIT_STATUS_SYSTEMD,
86 EXIT_STATUS_LSB,
87 EXIT_STATUS_FULL = EXIT_STATUS_LSB
88} ExitStatusLevel;
89
96342de6 90typedef struct ExitStatusSet {
3e2d435b 91 Set *status;
96342de6
LN
92 Set *signal;
93} ExitStatusSet;
94
44a6b1b6 95const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level) _const_;
1afbdcb0 96
96342de6
LN
97bool is_clean_exit(int code, int status, ExitStatusSet *success_status);
98bool is_clean_exit_lsb(int code, int status, ExitStatusSet *success_status);
37520c1b
LP
99
100void exit_status_set_free(ExitStatusSet *x);
55ebf98c 101bool exit_status_set_is_empty(ExitStatusSet *x);
597466f4 102bool exit_status_set_test(ExitStatusSet *x, int code, int status);