exit-status.c revision ff01d048b4c1455241c894cf7982662c9d28fd34
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu This file is part of systemd.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu Copyright 2010 Lennart Poettering
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance systemd is free software; you can redistribute it and/or modify it
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu under the terms of the GNU General Public License as published by
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu the Free Software Foundation; either version 2 of the License, or
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu (at your option) any later version.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu systemd is distributed in the hope that it will be useful, but
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu WITHOUT ANY WARRANTY; without even the implied warranty of
19e01e1a7e319063434bd86c8ecbc5f241ef9993Felix Gabriel Mance MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu General Public License for more details.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu You should have received a copy of the GNU General Public License
a604cbad8e2202147b5c6bb9f2e06ae61162d654Felix Gabriel Mance along with systemd; If not, see <http://www.gnu.org/licenses/>.
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiuconst char* exit_status_to_string(ExitStatus status, ExitStatusLevel level) {
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu /* We cast to int here, so that -Wenum doesn't complain that
e0f1794e365dd347e97b37d7d22b2fce27296fa1Christian Maeder * EXIT_SUCCESS/EXIT_FAILURE aren't in the enum */
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu switch ((int) status) {
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder return "SUCCESS";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "FAILURE";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu if (level == EXIT_STATUS_SYSTEMD || level == EXIT_STATUS_LSB) {
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu switch ((int) status) {
1a38107941725211e7c3f051f7a8f5e12199f03acmaeder return "CHDIR";
b84c87f199dc287d235d7dad6ea344f6912ef531Christian Maeder return "FDS";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "MEMORY";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "LIMITS";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "OOM_ADJUST";
d0f58d27c2536eba454d8f77de8617bc6a2c99cdFelix Gabriel Mance return "SIGNAL_MASK";
431571057e88a650a974adec93ea4bb5173b6213Felix Gabriel Mance return "STDIN";
424860079d47bf490fa98d5d7498096a0447c569mcodescu return "STDOUT";
0dd6e7830de0887c9a12356447975a826b3b3db2Christian Maeder return "CHROOT";
424860079d47bf490fa98d5d7498096a0447c569mcodescu return "IOPRIO";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "TIMERSLACK";
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Mance return "SECUREBITS";
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Mance return "SETSCHEDULER";
7852de3551fc797566ee71165bafe05b6d81728cnotanartist return "CPUAFFINITY";
424860079d47bf490fa98d5d7498096a0447c569mcodescu return "GROUP";
424860079d47bf490fa98d5d7498096a0447c569mcodescu return "USER";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "CAPABILITIES";
60f30f0eeeacdfc1e0dfe39664373ddf5a0675adFelix Gabriel Mance return "CGROUP";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "SETSID";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "CONFIRM";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "STDERR";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "TCPWRAP";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "NETWORK";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu switch ((int) status) {
d3cb3401882f6956de016f8eecbec1cd3b868acbFelix Gabriel Mance return "INVALIDARGUMENT";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "NOTIMPLEMENTED";
7852de3551fc797566ee71165bafe05b6d81728cnotanartist return "NOPERMISSION";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "NOTINSSTALLED";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "NOTCONFIGURED";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiu return "NOTRUNNING";
ee93ea764a2b8189253e912c8447f9419033f6d4Francisc Nicolae Bungiubool is_clean_exit(int code, int status) {
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski /* If a daemon does not implement handlers for some of the
80875f917d741946a39d0ec0b5721e46ba609823Till Mossakowski * signals that's not considered an unclean shutdown */
cf0439f74f1d55a9840d38a88f9b0f4fc00d5547Christian Maeder return false;