mirror of
https://github.com/systemd/systemd
synced 2025-09-30 09:14:46 +02:00
Compare commits
No commits in common. "01131684ac66e82faae18e40e110089003d7c536" and "8dfc2beb571f0e0ad780d628c743eac68faf5186" have entirely different histories.
01131684ac
...
8dfc2beb57
@ -43,5 +43,3 @@ jobs:
|
||||
- fedora-rawhide-aarch64
|
||||
- fedora-rawhide-i386
|
||||
- fedora-rawhide-x86_64
|
||||
- fedora-eln-aarch64
|
||||
- fedora-eln-x86_64
|
||||
|
@ -279,9 +279,3 @@ systemd-sysext:
|
||||
specify API file systems such as `/proc/` or `/sys/` here, or hierarchies
|
||||
that have them as submounts. In particular, do not specify the root directory
|
||||
`/` here.
|
||||
|
||||
systemd-tmpfiles:
|
||||
|
||||
* `SYSTEMD_TMPFILES_FORCE_SUBVOL` - if unset, v/q/Q lines will create subvolumes only if the
|
||||
OS itself is installed into a subvolume. If set to 1 (or another true value), these lines will always create
|
||||
subvolumes (if the backing filesystem supports them). If set to 0, these lines will always create directories.
|
||||
|
@ -154,22 +154,20 @@
|
||||
|
||||
<xi:include href="standard-options.xml" xpointer="help" />
|
||||
<xi:include href="standard-options.xml" xpointer="version" />
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--no-legend</option></term>
|
||||
|
||||
<listitem><para>Do not print column headers.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<xi:include href="standard-options.xml" xpointer="no-pager" />
|
||||
<xi:include href="standard-options.xml" xpointer="no-legend" />
|
||||
<xi:include href="standard-options.xml" xpointer="json" />
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-1</option></term>
|
||||
|
||||
<listitem><para>Show information of the most recent core dump only, instead of listing all known core
|
||||
dumps. (Equivalent to <option>--reverse -n 1</option></para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>-n</option> <replaceable>INT</replaceable></term>
|
||||
|
||||
<listitem><para>Show at most the specified number of entries. The specified parameter must be an
|
||||
integer greater or equal to 1.</para></listitem>
|
||||
<listitem><para>Show information of a single core dump only, instead of listing
|
||||
all known core dumps.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
|
@ -155,20 +155,6 @@
|
||||
to be used in case the unit names do not match the image name as described in the <command>attach</command>.</para>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>reattach</command> <replaceable>IMAGE</replaceable> [<replaceable>PREFIX…</replaceable>]</term>
|
||||
|
||||
<listitem><para>Detaches an existing portable service image from the host, and immediately attaches it again.
|
||||
This is useful in case the image was replaced. Running units are not stopped during the process. Partial matching,
|
||||
to allow for different versions in the image name, is allowed: only the part before the first <literal>_</literal>
|
||||
character has to match. If the new image doesn't exist, the existing one will not be detached. The parameters
|
||||
follow the same syntax as the <command>attach</command> command.</para></listitem>
|
||||
|
||||
<para>If <option>--now</option> and/or <option>--enable</option> are passed, the portable service(s) are
|
||||
immediately stopped if removed, started and/or enabled if added, or restarted if updated. Prefixes are also
|
||||
accepted, in the same way as described in the <command>attach</command> case.</para>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><command>inspect</command> <replaceable>IMAGE</replaceable> [<replaceable>PREFIX…</replaceable>]</term>
|
||||
|
||||
@ -342,8 +328,7 @@
|
||||
<varlistentry>
|
||||
<term><option>--now</option></term>
|
||||
|
||||
<listitem><para>Immediately start/stop/restart the portable service after attaching/before
|
||||
detaching/after upgrading.</para></listitem>
|
||||
<listitem><para>Immediately start/stop the portable service after attaching/before detaching.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
|
12
po/sv.po
12
po/sv.po
@ -11,7 +11,7 @@ msgstr ""
|
||||
"Project-Id-Version: systemd master\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-01-08 17:48+0100\n"
|
||||
"PO-Revision-Date: 2021-02-10 15:40+0000\n"
|
||||
"PO-Revision-Date: 2021-02-05 20:40+0000\n"
|
||||
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
|
||||
"Language-Team: Swedish <https://translate.fedoraproject.org/projects/systemd/"
|
||||
"master/sv/>\n"
|
||||
@ -532,7 +532,7 @@ msgstr "Autentisering krävs för att ställa in ”orsaken” för omstart i k
|
||||
#: src/login/org.freedesktop.login1.policy:363
|
||||
msgid "Indicate to the firmware to boot to setup interface"
|
||||
msgstr ""
|
||||
"Indikera till den fasta programvaran att starta upp till "
|
||||
"Indikera till den fasta programvaran att starta upp i "
|
||||
"inställningsgränssnittet"
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:364
|
||||
@ -540,12 +540,12 @@ msgid ""
|
||||
"Authentication is required to indicate to the firmware to boot to setup "
|
||||
"interface."
|
||||
msgstr ""
|
||||
"Autentisering krävs för att indikera till den fasta programvaran att starta "
|
||||
"upp till inställningsgränssnitt."
|
||||
"Autentisering krävs för att indikera till firmware att starta upp till "
|
||||
"inställningsgränssnitt."
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:374
|
||||
msgid "Indicate to the boot loader to boot to the boot loader menu"
|
||||
msgstr "Indikera till startprogrammet att starta upp i uppstartsladdmenyn"
|
||||
msgstr "Indikera till den startprogrammet att starta upp i uppstartsladdmenyn"
|
||||
|
||||
#: src/login/org.freedesktop.login1.policy:375
|
||||
msgid ""
|
||||
@ -899,7 +899,7 @@ msgstr "Autentisering krävs för att stoppa \"$(unit)\"."
|
||||
|
||||
#: src/core/dbus-unit.c:361
|
||||
msgid "Authentication is required to reload '$(unit)'."
|
||||
msgstr "Autentisering krävs för att läsa om \"$(unit)\"."
|
||||
msgstr "Autentisering krävs för att läsa om tillståndet för \"$(unit)\"."
|
||||
|
||||
#: src/core/dbus-unit.c:362 src/core/dbus-unit.c:363
|
||||
msgid "Authentication is required to restart '$(unit)'."
|
||||
|
@ -40,7 +40,7 @@ _coredumpctl() {
|
||||
local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
|
||||
local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1
|
||||
-r --reverse -S --since -U --until -D --directory -q --quiet --debugger
|
||||
-A --debugger-arguments --json -n'
|
||||
-A --debugger-arguments'
|
||||
|
||||
local -A VERBS=(
|
||||
[LIST]='list info'
|
||||
@ -58,8 +58,6 @@ _coredumpctl() {
|
||||
compopt -o filenames
|
||||
elif __contains_word "$prev" '--field -F'; then
|
||||
comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" )
|
||||
elif __contains_word "$prev" '--json'; then
|
||||
comps=$( compgen -W 'pretty short off' -- "$cur" )
|
||||
elif [[ $cur = -* ]]; then
|
||||
comps=${OPTS}
|
||||
elif __contains_word "$prev" ${VERBS[*]} &&
|
||||
|
@ -43,7 +43,7 @@ _loginctl () {
|
||||
[STANDALONE]='--all -a --help -h --no-pager --version
|
||||
--no-legend --no-ask-password -l --full --value'
|
||||
[ARG]='--host -H --kill-who --property -p --signal -s -M --machine
|
||||
-n --lines -o --output -P'
|
||||
-n --lines -o --output'
|
||||
)
|
||||
|
||||
if __contains_word "$prev" ${OPTS[ARG]}; then
|
||||
@ -61,7 +61,7 @@ _loginctl () {
|
||||
--machine|-M)
|
||||
comps=$( __get_machines )
|
||||
;;
|
||||
--property|-p|-P)
|
||||
--property|-p)
|
||||
comps=''
|
||||
;;
|
||||
--output|-o)
|
||||
|
@ -40,7 +40,7 @@ _portablectl() {
|
||||
|
||||
local -A VERBS=(
|
||||
[STANDALONE]='list'
|
||||
[IMAGE]='attach detach reattach inspect is-attached set-limit'
|
||||
[IMAGE]='attach detach inspect is-attached set-limit'
|
||||
[IMAGES]='remove'
|
||||
[IMAGE_WITH_BOOL]='read-only'
|
||||
)
|
||||
|
@ -1574,7 +1574,7 @@ static int dump_exit_status(int argc, char *argv[], void *userdata) {
|
||||
|
||||
status = exit_status_from_string(argv[i]);
|
||||
if (status < 0)
|
||||
return log_error_errno(status, "Invalid exit status \"%s\".", argv[i]);
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Invalid exit status \"%s\".", argv[i]);
|
||||
|
||||
assert(status >= 0 && (size_t) status < ELEMENTSOF(exit_status_mappings));
|
||||
r = table_add_many(table,
|
||||
|
@ -45,7 +45,7 @@ enum {
|
||||
ARCHITECTURE_ARC,
|
||||
ARCHITECTURE_ARC_BE,
|
||||
_ARCHITECTURE_MAX,
|
||||
_ARCHITECTURE_INVALID = -EINVAL,
|
||||
_ARCHITECTURE_INVALID = -1
|
||||
};
|
||||
|
||||
int uname_architecture(void);
|
||||
|
@ -32,7 +32,7 @@ typedef enum CGroupController {
|
||||
CGROUP_CONTROLLER_BPF_DEVICES,
|
||||
|
||||
_CGROUP_CONTROLLER_MAX,
|
||||
_CGROUP_CONTROLLER_INVALID = -EINVAL,
|
||||
_CGROUP_CONTROLLER_INVALID = -1,
|
||||
} CGroupController;
|
||||
|
||||
#define CGROUP_CONTROLLER_TO_MASK(c) (1U << (c))
|
||||
@ -97,7 +97,7 @@ typedef enum CGroupIOLimitType {
|
||||
CGROUP_IO_WIOPS_MAX,
|
||||
|
||||
_CGROUP_IO_LIMIT_TYPE_MAX,
|
||||
_CGROUP_IO_LIMIT_TYPE_INVALID = -EINVAL,
|
||||
_CGROUP_IO_LIMIT_TYPE_INVALID = -1
|
||||
} CGroupIOLimitType;
|
||||
|
||||
extern const uint64_t cgroup_io_limit_defaults[_CGROUP_IO_LIMIT_TYPE_MAX];
|
||||
@ -283,7 +283,7 @@ typedef enum ManagedOOMMode {
|
||||
MANAGED_OOM_AUTO,
|
||||
MANAGED_OOM_KILL,
|
||||
_MANAGED_OOM_MODE_MAX,
|
||||
_MANAGED_OOM_MODE_INVALID = -EINVAL,
|
||||
_MANAGED_OOM_MODE_INVALID = -1,
|
||||
} ManagedOOMMode;
|
||||
|
||||
const char* managed_oom_mode_to_string(ManagedOOMMode m) _const_;
|
||||
|
@ -26,7 +26,7 @@ typedef enum LocaleVariable {
|
||||
VARIABLE_LC_MEASUREMENT,
|
||||
VARIABLE_LC_IDENTIFICATION,
|
||||
_VARIABLE_LC_MAX,
|
||||
_VARIABLE_LC_INVALID = -EINVAL,
|
||||
_VARIABLE_LC_INVALID = -1
|
||||
} LocaleVariable;
|
||||
|
||||
int get_locales(char ***l);
|
||||
|
@ -1085,7 +1085,7 @@ int log_set_target_from_string(const char *e) {
|
||||
|
||||
t = log_target_from_string(e);
|
||||
if (t < 0)
|
||||
return t;
|
||||
return -EINVAL;
|
||||
|
||||
log_set_target(t);
|
||||
return 0;
|
||||
@ -1096,7 +1096,7 @@ int log_set_max_level_from_string(const char *e) {
|
||||
|
||||
t = log_level_from_string(e);
|
||||
if (t < 0)
|
||||
return t;
|
||||
return -EINVAL;
|
||||
|
||||
log_set_max_level(t);
|
||||
return 0;
|
||||
|
@ -23,7 +23,7 @@ typedef enum LogTarget{
|
||||
LOG_TARGET_AUTO, /* console if stderr is not journal, JOURNAL_OR_KMSG otherwise */
|
||||
LOG_TARGET_NULL,
|
||||
_LOG_TARGET_MAX,
|
||||
_LOG_TARGET_INVALID = -EINVAL,
|
||||
_LOG_TARGET_INVALID = -1
|
||||
} LogTarget;
|
||||
|
||||
/* Note to readers: << and >> have lower precedence than & and | */
|
||||
|
@ -24,7 +24,7 @@ typedef enum SmackAttr {
|
||||
SMACK_ATTR_IPIN,
|
||||
SMACK_ATTR_IPOUT,
|
||||
_SMACK_ATTR_MAX,
|
||||
_SMACK_ATTR_INVALID = -EINVAL,
|
||||
_SMACK_ATTR_INVALID = -1,
|
||||
} SmackAttr;
|
||||
|
||||
bool mac_smack_use(void);
|
||||
|
@ -63,7 +63,7 @@ typedef enum SocketAddressBindIPv6Only {
|
||||
SOCKET_ADDRESS_BOTH,
|
||||
SOCKET_ADDRESS_IPV6_ONLY,
|
||||
_SOCKET_ADDRESS_BIND_IPV6_ONLY_MAX,
|
||||
_SOCKET_ADDRESS_BIND_IPV6_ONLY_INVALID = -EINVAL,
|
||||
_SOCKET_ADDRESS_BIND_IPV6_ONLY_INVALID = -1
|
||||
} SocketAddressBindIPv6Only;
|
||||
|
||||
#define socket_address_family(a) ((a)->sockaddr.sa.sa_family)
|
||||
|
@ -5,11 +5,11 @@
|
||||
|
||||
ssize_t string_table_lookup(const char * const *table, size_t len, const char *key) {
|
||||
if (!key)
|
||||
return -EINVAL;
|
||||
return -1;
|
||||
|
||||
for (size_t i = 0; i < len; ++i)
|
||||
if (streq_ptr(table[i], key))
|
||||
return (ssize_t) i;
|
||||
|
||||
return -EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k
|
||||
#define _DEFINE_STRING_TABLE_LOOKUP_FROM_STRING_WITH_BOOLEAN(name,type,yes,scope) \
|
||||
scope type name##_from_string(const char *s) { \
|
||||
if (!s) \
|
||||
return -EINVAL; \
|
||||
return -1; \
|
||||
int b = parse_boolean(s); \
|
||||
if (b == 0) \
|
||||
return (type) 0; \
|
||||
@ -60,16 +60,14 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k
|
||||
unsigned u = 0; \
|
||||
type i; \
|
||||
if (!s) \
|
||||
return -EINVAL; \
|
||||
return (type) -1; \
|
||||
i = (type) string_table_lookup(name##_table, ELEMENTSOF(name##_table), s); \
|
||||
if (i >= 0) \
|
||||
return i; \
|
||||
if (safe_atou(s, &u) < 0) \
|
||||
return -EINVAL; \
|
||||
if (u > max) \
|
||||
return -EINVAL; \
|
||||
return (type) u; \
|
||||
}
|
||||
if (safe_atou(s, &u) >= 0 && u <= max) \
|
||||
return (type) u; \
|
||||
return (type) -1; \
|
||||
} \
|
||||
|
||||
#define _DEFINE_STRING_TABLE_LOOKUP(name,type,scope) \
|
||||
_DEFINE_STRING_TABLE_LOOKUP_TO_STRING(name,type,scope) \
|
||||
|
@ -111,7 +111,7 @@ typedef enum ColorMode {
|
||||
/* Only 256 colors. */
|
||||
COLOR_256 = 256,
|
||||
|
||||
_COLOR_INVALID = -EINVAL,
|
||||
_COLOR_INVALID = -1,
|
||||
} ColorMode;
|
||||
|
||||
int acquire_terminal(const char *name, AcquireTerminalFlags flags, usec_t timeout);
|
||||
|
@ -35,7 +35,7 @@ typedef enum TimestampStyle {
|
||||
TIMESTAMP_UTC,
|
||||
TIMESTAMP_US_UTC,
|
||||
_TIMESTAMP_STYLE_MAX,
|
||||
_TIMESTAMP_STYLE_INVALID = -EINVAL,
|
||||
_TIMESTAMP_STYLE_INVALID = -1,
|
||||
} TimestampStyle;
|
||||
|
||||
#define USEC_INFINITY ((usec_t) UINT64_MAX)
|
||||
|
@ -22,7 +22,7 @@ typedef enum UnitType {
|
||||
UNIT_SLICE,
|
||||
UNIT_SCOPE,
|
||||
_UNIT_TYPE_MAX,
|
||||
_UNIT_TYPE_INVALID = -EINVAL,
|
||||
_UNIT_TYPE_INVALID = -1
|
||||
} UnitType;
|
||||
|
||||
typedef enum UnitLoadState {
|
||||
@ -34,7 +34,7 @@ typedef enum UnitLoadState {
|
||||
UNIT_MERGED,
|
||||
UNIT_MASKED,
|
||||
_UNIT_LOAD_STATE_MAX,
|
||||
_UNIT_LOAD_STATE_INVALID = -EINVAL,
|
||||
_UNIT_LOAD_STATE_INVALID = -1
|
||||
} UnitLoadState;
|
||||
|
||||
typedef enum UnitActiveState {
|
||||
@ -46,7 +46,7 @@ typedef enum UnitActiveState {
|
||||
UNIT_DEACTIVATING,
|
||||
UNIT_MAINTENANCE,
|
||||
_UNIT_ACTIVE_STATE_MAX,
|
||||
_UNIT_ACTIVE_STATE_INVALID = -EINVAL,
|
||||
_UNIT_ACTIVE_STATE_INVALID = -1
|
||||
} UnitActiveState;
|
||||
|
||||
typedef enum FreezerState {
|
||||
@ -55,7 +55,7 @@ typedef enum FreezerState {
|
||||
FREEZER_FROZEN,
|
||||
FREEZER_THAWING,
|
||||
_FREEZER_STATE_MAX,
|
||||
_FREEZER_STATE_INVALID = -EINVAL,
|
||||
_FREEZER_STATE_INVALID = -1
|
||||
} FreezerState;
|
||||
|
||||
typedef enum AutomountState {
|
||||
@ -64,7 +64,7 @@ typedef enum AutomountState {
|
||||
AUTOMOUNT_RUNNING,
|
||||
AUTOMOUNT_FAILED,
|
||||
_AUTOMOUNT_STATE_MAX,
|
||||
_AUTOMOUNT_STATE_INVALID = -EINVAL,
|
||||
_AUTOMOUNT_STATE_INVALID = -1
|
||||
} AutomountState;
|
||||
|
||||
/* We simply watch devices, we cannot plug/unplug them. That
|
||||
@ -74,7 +74,7 @@ typedef enum DeviceState {
|
||||
DEVICE_TENTATIVE, /* mounted or swapped, but not (yet) announced by udev */
|
||||
DEVICE_PLUGGED, /* announced by udev */
|
||||
_DEVICE_STATE_MAX,
|
||||
_DEVICE_STATE_INVALID = -EINVAL,
|
||||
_DEVICE_STATE_INVALID = -1
|
||||
} DeviceState;
|
||||
|
||||
typedef enum MountState {
|
||||
@ -91,7 +91,7 @@ typedef enum MountState {
|
||||
MOUNT_FAILED,
|
||||
MOUNT_CLEANING,
|
||||
_MOUNT_STATE_MAX,
|
||||
_MOUNT_STATE_INVALID = -EINVAL,
|
||||
_MOUNT_STATE_INVALID = -1
|
||||
} MountState;
|
||||
|
||||
typedef enum PathState {
|
||||
@ -100,7 +100,7 @@ typedef enum PathState {
|
||||
PATH_RUNNING,
|
||||
PATH_FAILED,
|
||||
_PATH_STATE_MAX,
|
||||
_PATH_STATE_INVALID = -EINVAL,
|
||||
_PATH_STATE_INVALID = -1
|
||||
} PathState;
|
||||
|
||||
typedef enum ScopeState {
|
||||
@ -111,7 +111,7 @@ typedef enum ScopeState {
|
||||
SCOPE_STOP_SIGKILL,
|
||||
SCOPE_FAILED,
|
||||
_SCOPE_STATE_MAX,
|
||||
_SCOPE_STATE_INVALID = -EINVAL,
|
||||
_SCOPE_STATE_INVALID = -1
|
||||
} ScopeState;
|
||||
|
||||
typedef enum ServiceState {
|
||||
@ -135,14 +135,14 @@ typedef enum ServiceState {
|
||||
SERVICE_AUTO_RESTART,
|
||||
SERVICE_CLEANING,
|
||||
_SERVICE_STATE_MAX,
|
||||
_SERVICE_STATE_INVALID = -EINVAL,
|
||||
_SERVICE_STATE_INVALID = -1
|
||||
} ServiceState;
|
||||
|
||||
typedef enum SliceState {
|
||||
SLICE_DEAD,
|
||||
SLICE_ACTIVE,
|
||||
_SLICE_STATE_MAX,
|
||||
_SLICE_STATE_INVALID = -EINVAL,
|
||||
_SLICE_STATE_INVALID = -1
|
||||
} SliceState;
|
||||
|
||||
typedef enum SocketState {
|
||||
@ -161,7 +161,7 @@ typedef enum SocketState {
|
||||
SOCKET_FAILED,
|
||||
SOCKET_CLEANING,
|
||||
_SOCKET_STATE_MAX,
|
||||
_SOCKET_STATE_INVALID = -EINVAL,
|
||||
_SOCKET_STATE_INVALID = -1
|
||||
} SocketState;
|
||||
|
||||
typedef enum SwapState {
|
||||
@ -175,14 +175,14 @@ typedef enum SwapState {
|
||||
SWAP_FAILED,
|
||||
SWAP_CLEANING,
|
||||
_SWAP_STATE_MAX,
|
||||
_SWAP_STATE_INVALID = -EINVAL,
|
||||
_SWAP_STATE_INVALID = -1
|
||||
} SwapState;
|
||||
|
||||
typedef enum TargetState {
|
||||
TARGET_DEAD,
|
||||
TARGET_ACTIVE,
|
||||
_TARGET_STATE_MAX,
|
||||
_TARGET_STATE_INVALID = -EINVAL,
|
||||
_TARGET_STATE_INVALID = -1
|
||||
} TargetState;
|
||||
|
||||
typedef enum TimerState {
|
||||
@ -192,7 +192,7 @@ typedef enum TimerState {
|
||||
TIMER_ELAPSED,
|
||||
TIMER_FAILED,
|
||||
_TIMER_STATE_MAX,
|
||||
_TIMER_STATE_INVALID = -EINVAL,
|
||||
_TIMER_STATE_INVALID = -1
|
||||
} TimerState;
|
||||
|
||||
typedef enum UnitDependency {
|
||||
@ -237,7 +237,7 @@ typedef enum UnitDependency {
|
||||
UNIT_REFERENCED_BY,
|
||||
|
||||
_UNIT_DEPENDENCY_MAX,
|
||||
_UNIT_DEPENDENCY_INVALID = -EINVAL,
|
||||
_UNIT_DEPENDENCY_INVALID = -1
|
||||
} UnitDependency;
|
||||
|
||||
typedef enum NotifyAccess {
|
||||
@ -246,7 +246,7 @@ typedef enum NotifyAccess {
|
||||
NOTIFY_MAIN,
|
||||
NOTIFY_EXEC,
|
||||
_NOTIFY_ACCESS_MAX,
|
||||
_NOTIFY_ACCESS_INVALID = -EINVAL,
|
||||
_NOTIFY_ACCESS_INVALID = -1
|
||||
} NotifyAccess;
|
||||
|
||||
char *unit_dbus_path_from_name(const char *name);
|
||||
|
@ -26,7 +26,7 @@ enum UnitFileState {
|
||||
UNIT_FILE_TRANSIENT,
|
||||
UNIT_FILE_BAD,
|
||||
_UNIT_FILE_STATE_MAX,
|
||||
_UNIT_FILE_STATE_INVALID = -EINVAL,
|
||||
_UNIT_FILE_STATE_INVALID = -1
|
||||
};
|
||||
|
||||
enum UnitFileScope {
|
||||
@ -34,7 +34,7 @@ enum UnitFileScope {
|
||||
UNIT_FILE_GLOBAL,
|
||||
UNIT_FILE_USER,
|
||||
_UNIT_FILE_SCOPE_MAX,
|
||||
_UNIT_FILE_SCOPE_INVALID = -EINVAL,
|
||||
_UNIT_FILE_SCOPE_INVALID = -1
|
||||
};
|
||||
|
||||
bool unit_type_may_alias(UnitType type) _const_;
|
||||
|
@ -252,7 +252,7 @@ int unit_name_build(const char *prefix, const char *instance, const char *suffix
|
||||
|
||||
type = unit_type_from_string(suffix + 1);
|
||||
if (type < 0)
|
||||
return type;
|
||||
return -EINVAL;
|
||||
|
||||
return unit_name_build_from_type(prefix, instance, type, ret);
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ typedef enum UnitNameFlags {
|
||||
UNIT_NAME_TEMPLATE = 1 << 1, /* Allow foo@.service */
|
||||
UNIT_NAME_INSTANCE = 1 << 2, /* Allow foo@bar.service */
|
||||
UNIT_NAME_ANY = UNIT_NAME_PLAIN|UNIT_NAME_TEMPLATE|UNIT_NAME_INSTANCE,
|
||||
_UNIT_NAME_INVALID = -EINVAL,
|
||||
_UNIT_NAME_INVALID = -1,
|
||||
} UnitNameFlags;
|
||||
|
||||
bool unit_name_is_valid(const char *n, UnitNameFlags flags) _pure_;
|
||||
|
@ -41,7 +41,7 @@ enum {
|
||||
VIRTUALIZATION_CONTAINER_LAST = VIRTUALIZATION_CONTAINER_OTHER,
|
||||
|
||||
_VIRTUALIZATION_MAX,
|
||||
_VIRTUALIZATION_INVALID = -EINVAL,
|
||||
_VIRTUALIZATION_INVALID = -1
|
||||
};
|
||||
|
||||
static inline bool VIRTUALIZATION_IS_VM(int x) {
|
||||
|
@ -2,14 +2,13 @@
|
||||
#pragma once
|
||||
|
||||
#include <efi.h>
|
||||
#include <errno.h>
|
||||
|
||||
typedef enum RandomSeedMode {
|
||||
RANDOM_SEED_OFF,
|
||||
RANDOM_SEED_WITH_SYSTEM_TOKEN,
|
||||
RANDOM_SEED_ALWAYS,
|
||||
_RANDOM_SEED_MODE_MAX,
|
||||
_RANDOM_SEED_MODE_INVALID = -EINVAL,
|
||||
_RANDOM_SEED_MODE_INVALID = -1,
|
||||
} RandomSeedMode;
|
||||
|
||||
EFI_STATUS process_random_seed(EFI_FILE *root_dir, RandomSeedMode mode);
|
||||
|
@ -12,7 +12,7 @@ typedef enum AutomountResult {
|
||||
AUTOMOUNT_FAILURE_START_LIMIT_HIT,
|
||||
AUTOMOUNT_FAILURE_MOUNT_START_LIMIT_HIT,
|
||||
_AUTOMOUNT_RESULT_MAX,
|
||||
_AUTOMOUNT_RESULT_INVALID = -EINVAL,
|
||||
_AUTOMOUNT_RESULT_INVALID = -1
|
||||
} AutomountResult;
|
||||
|
||||
struct Automount {
|
||||
|
@ -44,7 +44,7 @@ typedef enum CGroupDevicePolicy {
|
||||
CGROUP_DEVICE_POLICY_STRICT,
|
||||
|
||||
_CGROUP_DEVICE_POLICY_MAX,
|
||||
_CGROUP_DEVICE_POLICY_INVALID = -EINVAL,
|
||||
_CGROUP_DEVICE_POLICY_INVALID = -1
|
||||
} CGroupDevicePolicy;
|
||||
|
||||
typedef enum FreezerAction {
|
||||
@ -52,7 +52,7 @@ typedef enum FreezerAction {
|
||||
FREEZER_THAW,
|
||||
|
||||
_FREEZER_ACTION_MAX,
|
||||
_FREEZER_ACTION_INVALID = -EINVAL,
|
||||
_FREEZER_ACTION_INVALID = -1,
|
||||
} FreezerAction;
|
||||
|
||||
struct CGroupDeviceAllow {
|
||||
@ -173,7 +173,7 @@ typedef enum CGroupIPAccountingMetric {
|
||||
CGROUP_IP_EGRESS_BYTES,
|
||||
CGROUP_IP_EGRESS_PACKETS,
|
||||
_CGROUP_IP_ACCOUNTING_METRIC_MAX,
|
||||
_CGROUP_IP_ACCOUNTING_METRIC_INVALID = -EINVAL,
|
||||
_CGROUP_IP_ACCOUNTING_METRIC_INVALID = -1,
|
||||
} CGroupIPAccountingMetric;
|
||||
|
||||
/* Used when querying IO accounting data */
|
||||
@ -183,7 +183,7 @@ typedef enum CGroupIOAccountingMetric {
|
||||
CGROUP_IO_READ_OPERATIONS,
|
||||
CGROUP_IO_WRITE_OPERATIONS,
|
||||
_CGROUP_IO_ACCOUNTING_METRIC_MAX,
|
||||
_CGROUP_IO_ACCOUNTING_METRIC_INVALID = -EINVAL,
|
||||
_CGROUP_IO_ACCOUNTING_METRIC_INVALID = -1,
|
||||
} CGroupIOAccountingMetric;
|
||||
|
||||
typedef struct Unit Unit;
|
||||
|
@ -1452,7 +1452,7 @@ int bus_cgroup_set_property(
|
||||
|
||||
p = cgroup_device_policy_from_string(policy);
|
||||
if (p < 0)
|
||||
return p;
|
||||
return -EINVAL;
|
||||
|
||||
if (!UNIT_WRITE_FLAGS_NOOP(flags)) {
|
||||
c->device_policy = p;
|
||||
|
@ -338,7 +338,7 @@ static int bus_timer_set_transient_property(
|
||||
|
||||
b = timer_base_from_string(name);
|
||||
if (b < 0)
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Unknown timer base %s", name);
|
||||
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Unknown timer base");
|
||||
|
||||
r = sd_bus_message_read(message, "t", &usec);
|
||||
if (r < 0)
|
||||
|
@ -1982,7 +1982,7 @@ static int bus_unit_set_transient_property(
|
||||
UnitWriteFlags flags,
|
||||
sd_bus_error *error) {
|
||||
|
||||
UnitDependency d;
|
||||
UnitDependency d = _UNIT_DEPENDENCY_INVALID;
|
||||
int r;
|
||||
|
||||
assert(u);
|
||||
|
@ -1,8 +1,6 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
typedef enum EmergencyAction {
|
||||
EMERGENCY_ACTION_NONE,
|
||||
EMERGENCY_ACTION_REBOOT,
|
||||
@ -15,7 +13,7 @@ typedef enum EmergencyAction {
|
||||
_EMERGENCY_ACTION_FIRST_USER_ACTION = EMERGENCY_ACTION_EXIT,
|
||||
EMERGENCY_ACTION_EXIT_FORCE,
|
||||
_EMERGENCY_ACTION_MAX,
|
||||
_EMERGENCY_ACTION_INVALID = -EINVAL,
|
||||
_EMERGENCY_ACTION_INVALID = -1
|
||||
} EmergencyAction;
|
||||
|
||||
typedef enum EmergencyActionFlags {
|
||||
|
@ -33,7 +33,7 @@ typedef enum ExecUtmpMode {
|
||||
EXEC_UTMP_LOGIN,
|
||||
EXEC_UTMP_USER,
|
||||
_EXEC_UTMP_MODE_MAX,
|
||||
_EXEC_UTMP_MODE_INVALID = -EINVAL,
|
||||
_EXEC_UTMP_MODE_INVALID = -1
|
||||
} ExecUtmpMode;
|
||||
|
||||
typedef enum ExecInput {
|
||||
@ -46,7 +46,7 @@ typedef enum ExecInput {
|
||||
EXEC_INPUT_DATA,
|
||||
EXEC_INPUT_FILE,
|
||||
_EXEC_INPUT_MAX,
|
||||
_EXEC_INPUT_INVALID = -EINVAL,
|
||||
_EXEC_INPUT_INVALID = -1
|
||||
} ExecInput;
|
||||
|
||||
typedef enum ExecOutput {
|
||||
@ -63,7 +63,7 @@ typedef enum ExecOutput {
|
||||
EXEC_OUTPUT_FILE_APPEND,
|
||||
EXEC_OUTPUT_FILE_TRUNCATE,
|
||||
_EXEC_OUTPUT_MAX,
|
||||
_EXEC_OUTPUT_INVALID = -EINVAL,
|
||||
_EXEC_OUTPUT_INVALID = -1
|
||||
} ExecOutput;
|
||||
|
||||
typedef enum ExecPreserveMode {
|
||||
@ -71,7 +71,7 @@ typedef enum ExecPreserveMode {
|
||||
EXEC_PRESERVE_YES,
|
||||
EXEC_PRESERVE_RESTART,
|
||||
_EXEC_PRESERVE_MODE_MAX,
|
||||
_EXEC_PRESERVE_MODE_INVALID = -EINVAL,
|
||||
_EXEC_PRESERVE_MODE_INVALID = -1
|
||||
} ExecPreserveMode;
|
||||
|
||||
typedef enum ExecKeyringMode {
|
||||
@ -79,7 +79,7 @@ typedef enum ExecKeyringMode {
|
||||
EXEC_KEYRING_PRIVATE,
|
||||
EXEC_KEYRING_SHARED,
|
||||
_EXEC_KEYRING_MODE_MAX,
|
||||
_EXEC_KEYRING_MODE_INVALID = -EINVAL,
|
||||
_EXEC_KEYRING_MODE_INVALID = -1,
|
||||
} ExecKeyringMode;
|
||||
|
||||
/* Contains start and exit information about an executed command. */
|
||||
@ -126,7 +126,7 @@ typedef enum ExecDirectoryType {
|
||||
EXEC_DIRECTORY_LOGS,
|
||||
EXEC_DIRECTORY_CONFIGURATION,
|
||||
_EXEC_DIRECTORY_TYPE_MAX,
|
||||
_EXEC_DIRECTORY_TYPE_INVALID = -EINVAL,
|
||||
_EXEC_DIRECTORY_TYPE_INVALID = -1,
|
||||
} ExecDirectoryType;
|
||||
|
||||
typedef struct ExecDirectory {
|
||||
@ -144,7 +144,7 @@ typedef enum ExecCleanMask {
|
||||
EXEC_CLEAN_CONFIGURATION = 1U << EXEC_DIRECTORY_CONFIGURATION,
|
||||
EXEC_CLEAN_NONE = 0,
|
||||
EXEC_CLEAN_ALL = (1U << _EXEC_DIRECTORY_TYPE_MAX) - 1,
|
||||
_EXEC_CLEAN_MASK_INVALID = -EINVAL,
|
||||
_EXEC_CLEAN_MASK_INVALID = -1,
|
||||
} ExecCleanMask;
|
||||
|
||||
/* A credential configured with SetCredential= */
|
||||
|
@ -57,14 +57,14 @@ enum JobType {
|
||||
JOB_RELOAD_OR_START, /* if running, reload, otherwise start */
|
||||
|
||||
_JOB_TYPE_MAX,
|
||||
_JOB_TYPE_INVALID = -EINVAL,
|
||||
_JOB_TYPE_INVALID = -1
|
||||
};
|
||||
|
||||
enum JobState {
|
||||
JOB_WAITING,
|
||||
JOB_RUNNING,
|
||||
_JOB_STATE_MAX,
|
||||
_JOB_STATE_INVALID = -EINVAL,
|
||||
_JOB_STATE_INVALID = -1
|
||||
};
|
||||
|
||||
enum JobMode {
|
||||
@ -77,7 +77,7 @@ enum JobMode {
|
||||
JOB_IGNORE_REQUIREMENTS, /* Ignore requirement dependencies */
|
||||
JOB_TRIGGERING, /* Adds TRIGGERED_BY dependencies to the same transaction */
|
||||
_JOB_MODE_MAX,
|
||||
_JOB_MODE_INVALID = -EINVAL,
|
||||
_JOB_MODE_INVALID = -1
|
||||
};
|
||||
|
||||
enum JobResult {
|
||||
@ -93,7 +93,7 @@ enum JobResult {
|
||||
JOB_COLLECTED, /* Job was garbage collected, since nothing needed it anymore */
|
||||
JOB_ONCE, /* Unit was started before, and hence can't be started again */
|
||||
_JOB_RESULT_MAX,
|
||||
_JOB_RESULT_INVALID = -EINVAL,
|
||||
_JOB_RESULT_INVALID = -1
|
||||
};
|
||||
|
||||
#include "unit.h"
|
||||
|
@ -15,7 +15,7 @@ typedef enum KillMode {
|
||||
KILL_MIXED,
|
||||
KILL_NONE,
|
||||
_KILL_MODE_MAX,
|
||||
_KILL_MODE_INVALID = -EINVAL,
|
||||
_KILL_MODE_INVALID = -1
|
||||
} KillMode;
|
||||
|
||||
struct KillContext {
|
||||
@ -37,7 +37,7 @@ typedef enum KillWho {
|
||||
KILL_CONTROL_FAIL,
|
||||
KILL_ALL_FAIL,
|
||||
_KILL_WHO_MAX,
|
||||
_KILL_WHO_INVALID = -EINVAL,
|
||||
_KILL_WHO_INVALID = -1
|
||||
} KillWho;
|
||||
|
||||
void kill_context_init(KillContext *c);
|
||||
|
@ -510,7 +510,7 @@ static int manager_setup_signals(Manager *m) {
|
||||
SIGCHLD, /* Child died */
|
||||
SIGTERM, /* Reexecute daemon */
|
||||
SIGHUP, /* Reload configuration */
|
||||
SIGUSR1, /* systemd: reconnect to D-Bus */
|
||||
SIGUSR1, /* systemd/upstart: reconnect to D-Bus */
|
||||
SIGUSR2, /* systemd: dump status */
|
||||
SIGINT, /* Kernel sends us this on control-alt-del */
|
||||
SIGWINCH, /* Kernel sends us this on kbrequest (alt-arrowup) */
|
||||
@ -3180,19 +3180,22 @@ static bool manager_timestamp_shall_serialize(ManagerTimestamp t) {
|
||||
#define DESTROY_IPC_FLAG (UINT32_C(1) << 31)
|
||||
|
||||
static void manager_serialize_uid_refs_internal(
|
||||
Manager *m,
|
||||
FILE *f,
|
||||
Hashmap *uid_refs,
|
||||
Hashmap **uid_refs,
|
||||
const char *field_name) {
|
||||
|
||||
void *p, *k;
|
||||
|
||||
assert(m);
|
||||
assert(f);
|
||||
assert(uid_refs);
|
||||
assert(field_name);
|
||||
|
||||
/* Serialize the UID reference table. Or actually, just the IPC destruction flag of it, as
|
||||
* the actual counter of it is better rebuild after a reload/reexec. */
|
||||
|
||||
HASHMAP_FOREACH_KEY(p, k, uid_refs) {
|
||||
HASHMAP_FOREACH_KEY(p, k, *uid_refs) {
|
||||
uint32_t c;
|
||||
uid_t uid;
|
||||
|
||||
@ -3207,11 +3210,11 @@ static void manager_serialize_uid_refs_internal(
|
||||
}
|
||||
|
||||
static void manager_serialize_uid_refs(Manager *m, FILE *f) {
|
||||
manager_serialize_uid_refs_internal(f, m->uid_refs, "destroy-ipc-uid");
|
||||
manager_serialize_uid_refs_internal(m, f, &m->uid_refs, "destroy-ipc-uid");
|
||||
}
|
||||
|
||||
static void manager_serialize_gid_refs(Manager *m, FILE *f) {
|
||||
manager_serialize_uid_refs_internal(f, m->gid_refs, "destroy-ipc-gid");
|
||||
manager_serialize_uid_refs_internal(m, f, &m->gid_refs, "destroy-ipc-gid");
|
||||
}
|
||||
|
||||
int manager_serialize(
|
||||
@ -3471,6 +3474,7 @@ void manager_retry_runtime_watchdog(Manager *m) {
|
||||
}
|
||||
|
||||
static void manager_deserialize_uid_refs_one_internal(
|
||||
Manager *m,
|
||||
Hashmap** uid_refs,
|
||||
const char *value) {
|
||||
|
||||
@ -3478,16 +3482,18 @@ static void manager_deserialize_uid_refs_one_internal(
|
||||
uint32_t c;
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
assert(uid_refs);
|
||||
assert(value);
|
||||
|
||||
r = parse_uid(value, &uid);
|
||||
if (r < 0 || uid == 0) {
|
||||
log_debug("Unable to parse UID/GID reference serialization: " UID_FMT, uid);
|
||||
log_debug("Unable to parse UID reference serialization: " UID_FMT, uid);
|
||||
return;
|
||||
}
|
||||
|
||||
if (hashmap_ensure_allocated(uid_refs, &trivial_hash_ops) < 0) {
|
||||
r = hashmap_ensure_allocated(uid_refs, &trivial_hash_ops);
|
||||
if (r < 0) {
|
||||
log_oom();
|
||||
return;
|
||||
}
|
||||
@ -3500,17 +3506,17 @@ static void manager_deserialize_uid_refs_one_internal(
|
||||
|
||||
r = hashmap_replace(*uid_refs, UID_TO_PTR(uid), UINT32_TO_PTR(c));
|
||||
if (r < 0) {
|
||||
log_debug_errno(r, "Failed to add UID/GID reference entry: %m");
|
||||
log_debug_errno(r, "Failed to add UID reference entry: %m");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void manager_deserialize_uid_refs_one(Manager *m, const char *value) {
|
||||
manager_deserialize_uid_refs_one_internal(&m->uid_refs, value);
|
||||
manager_deserialize_uid_refs_one_internal(m, &m->uid_refs, value);
|
||||
}
|
||||
|
||||
static void manager_deserialize_gid_refs_one(Manager *m, const char *value) {
|
||||
manager_deserialize_uid_refs_one_internal(&m->gid_refs, value);
|
||||
manager_deserialize_uid_refs_one_internal(m, &m->gid_refs, value);
|
||||
}
|
||||
|
||||
int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
|
||||
@ -4584,13 +4590,16 @@ ManagerState manager_state(Manager *m) {
|
||||
}
|
||||
|
||||
static void manager_unref_uid_internal(
|
||||
Hashmap *uid_refs,
|
||||
Manager *m,
|
||||
Hashmap **uid_refs,
|
||||
uid_t uid,
|
||||
bool destroy_now,
|
||||
int (*_clean_ipc)(uid_t uid)) {
|
||||
|
||||
uint32_t c, n;
|
||||
|
||||
assert(m);
|
||||
assert(uid_refs);
|
||||
assert(uid_is_valid(uid));
|
||||
assert(_clean_ipc);
|
||||
|
||||
@ -4608,14 +4617,14 @@ static void manager_unref_uid_internal(
|
||||
if (uid == 0) /* We don't keep track of root, and will never destroy it */
|
||||
return;
|
||||
|
||||
c = PTR_TO_UINT32(hashmap_get(uid_refs, UID_TO_PTR(uid)));
|
||||
c = PTR_TO_UINT32(hashmap_get(*uid_refs, UID_TO_PTR(uid)));
|
||||
|
||||
n = c & ~DESTROY_IPC_FLAG;
|
||||
assert(n > 0);
|
||||
n--;
|
||||
|
||||
if (destroy_now && n == 0) {
|
||||
hashmap_remove(uid_refs, UID_TO_PTR(uid));
|
||||
hashmap_remove(*uid_refs, UID_TO_PTR(uid));
|
||||
|
||||
if (c & DESTROY_IPC_FLAG) {
|
||||
log_debug("%s " UID_FMT " is no longer referenced, cleaning up its IPC.",
|
||||
@ -4625,19 +4634,20 @@ static void manager_unref_uid_internal(
|
||||
}
|
||||
} else {
|
||||
c = n | (c & DESTROY_IPC_FLAG);
|
||||
assert_se(hashmap_update(uid_refs, UID_TO_PTR(uid), UINT32_TO_PTR(c)) >= 0);
|
||||
assert_se(hashmap_update(*uid_refs, UID_TO_PTR(uid), UINT32_TO_PTR(c)) >= 0);
|
||||
}
|
||||
}
|
||||
|
||||
void manager_unref_uid(Manager *m, uid_t uid, bool destroy_now) {
|
||||
manager_unref_uid_internal(m->uid_refs, uid, destroy_now, clean_ipc_by_uid);
|
||||
manager_unref_uid_internal(m, &m->uid_refs, uid, destroy_now, clean_ipc_by_uid);
|
||||
}
|
||||
|
||||
void manager_unref_gid(Manager *m, gid_t gid, bool destroy_now) {
|
||||
manager_unref_uid_internal(m->gid_refs, (uid_t) gid, destroy_now, clean_ipc_by_gid);
|
||||
manager_unref_uid_internal(m, &m->gid_refs, (uid_t) gid, destroy_now, clean_ipc_by_gid);
|
||||
}
|
||||
|
||||
static int manager_ref_uid_internal(
|
||||
Manager *m,
|
||||
Hashmap **uid_refs,
|
||||
uid_t uid,
|
||||
bool clean_ipc) {
|
||||
@ -4645,6 +4655,7 @@ static int manager_ref_uid_internal(
|
||||
uint32_t c, n;
|
||||
int r;
|
||||
|
||||
assert(m);
|
||||
assert(uid_refs);
|
||||
assert(uid_is_valid(uid));
|
||||
|
||||
@ -4675,22 +4686,25 @@ static int manager_ref_uid_internal(
|
||||
}
|
||||
|
||||
int manager_ref_uid(Manager *m, uid_t uid, bool clean_ipc) {
|
||||
return manager_ref_uid_internal(&m->uid_refs, uid, clean_ipc);
|
||||
return manager_ref_uid_internal(m, &m->uid_refs, uid, clean_ipc);
|
||||
}
|
||||
|
||||
int manager_ref_gid(Manager *m, gid_t gid, bool clean_ipc) {
|
||||
return manager_ref_uid_internal(&m->gid_refs, (uid_t) gid, clean_ipc);
|
||||
return manager_ref_uid_internal(m, &m->gid_refs, (uid_t) gid, clean_ipc);
|
||||
}
|
||||
|
||||
static void manager_vacuum_uid_refs_internal(
|
||||
Hashmap *uid_refs,
|
||||
Manager *m,
|
||||
Hashmap **uid_refs,
|
||||
int (*_clean_ipc)(uid_t uid)) {
|
||||
|
||||
void *p, *k;
|
||||
|
||||
assert(m);
|
||||
assert(uid_refs);
|
||||
assert(_clean_ipc);
|
||||
|
||||
HASHMAP_FOREACH_KEY(p, k, uid_refs) {
|
||||
HASHMAP_FOREACH_KEY(p, k, *uid_refs) {
|
||||
uint32_t c, n;
|
||||
uid_t uid;
|
||||
|
||||
@ -4708,16 +4722,16 @@ static void manager_vacuum_uid_refs_internal(
|
||||
(void) _clean_ipc(uid);
|
||||
}
|
||||
|
||||
assert_se(hashmap_remove(uid_refs, k) == p);
|
||||
assert_se(hashmap_remove(*uid_refs, k) == p);
|
||||
}
|
||||
}
|
||||
|
||||
static void manager_vacuum_uid_refs(Manager *m) {
|
||||
manager_vacuum_uid_refs_internal(m->uid_refs, clean_ipc_by_uid);
|
||||
manager_vacuum_uid_refs_internal(m, &m->uid_refs, clean_ipc_by_uid);
|
||||
}
|
||||
|
||||
static void manager_vacuum_gid_refs(Manager *m) {
|
||||
manager_vacuum_uid_refs_internal(m->gid_refs, clean_ipc_by_gid);
|
||||
manager_vacuum_uid_refs_internal(m, &m->gid_refs, clean_ipc_by_gid);
|
||||
}
|
||||
|
||||
static void manager_vacuum(Manager *m) {
|
||||
|
@ -36,7 +36,7 @@ typedef enum ManagerState {
|
||||
MANAGER_MAINTENANCE,
|
||||
MANAGER_STOPPING,
|
||||
_MANAGER_STATE_MAX,
|
||||
_MANAGER_STATE_INVALID = -EINVAL,
|
||||
_MANAGER_STATE_INVALID = -1
|
||||
} ManagerState;
|
||||
|
||||
typedef enum ManagerObjective {
|
||||
@ -50,7 +50,7 @@ typedef enum ManagerObjective {
|
||||
MANAGER_KEXEC,
|
||||
MANAGER_SWITCH_ROOT,
|
||||
_MANAGER_OBJECTIVE_MAX,
|
||||
_MANAGER_OBJECTIVE_INVALID = -EINVAL,
|
||||
_MANAGER_OBJECTIVE_INVALID = -1
|
||||
} ManagerObjective;
|
||||
|
||||
typedef enum StatusType {
|
||||
@ -65,7 +65,7 @@ typedef enum OOMPolicy {
|
||||
OOM_STOP, /* The kernel kills the process it wants to kill, and we stop the unit */
|
||||
OOM_KILL, /* The kernel kills the process it wants to kill, and all others in the unit, and we stop the unit */
|
||||
_OOM_POLICY_MAX,
|
||||
_OOM_POLICY_INVALID = -EINVAL,
|
||||
_OOM_POLICY_INVALID = -1
|
||||
} OOMPolicy;
|
||||
|
||||
/* Notes:
|
||||
@ -111,7 +111,7 @@ typedef enum ManagerTimestamp {
|
||||
MANAGER_TIMESTAMP_INITRD_UNITS_LOAD_START,
|
||||
MANAGER_TIMESTAMP_INITRD_UNITS_LOAD_FINISH,
|
||||
_MANAGER_TIMESTAMP_MAX,
|
||||
_MANAGER_TIMESTAMP_INVALID = -EINVAL,
|
||||
_MANAGER_TIMESTAMP_INVALID = -1,
|
||||
} ManagerTimestamp;
|
||||
|
||||
typedef enum WatchdogType {
|
||||
@ -311,25 +311,25 @@ struct Manager {
|
||||
|
||||
/* The stat() data the last time we saw /etc/localtime */
|
||||
usec_t etc_localtime_mtime;
|
||||
bool etc_localtime_accessible;
|
||||
bool etc_localtime_accessible:1;
|
||||
|
||||
ManagerObjective objective;
|
||||
ManagerObjective objective:5;
|
||||
|
||||
/* Flags */
|
||||
bool dispatching_load_queue;
|
||||
bool dispatching_load_queue:1;
|
||||
|
||||
bool taint_usr;
|
||||
bool taint_usr:1;
|
||||
|
||||
/* Have we already sent out the READY=1 notification? */
|
||||
bool ready_sent;
|
||||
bool ready_sent:1;
|
||||
|
||||
/* Have we already printed the taint line if necessary? */
|
||||
bool taint_logged;
|
||||
bool taint_logged:1;
|
||||
|
||||
/* Have we ever changed the "kernel.pid_max" sysctl? */
|
||||
bool sysctl_pid_max_changed;
|
||||
bool sysctl_pid_max_changed:1;
|
||||
|
||||
ManagerTestRunFlags test_run_flags;
|
||||
ManagerTestRunFlags test_run_flags:8;
|
||||
|
||||
/* If non-zero, exit with the following value when the systemd
|
||||
* process terminate. Useful for containers: systemd-nspawn could get
|
||||
@ -366,8 +366,8 @@ struct Manager {
|
||||
|
||||
int original_log_level;
|
||||
LogTarget original_log_target;
|
||||
bool log_level_overridden;
|
||||
bool log_target_overridden;
|
||||
bool log_level_overridden:1;
|
||||
bool log_target_overridden:1;
|
||||
|
||||
struct rlimit *rlimit[_RLIMIT_MAX];
|
||||
|
||||
@ -537,7 +537,7 @@ void manager_unref_uid(Manager *m, uid_t uid, bool destroy_now);
|
||||
int manager_ref_uid(Manager *m, uid_t uid, bool clean_ipc);
|
||||
|
||||
void manager_unref_gid(Manager *m, gid_t gid, bool destroy_now);
|
||||
int manager_ref_gid(Manager *m, gid_t gid, bool clean_ipc);
|
||||
int manager_ref_gid(Manager *m, gid_t gid, bool destroy_now);
|
||||
|
||||
char *manager_taint_string(Manager *m);
|
||||
|
||||
|
@ -12,7 +12,7 @@ typedef enum MountExecCommand {
|
||||
MOUNT_EXEC_UNMOUNT,
|
||||
MOUNT_EXEC_REMOUNT,
|
||||
_MOUNT_EXEC_COMMAND_MAX,
|
||||
_MOUNT_EXEC_COMMAND_INVALID = -EINVAL,
|
||||
_MOUNT_EXEC_COMMAND_INVALID = -1
|
||||
} MountExecCommand;
|
||||
|
||||
typedef enum MountResult {
|
||||
@ -25,7 +25,7 @@ typedef enum MountResult {
|
||||
MOUNT_FAILURE_START_LIMIT_HIT,
|
||||
MOUNT_FAILURE_PROTOCOL,
|
||||
_MOUNT_RESULT_MAX,
|
||||
_MOUNT_RESULT_INVALID = -EINVAL,
|
||||
_MOUNT_RESULT_INVALID = -1
|
||||
} MountResult;
|
||||
|
||||
typedef struct MountParameters {
|
||||
|
@ -23,7 +23,7 @@ typedef enum ProtectHome {
|
||||
PROTECT_HOME_READ_ONLY,
|
||||
PROTECT_HOME_TMPFS,
|
||||
_PROTECT_HOME_MAX,
|
||||
_PROTECT_HOME_INVALID = -EINVAL,
|
||||
_PROTECT_HOME_INVALID = -1
|
||||
} ProtectHome;
|
||||
|
||||
typedef enum NamespaceType {
|
||||
@ -35,7 +35,7 @@ typedef enum NamespaceType {
|
||||
NAMESPACE_PID,
|
||||
NAMESPACE_NET,
|
||||
_NAMESPACE_TYPE_MAX,
|
||||
_NAMESPACE_TYPE_INVALID = -EINVAL,
|
||||
_NAMESPACE_TYPE_INVALID = -1,
|
||||
} NamespaceType;
|
||||
|
||||
typedef enum ProtectSystem {
|
||||
@ -44,7 +44,7 @@ typedef enum ProtectSystem {
|
||||
PROTECT_SYSTEM_FULL,
|
||||
PROTECT_SYSTEM_STRICT,
|
||||
_PROTECT_SYSTEM_MAX,
|
||||
_PROTECT_SYSTEM_INVALID = -EINVAL,
|
||||
_PROTECT_SYSTEM_INVALID = -1
|
||||
} ProtectSystem;
|
||||
|
||||
typedef enum ProtectProc {
|
||||
@ -53,14 +53,14 @@ typedef enum ProtectProc {
|
||||
PROTECT_PROC_INVISIBLE, /* hidepid=invisible */
|
||||
PROTECT_PROC_PTRACEABLE, /* hidepid=ptraceable */
|
||||
_PROTECT_PROC_MAX,
|
||||
_PROTECT_PROC_INVALID = -EINVAL,
|
||||
_PROTECT_PROC_INVALID = -1,
|
||||
} ProtectProc;
|
||||
|
||||
typedef enum ProcSubset {
|
||||
PROC_SUBSET_ALL,
|
||||
PROC_SUBSET_PID, /* subset=pid */
|
||||
_PROC_SUBSET_MAX,
|
||||
_PROC_SUBSET_INVALID = -EINVAL,
|
||||
_PROC_SUBSET_INVALID = -1,
|
||||
} ProcSubset;
|
||||
|
||||
struct NamespaceInfo {
|
||||
|
@ -13,7 +13,7 @@ typedef enum PathType {
|
||||
PATH_CHANGED,
|
||||
PATH_MODIFIED,
|
||||
_PATH_TYPE_MAX,
|
||||
_PATH_TYPE_INVALID = -EINVAL,
|
||||
_PATH_TYPE_INVALID = -1
|
||||
} PathType;
|
||||
|
||||
typedef struct PathSpec {
|
||||
@ -47,7 +47,7 @@ typedef enum PathResult {
|
||||
PATH_FAILURE_START_LIMIT_HIT,
|
||||
PATH_FAILURE_UNIT_START_LIMIT_HIT,
|
||||
_PATH_RESULT_MAX,
|
||||
_PATH_RESULT_INVALID = -EINVAL,
|
||||
_PATH_RESULT_INVALID = -1
|
||||
} PathResult;
|
||||
|
||||
struct Path {
|
||||
|
@ -12,7 +12,7 @@ typedef enum ScopeResult {
|
||||
SCOPE_FAILURE_RESOURCES,
|
||||
SCOPE_FAILURE_TIMEOUT,
|
||||
_SCOPE_RESULT_MAX,
|
||||
_SCOPE_RESULT_INVALID = -EINVAL,
|
||||
_SCOPE_RESULT_INVALID = -1
|
||||
} ScopeResult;
|
||||
|
||||
struct Scope {
|
||||
|
@ -2738,7 +2738,7 @@ static int service_deserialize_exec_command(
|
||||
STATE_EXEC_COMMAND_PATH,
|
||||
STATE_EXEC_COMMAND_ARGS,
|
||||
_STATE_EXEC_COMMAND_MAX,
|
||||
_STATE_EXEC_COMMAND_INVALID = -EINVAL,
|
||||
_STATE_EXEC_COMMAND_INVALID = -1,
|
||||
} state;
|
||||
|
||||
assert(s);
|
||||
@ -2762,14 +2762,14 @@ static int service_deserialize_exec_command(
|
||||
case STATE_EXEC_COMMAND_TYPE:
|
||||
id = service_exec_command_from_string(arg);
|
||||
if (id < 0)
|
||||
return id;
|
||||
return -EINVAL;
|
||||
|
||||
state = STATE_EXEC_COMMAND_INDEX;
|
||||
break;
|
||||
case STATE_EXEC_COMMAND_INDEX:
|
||||
r = safe_atou(arg, &idx);
|
||||
if (r < 0)
|
||||
return r;
|
||||
return -EINVAL;
|
||||
|
||||
state = STATE_EXEC_COMMAND_PATH;
|
||||
break;
|
||||
|
@ -20,7 +20,7 @@ typedef enum ServiceRestart {
|
||||
SERVICE_RESTART_ON_ABORT,
|
||||
SERVICE_RESTART_ALWAYS,
|
||||
_SERVICE_RESTART_MAX,
|
||||
_SERVICE_RESTART_INVALID = -EINVAL,
|
||||
_SERVICE_RESTART_INVALID = -1
|
||||
} ServiceRestart;
|
||||
|
||||
typedef enum ServiceType {
|
||||
@ -32,7 +32,7 @@ typedef enum ServiceType {
|
||||
SERVICE_IDLE, /* much like simple, but delay exec() until all jobs are dispatched. */
|
||||
SERVICE_EXEC, /* we fork and wait until we execute exec() (this means our own setup is waited for) */
|
||||
_SERVICE_TYPE_MAX,
|
||||
_SERVICE_TYPE_INVALID = -EINVAL,
|
||||
_SERVICE_TYPE_INVALID = -1
|
||||
} ServiceType;
|
||||
|
||||
typedef enum ServiceExecCommand {
|
||||
@ -44,7 +44,7 @@ typedef enum ServiceExecCommand {
|
||||
SERVICE_EXEC_STOP,
|
||||
SERVICE_EXEC_STOP_POST,
|
||||
_SERVICE_EXEC_COMMAND_MAX,
|
||||
_SERVICE_EXEC_COMMAND_INVALID = -EINVAL,
|
||||
_SERVICE_EXEC_COMMAND_INVALID = -1
|
||||
} ServiceExecCommand;
|
||||
|
||||
typedef enum NotifyState {
|
||||
@ -53,7 +53,7 @@ typedef enum NotifyState {
|
||||
NOTIFY_RELOADING,
|
||||
NOTIFY_STOPPING,
|
||||
_NOTIFY_STATE_MAX,
|
||||
_NOTIFY_STATE_INVALID = -EINVAL,
|
||||
_NOTIFY_STATE_INVALID = -1
|
||||
} NotifyState;
|
||||
|
||||
/* The values of this enum are referenced in man/systemd.exec.xml and src/shared/bus-unit-util.c.
|
||||
@ -71,7 +71,7 @@ typedef enum ServiceResult {
|
||||
SERVICE_FAILURE_OOM_KILL,
|
||||
SERVICE_SKIP_CONDITION,
|
||||
_SERVICE_RESULT_MAX,
|
||||
_SERVICE_RESULT_INVALID = -EINVAL,
|
||||
_SERVICE_RESULT_INVALID = -1
|
||||
} ServiceResult;
|
||||
|
||||
typedef enum ServiceTimeoutFailureMode {
|
||||
@ -79,7 +79,7 @@ typedef enum ServiceTimeoutFailureMode {
|
||||
SERVICE_TIMEOUT_ABORT,
|
||||
SERVICE_TIMEOUT_KILL,
|
||||
_SERVICE_TIMEOUT_FAILURE_MODE_MAX,
|
||||
_SERVICE_TIMEOUT_FAILURE_MODE_INVALID = -EINVAL,
|
||||
_SERVICE_TIMEOUT_FAILURE_MODE_INVALID = -1
|
||||
} ServiceTimeoutFailureMode;
|
||||
|
||||
struct ServiceFDStore {
|
||||
|
@ -14,7 +14,7 @@ typedef enum ShowStatus {
|
||||
SHOW_STATUS_TEMPORARY, /* enabled temporarily, may flip back to _AUTO */
|
||||
SHOW_STATUS_YES, /* printing of status is enabled */
|
||||
_SHOW_STATUS_MAX,
|
||||
_SHOW_STATUS_INVALID = -EINVAL,
|
||||
_SHOW_STATUS_INVALID = -1,
|
||||
} ShowStatus;
|
||||
|
||||
typedef enum ShowStatusFlags {
|
||||
@ -26,7 +26,7 @@ typedef enum StatusUnitFormat {
|
||||
STATUS_UNIT_FORMAT_NAME,
|
||||
STATUS_UNIT_FORMAT_DESCRIPTION,
|
||||
_STATUS_UNIT_FORMAT_MAX,
|
||||
_STATUS_UNIT_FORMAT_INVALID = -EINVAL,
|
||||
_STATUS_UNIT_FORMAT_INVALID = -1,
|
||||
} StatusUnitFormat;
|
||||
|
||||
static inline bool show_status_on(ShowStatus s) {
|
||||
|
@ -16,7 +16,7 @@ typedef enum SocketExecCommand {
|
||||
SOCKET_EXEC_STOP_PRE,
|
||||
SOCKET_EXEC_STOP_POST,
|
||||
_SOCKET_EXEC_COMMAND_MAX,
|
||||
_SOCKET_EXEC_COMMAND_INVALID = -EINVAL,
|
||||
_SOCKET_EXEC_COMMAND_INVALID = -1
|
||||
} SocketExecCommand;
|
||||
|
||||
typedef enum SocketType {
|
||||
@ -26,7 +26,7 @@ typedef enum SocketType {
|
||||
SOCKET_MQUEUE,
|
||||
SOCKET_USB_FUNCTION,
|
||||
_SOCKET_TYPE_MAX,
|
||||
_SOCKET_TYPE_INVALID = -EINVAL,
|
||||
_SOCKET_TYPE_INVALID = -1
|
||||
} SocketType;
|
||||
|
||||
typedef enum SocketResult {
|
||||
@ -40,7 +40,7 @@ typedef enum SocketResult {
|
||||
SOCKET_FAILURE_TRIGGER_LIMIT_HIT,
|
||||
SOCKET_FAILURE_SERVICE_START_LIMIT_HIT,
|
||||
_SOCKET_RESULT_MAX,
|
||||
_SOCKET_RESULT_INVALID = -EINVAL,
|
||||
_SOCKET_RESULT_INVALID = -1
|
||||
} SocketResult;
|
||||
|
||||
typedef struct SocketPort {
|
||||
@ -63,7 +63,7 @@ typedef enum SocketTimestamping {
|
||||
SOCKET_TIMESTAMPING_US, /* SO_TIMESTAMP */
|
||||
SOCKET_TIMESTAMPING_NS, /* SO_TIMESTAMPNS */
|
||||
_SOCKET_TIMESTAMPING_MAX,
|
||||
_SOCKET_TIMESTAMPING_INVALID = -EINVAL,
|
||||
_SOCKET_TIMESTAMPING_INVALID = -1,
|
||||
} SocketTimestamping;
|
||||
|
||||
struct Socket {
|
||||
|
@ -14,7 +14,7 @@ typedef enum SwapExecCommand {
|
||||
SWAP_EXEC_ACTIVATE,
|
||||
SWAP_EXEC_DEACTIVATE,
|
||||
_SWAP_EXEC_COMMAND_MAX,
|
||||
_SWAP_EXEC_COMMAND_INVALID = -EINVAL,
|
||||
_SWAP_EXEC_COMMAND_INVALID = -1
|
||||
} SwapExecCommand;
|
||||
|
||||
typedef enum SwapResult {
|
||||
@ -26,7 +26,7 @@ typedef enum SwapResult {
|
||||
SWAP_FAILURE_CORE_DUMP,
|
||||
SWAP_FAILURE_START_LIMIT_HIT,
|
||||
_SWAP_RESULT_MAX,
|
||||
_SWAP_RESULT_INVALID = -EINVAL,
|
||||
_SWAP_RESULT_INVALID = -1
|
||||
} SwapResult;
|
||||
|
||||
typedef struct SwapParameters {
|
||||
|
@ -14,7 +14,7 @@ typedef enum TimerBase {
|
||||
TIMER_UNIT_INACTIVE,
|
||||
TIMER_CALENDAR,
|
||||
_TIMER_BASE_MAX,
|
||||
_TIMER_BASE_INVALID = -EINVAL,
|
||||
_TIMER_BASE_INVALID = -1
|
||||
} TimerBase;
|
||||
|
||||
typedef struct TimerValue {
|
||||
@ -33,7 +33,7 @@ typedef enum TimerResult {
|
||||
TIMER_FAILURE_RESOURCES,
|
||||
TIMER_FAILURE_START_LIMIT_HIT,
|
||||
_TIMER_RESULT_MAX,
|
||||
_TIMER_RESULT_INVALID = -EINVAL,
|
||||
_TIMER_RESULT_INVALID = -1
|
||||
} TimerResult;
|
||||
|
||||
struct Timer {
|
||||
|
@ -6094,7 +6094,7 @@ void unit_log_success(Unit *u) {
|
||||
"MESSAGE_ID=" SD_MESSAGE_UNIT_SUCCESS_STR,
|
||||
LOG_UNIT_ID(u),
|
||||
LOG_UNIT_INVOCATION_ID(u),
|
||||
LOG_UNIT_MESSAGE(u, "Deactivated successfully."));
|
||||
LOG_UNIT_MESSAGE(u, "Succeeded."));
|
||||
}
|
||||
|
||||
void unit_log_failure(Unit *u, const char *result) {
|
||||
|
@ -23,14 +23,14 @@ typedef enum KillOperation {
|
||||
KILL_KILL,
|
||||
KILL_WATCHDOG,
|
||||
_KILL_OPERATION_MAX,
|
||||
_KILL_OPERATION_INVALID = -EINVAL,
|
||||
_KILL_OPERATION_INVALID = -1
|
||||
} KillOperation;
|
||||
|
||||
typedef enum CollectMode {
|
||||
COLLECT_INACTIVE,
|
||||
COLLECT_INACTIVE_OR_FAILED,
|
||||
_COLLECT_MODE_MAX,
|
||||
_COLLECT_MODE_INVALID = -EINVAL,
|
||||
_COLLECT_MODE_INVALID = -1,
|
||||
} CollectMode;
|
||||
|
||||
static inline bool UNIT_IS_ACTIVE_OR_RELOADING(UnitActiveState t) {
|
||||
|
@ -124,7 +124,7 @@ typedef enum CoredumpStorage {
|
||||
COREDUMP_STORAGE_EXTERNAL,
|
||||
COREDUMP_STORAGE_JOURNAL,
|
||||
_COREDUMP_STORAGE_MAX,
|
||||
_COREDUMP_STORAGE_INVALID = -EINVAL,
|
||||
_COREDUMP_STORAGE_INVALID = -1
|
||||
} CoredumpStorage;
|
||||
|
||||
static const char* const coredump_storage_table[_COREDUMP_STORAGE_MAX] = {
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include "compress.h"
|
||||
#include "def.h"
|
||||
#include "fd-util.h"
|
||||
#include "format-table.h"
|
||||
#include "fs-util.h"
|
||||
#include "glob-util.h"
|
||||
#include "journal-internal.h"
|
||||
@ -48,10 +47,9 @@ static const char *arg_debugger = NULL;
|
||||
static char **arg_debugger_args = NULL;
|
||||
static const char *arg_directory = NULL;
|
||||
static char **arg_file = NULL;
|
||||
static JsonFormatFlags arg_json_format_flags = JSON_FORMAT_OFF;
|
||||
static PagerFlags arg_pager_flags = 0;
|
||||
static int arg_legend = true;
|
||||
static size_t arg_rows_max = SIZE_MAX;
|
||||
static int arg_no_legend = false;
|
||||
static int arg_one = false;
|
||||
static const char* arg_output = NULL;
|
||||
static bool arg_reverse = false;
|
||||
static bool arg_quiet = false;
|
||||
@ -157,23 +155,20 @@ static int help(void) {
|
||||
if (r < 0)
|
||||
return log_oom();
|
||||
|
||||
printf("%1$s [OPTIONS...] COMMAND ...\n\n"
|
||||
"%5$sList or retrieve coredumps from the journal.%6$s\n"
|
||||
"\n%3$sCommands:%4$s\n"
|
||||
printf("%s [OPTIONS...] COMMAND ...\n\n"
|
||||
"%sList or retrieve coredumps from the journal.%s\n"
|
||||
"\nCommands:\n"
|
||||
" list [MATCHES...] List available coredumps (default)\n"
|
||||
" info [MATCHES...] Show detailed information about one or more coredumps\n"
|
||||
" dump [MATCHES...] Print first matching coredump to stdout\n"
|
||||
" debug [MATCHES...] Start a debugger for the first matching coredump\n"
|
||||
"\n%3$sOptions:%4$s\n"
|
||||
"\nOptions:\n"
|
||||
" -h --help Show this help\n"
|
||||
" --version Print version string\n"
|
||||
" --no-pager Do not pipe output into a pager\n"
|
||||
" --no-legend Do not print the column headers\n"
|
||||
" --json=pretty|short|off\n"
|
||||
" Generate JSON output\n"
|
||||
" --debugger=DEBUGGER Use the given debugger\n"
|
||||
" -A --debugger-arguments=ARGS Pass the given arguments to the debugger\n"
|
||||
" -n INT Show maximum number of rows\n"
|
||||
" -1 Show information about most recent entry only\n"
|
||||
" -S --since=DATE Only print coredumps since the date\n"
|
||||
" -U --until=DATE Only print coredumps until the date\n"
|
||||
@ -183,13 +178,11 @@ static int help(void) {
|
||||
" --file=PATH Use journal file\n"
|
||||
" -D --directory=DIR Use journal files from directory\n\n"
|
||||
" -q --quiet Do not show info messages and privilege warning\n"
|
||||
"\nSee the %2$s for details.\n",
|
||||
"\nSee the %s for details.\n",
|
||||
program_invocation_short_name,
|
||||
link,
|
||||
ansi_underline(),
|
||||
ansi_normal(),
|
||||
ansi_highlight(),
|
||||
ansi_normal());
|
||||
ansi_normal(),
|
||||
link);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -199,7 +192,6 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
ARG_VERSION = 0x100,
|
||||
ARG_NO_PAGER,
|
||||
ARG_NO_LEGEND,
|
||||
ARG_JSON,
|
||||
ARG_DEBUGGER,
|
||||
ARG_FILE,
|
||||
};
|
||||
@ -221,14 +213,13 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
{ "since", required_argument, NULL, 'S' },
|
||||
{ "until", required_argument, NULL, 'U' },
|
||||
{ "quiet", no_argument, NULL, 'q' },
|
||||
{ "json", required_argument, NULL, ARG_JSON },
|
||||
{}
|
||||
};
|
||||
|
||||
assert(argc >= 0);
|
||||
assert(argv);
|
||||
|
||||
while ((c = getopt_long(argc, argv, "hA:o:F:1D:rS:U:qn:", options, NULL)) >= 0)
|
||||
while ((c = getopt_long(argc, argv, "hA:o:F:1D:rS:U:q", options, NULL)) >= 0)
|
||||
switch(c) {
|
||||
case 'h':
|
||||
return help();
|
||||
@ -241,7 +232,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case ARG_NO_LEGEND:
|
||||
arg_legend = false;
|
||||
arg_no_legend = true;
|
||||
break;
|
||||
|
||||
case ARG_DEBUGGER:
|
||||
@ -291,22 +282,9 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
break;
|
||||
|
||||
case '1':
|
||||
arg_rows_max = 1;
|
||||
arg_reverse = true;
|
||||
arg_one = true;
|
||||
break;
|
||||
|
||||
case 'n': {
|
||||
unsigned n;
|
||||
|
||||
r = safe_atou(optarg, &n);
|
||||
if (r < 0 || n < 1)
|
||||
return log_error_errno(r < 0 ? r : SYNTHETIC_ERRNO(EINVAL),
|
||||
"Invalid numeric parameter to -n: %s", optarg);
|
||||
|
||||
arg_rows_max = n;
|
||||
break;
|
||||
}
|
||||
|
||||
case 'D':
|
||||
arg_directory = optarg;
|
||||
break;
|
||||
@ -319,13 +297,6 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
arg_quiet = true;
|
||||
break;
|
||||
|
||||
case ARG_JSON:
|
||||
r = json_parse_cmdline_parameter_and_warn(optarg, &arg_json_format_flags);
|
||||
if (r <= 0)
|
||||
return r;
|
||||
|
||||
break;
|
||||
|
||||
case '?':
|
||||
return -EINVAL;
|
||||
|
||||
@ -405,78 +376,21 @@ static int print_field(FILE* file, sd_journal *j) {
|
||||
continue; \
|
||||
}
|
||||
|
||||
static void analyze_coredump_file(
|
||||
const char *path,
|
||||
const char **ret_state,
|
||||
const char **ret_color,
|
||||
uint64_t *ret_size) {
|
||||
|
||||
_cleanup_close_ int fd = -1;
|
||||
struct stat st;
|
||||
int r;
|
||||
|
||||
assert(path);
|
||||
assert(ret_state);
|
||||
assert(ret_color);
|
||||
assert(ret_size);
|
||||
|
||||
fd = open(path, O_PATH|O_CLOEXEC);
|
||||
if (fd < 0) {
|
||||
if (errno == ENOENT) {
|
||||
*ret_state = "missing";
|
||||
*ret_color = ansi_grey();
|
||||
*ret_size = UINT64_MAX;
|
||||
return;
|
||||
}
|
||||
|
||||
r = -errno;
|
||||
} else
|
||||
r = access_fd(fd, R_OK);
|
||||
if (ERRNO_IS_PRIVILEGE(r)) {
|
||||
*ret_state = "inaccessible";
|
||||
*ret_color = ansi_highlight_yellow();
|
||||
*ret_size = UINT64_MAX;
|
||||
return;
|
||||
}
|
||||
if (r < 0)
|
||||
goto error;
|
||||
|
||||
if (fstat(fd, &st) < 0)
|
||||
goto error;
|
||||
|
||||
if (!S_ISREG(st.st_mode))
|
||||
goto error;
|
||||
|
||||
*ret_state = "present";
|
||||
*ret_color = NULL;
|
||||
*ret_size = st.st_size;
|
||||
return;
|
||||
|
||||
error:
|
||||
*ret_state = "error";
|
||||
*ret_color = ansi_highlight_red();
|
||||
*ret_size = UINT64_MAX;
|
||||
}
|
||||
|
||||
static int print_list(FILE* file, sd_journal *j, Table *t) {
|
||||
static int print_list(FILE* file, sd_journal *j, int had_legend) {
|
||||
_cleanup_free_ char
|
||||
*mid = NULL, *pid = NULL, *uid = NULL, *gid = NULL,
|
||||
*sgnl = NULL, *exe = NULL, *comm = NULL, *cmdline = NULL,
|
||||
*filename = NULL, *truncated = NULL, *coredump = NULL;
|
||||
const void *d;
|
||||
size_t l;
|
||||
usec_t ts;
|
||||
int r, signal_as_int = 0;
|
||||
const char *present = NULL, *color = NULL;
|
||||
uint64_t size = UINT64_MAX;
|
||||
usec_t t;
|
||||
char buf[FORMAT_TIMESTAMP_MAX];
|
||||
int r;
|
||||
const char *present;
|
||||
bool normal_coredump;
|
||||
uid_t uid_as_int = UID_INVALID;
|
||||
gid_t gid_as_int = GID_INVALID;
|
||||
pid_t pid_as_int = 0;
|
||||
|
||||
assert(file);
|
||||
assert(j);
|
||||
assert(t);
|
||||
|
||||
SD_JOURNAL_FOREACH_DATA(j, d, l) {
|
||||
RETRIEVE(d, l, "MESSAGE_ID", mid);
|
||||
@ -492,46 +406,54 @@ static int print_list(FILE* file, sd_journal *j, Table *t) {
|
||||
RETRIEVE(d, l, "COREDUMP", coredump);
|
||||
}
|
||||
|
||||
if (!pid && !uid && !gid && !sgnl && !exe && !comm && !cmdline && !filename)
|
||||
return log_warning_errno(SYNTHETIC_ERRNO(EINVAL), "Empty coredump log entry");
|
||||
if (!pid && !uid && !gid && !sgnl && !exe && !comm && !cmdline && !filename) {
|
||||
log_warning("Empty coredump log entry");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
(void) parse_uid(uid, &uid_as_int);
|
||||
(void) parse_gid(gid, &gid_as_int);
|
||||
(void) parse_pid(pid, &pid_as_int);
|
||||
signal_as_int = signal_from_string(sgnl);
|
||||
|
||||
r = sd_journal_get_realtime_usec(j, &ts);
|
||||
r = sd_journal_get_realtime_usec(j, &t);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to get realtime timestamp: %m");
|
||||
|
||||
format_timestamp(buf, sizeof(buf), t);
|
||||
|
||||
if (!had_legend && !arg_no_legend)
|
||||
fprintf(file, "%-*s %*s %*s %*s %*s %-*s %s\n",
|
||||
FORMAT_TIMESTAMP_WIDTH, "TIME",
|
||||
6, "PID",
|
||||
5, "UID",
|
||||
5, "GID",
|
||||
3, "SIG",
|
||||
9, "COREFILE",
|
||||
"EXE");
|
||||
|
||||
normal_coredump = streq_ptr(mid, SD_MESSAGE_COREDUMP_STR);
|
||||
|
||||
if (filename)
|
||||
analyze_coredump_file(filename, &present, &color, &size);
|
||||
if (access(filename, R_OK) == 0)
|
||||
present = "present";
|
||||
else if (errno == ENOENT)
|
||||
present = "missing";
|
||||
else
|
||||
present = "error";
|
||||
else if (coredump)
|
||||
present = "journal";
|
||||
else if (normal_coredump) {
|
||||
else if (normal_coredump)
|
||||
present = "none";
|
||||
color = ansi_grey();
|
||||
} else
|
||||
present = NULL;
|
||||
else
|
||||
present = "-";
|
||||
|
||||
if (STRPTR_IN_SET(present, "present", "journal") && truncated && parse_boolean(truncated) > 0)
|
||||
if (STR_IN_SET(present, "present", "journal") && truncated && parse_boolean(truncated) > 0)
|
||||
present = "truncated";
|
||||
|
||||
r = table_add_many(
|
||||
t,
|
||||
TABLE_TIMESTAMP, ts,
|
||||
TABLE_PID, pid_as_int,
|
||||
TABLE_UID, uid_as_int,
|
||||
TABLE_GID, gid_as_int,
|
||||
TABLE_SIGNAL, normal_coredump ? signal_as_int : 0,
|
||||
TABLE_STRING, present,
|
||||
TABLE_SET_COLOR, color,
|
||||
TABLE_STRING, exe ?: comm ?: cmdline,
|
||||
TABLE_SIZE, size);
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
fprintf(file, "%-*s %*s %*s %*s %*s %-*s %s\n",
|
||||
FORMAT_TIMESTAMP_WIDTH, buf,
|
||||
6, strna(pid),
|
||||
5, strna(uid),
|
||||
5, strna(gid),
|
||||
3, normal_coredump ? strna(sgnl) : "-",
|
||||
9, present,
|
||||
strna(exe ?: (comm ?: cmdline)));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -690,27 +612,24 @@ static int print_info(FILE *file, sd_journal *j, bool need_space) {
|
||||
fprintf(file, " Hostname: %s\n", hostname);
|
||||
|
||||
if (filename) {
|
||||
const char *state = NULL, *color = NULL;
|
||||
uint64_t size = UINT64_MAX;
|
||||
char buf[FORMAT_BYTES_MAX];
|
||||
bool inacc, trunc;
|
||||
|
||||
analyze_coredump_file(filename, &state, &color, &size);
|
||||
inacc = access(filename, R_OK) < 0;
|
||||
trunc = truncated && parse_boolean(truncated) > 0;
|
||||
|
||||
if (STRPTR_IN_SET(state, "present", "journal") && truncated && parse_boolean(truncated) > 0)
|
||||
state = "truncated";
|
||||
if (inacc || trunc)
|
||||
fprintf(file, " Storage: %s%s (%s%s%s)%s\n",
|
||||
ansi_highlight_red(),
|
||||
filename,
|
||||
inacc ? "inaccessible" : "",
|
||||
inacc && trunc ? ", " : "",
|
||||
trunc ? "truncated" : "",
|
||||
ansi_normal());
|
||||
else
|
||||
fprintf(file, " Storage: %s\n", filename);
|
||||
}
|
||||
|
||||
fprintf(file,
|
||||
" Storage: %s%s (%s)%s\n",
|
||||
strempty(color),
|
||||
filename,
|
||||
state,
|
||||
ansi_normal());
|
||||
|
||||
if (size != UINT64_MAX)
|
||||
fprintf(file,
|
||||
" Disk Size: %s\n",
|
||||
format_bytes(buf, sizeof(buf), size));
|
||||
} else if (coredump)
|
||||
else if (coredump)
|
||||
fprintf(file, " Storage: journal\n");
|
||||
else
|
||||
fprintf(file, " Storage: none\n");
|
||||
@ -740,61 +659,43 @@ static int focus(sd_journal *j) {
|
||||
return r;
|
||||
}
|
||||
|
||||
static int print_entry(
|
||||
sd_journal *j,
|
||||
size_t n_found,
|
||||
Table *t) {
|
||||
|
||||
static int print_entry(sd_journal *j, unsigned n_found, bool verb_is_info) {
|
||||
assert(j);
|
||||
|
||||
if (t)
|
||||
return print_list(stdout, j, t);
|
||||
if (verb_is_info)
|
||||
return print_info(stdout, j, n_found);
|
||||
else if (arg_field)
|
||||
return print_field(stdout, j);
|
||||
else
|
||||
return print_info(stdout, j, n_found > 0);
|
||||
return print_list(stdout, j, n_found);
|
||||
}
|
||||
|
||||
static int dump_list(int argc, char **argv, void *userdata) {
|
||||
_cleanup_(sd_journal_closep) sd_journal *j = NULL;
|
||||
_cleanup_(table_unrefp) Table *t = NULL;
|
||||
size_t n_found = 0;
|
||||
unsigned n_found = 0;
|
||||
bool verb_is_info;
|
||||
int r;
|
||||
|
||||
verb_is_info = argc >= 1 && streq(argv[0], "info");
|
||||
verb_is_info = (argc >= 1 && streq(argv[0], "info"));
|
||||
|
||||
r = acquire_journal(&j, argv + 1);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
/* The coredumps are likely compressed, and for just listing them we don't need to decompress them,
|
||||
* so let's pick a fairly low data threshold here */
|
||||
(void) sd_journal_set_data_threshold(j, 4096);
|
||||
(void) pager_open(arg_pager_flags);
|
||||
|
||||
if (!verb_is_info && !arg_field) {
|
||||
t = table_new("time", "pid", "uid", "gid", "sig", "corefile", "exe", "size");
|
||||
if (!t)
|
||||
return log_oom();
|
||||
|
||||
(void) table_set_align_percent(t, TABLE_HEADER_CELL(1), 100);
|
||||
(void) table_set_align_percent(t, TABLE_HEADER_CELL(2), 100);
|
||||
(void) table_set_align_percent(t, TABLE_HEADER_CELL(3), 100);
|
||||
(void) table_set_align_percent(t, TABLE_HEADER_CELL(7), 100);
|
||||
|
||||
(void) table_set_empty_string(t, "-");
|
||||
} else
|
||||
(void) pager_open(arg_pager_flags);
|
||||
/* The coredumps are likely to compressed, and for just
|
||||
* listing them we don't need to decompress them, so let's
|
||||
* pick a fairly low data threshold here */
|
||||
sd_journal_set_data_threshold(j, 4096);
|
||||
|
||||
/* "info" without pattern implies "-1" */
|
||||
if ((arg_rows_max == 1 && arg_reverse) || (verb_is_info && argc == 1)) {
|
||||
if (arg_one || (verb_is_info && argc == 1)) {
|
||||
r = focus(j);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = print_entry(j, 0, t);
|
||||
if (r < 0)
|
||||
return r;
|
||||
return print_entry(j, 0, verb_is_info);
|
||||
} else {
|
||||
if (arg_since != USEC_INFINITY && !arg_reverse)
|
||||
r = sd_journal_seek_realtime_usec(j, arg_since);
|
||||
@ -812,8 +713,10 @@ static int dump_list(int argc, char **argv, void *userdata) {
|
||||
r = sd_journal_next(j);
|
||||
else
|
||||
r = sd_journal_previous(j);
|
||||
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to iterate through journal: %m");
|
||||
|
||||
if (r == 0)
|
||||
break;
|
||||
|
||||
@ -837,12 +740,9 @@ static int dump_list(int argc, char **argv, void *userdata) {
|
||||
continue;
|
||||
}
|
||||
|
||||
r = print_entry(j, n_found++, t);
|
||||
r = print_entry(j, n_found++, verb_is_info);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (arg_rows_max != SIZE_MAX && n_found >= arg_rows_max)
|
||||
break;
|
||||
}
|
||||
|
||||
if (!arg_field && n_found <= 0) {
|
||||
@ -852,12 +752,6 @@ static int dump_list(int argc, char **argv, void *userdata) {
|
||||
}
|
||||
}
|
||||
|
||||
if (t) {
|
||||
r = table_print_with_pager(t, arg_json_format_flags, arg_pager_flags, arg_legend);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
typedef enum EnrollType {
|
||||
ENROLL_PASSWORD,
|
||||
ENROLL_RECOVERY,
|
||||
@ -10,7 +8,7 @@ typedef enum EnrollType {
|
||||
ENROLL_FIDO2,
|
||||
ENROLL_TPM2,
|
||||
_ENROLL_TYPE_MAX,
|
||||
_ENROLL_TYPE_INVALID = -EINVAL,
|
||||
_ENROLL_TYPE_INVALID = -1,
|
||||
} EnrollType;
|
||||
|
||||
typedef enum WipeScope {
|
||||
@ -18,7 +16,7 @@ typedef enum WipeScope {
|
||||
WIPE_ALL, /* wipe all slots */
|
||||
WIPE_EMPTY_PASSPHRASE, /* wipe slots with empty passphrases plus listed slots */
|
||||
_WIPE_SCOPE_MAX,
|
||||
_WIPE_SCOPE_INVALID = -EINVAL,
|
||||
_WIPE_SCOPE_INVALID = -1,
|
||||
} WipeScope;
|
||||
|
||||
const char* enroll_type_to_string(EnrollType t);
|
||||
|
@ -82,16 +82,17 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
case ARG_VERSION:
|
||||
return version();
|
||||
|
||||
case ARG_SUFFIX: {
|
||||
UnitType t = unit_type_from_string(optarg);
|
||||
if (t < 0)
|
||||
return log_error_errno(t, "Invalid unit suffix type \"%s\".", optarg);
|
||||
case ARG_SUFFIX:
|
||||
|
||||
if (unit_type_from_string(optarg) < 0)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Invalid unit suffix type %s.", optarg);
|
||||
|
||||
arg_suffix = optarg;
|
||||
break;
|
||||
}
|
||||
|
||||
case ARG_TEMPLATE:
|
||||
|
||||
if (!unit_name_is_valid(optarg, UNIT_NAME_TEMPLATE))
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Template name %s is not valid.", optarg);
|
||||
|
@ -888,7 +888,7 @@ static int parse_proc_cmdline_item(const char *key, const char *value, void *dat
|
||||
if (value) {
|
||||
m = volatile_mode_from_string(value);
|
||||
if (m < 0)
|
||||
log_warning_errno(m, "Failed to parse systemd.volatile= argument: %s", value);
|
||||
log_warning("Failed to parse systemd.volatile= argument: %s", value);
|
||||
else
|
||||
arg_volatile_mode = m;
|
||||
} else
|
||||
|
@ -2393,7 +2393,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
|
||||
l = rlimit_from_string_harder(field);
|
||||
if (l < 0)
|
||||
return log_error_errno(l, "Unknown resource limit type: %s", field);
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown resource limit type: %s", field);
|
||||
|
||||
if (isempty(eq + 1)) {
|
||||
/* Remove only the specific rlimit */
|
||||
|
@ -37,7 +37,7 @@ typedef enum HomeState {
|
||||
HOME_AUTHENTICATING_WHILE_ACTIVE,
|
||||
HOME_AUTHENTICATING_FOR_ACQUIRE, /* authenticating because Acquire() was called */
|
||||
_HOME_STATE_MAX,
|
||||
_HOME_STATE_INVALID = -EINVAL,
|
||||
_HOME_STATE_INVALID = -1
|
||||
} HomeState;
|
||||
|
||||
static inline bool HOME_STATE_IS_ACTIVE(HomeState state) {
|
||||
|
@ -14,7 +14,7 @@ typedef enum OperationType {
|
||||
OPERATION_DEACTIVATE_FORCE, /* enqueued on hard $HOME unplug */
|
||||
OPERATION_IMMEDIATE, /* this is never enqueued, it's just a marker we immediately started executing an operation without enqueuing anything first. */
|
||||
_OPERATION_MAX,
|
||||
_OPERATION_INVALID = -EINVAL,
|
||||
_OPERATION_INVALID = -1,
|
||||
} OperationType;
|
||||
|
||||
/* Encapsulates an operation on one or more home directories. This has two uses:
|
||||
|
@ -14,7 +14,7 @@ typedef enum UserReconcileMode {
|
||||
USER_RECONCILE_REQUIRE_NEWER, /* host version must be newer than embedded version */
|
||||
USER_RECONCILE_REQUIRE_NEWER_OR_EQUAL, /* similar, but may also be equal */
|
||||
_USER_RECONCILE_MODE_MAX,
|
||||
_USER_RECONCILE_MODE_INVALID = -EINVAL,
|
||||
_USER_RECONCILE_MODE_INVALID = -1,
|
||||
} UserReconcileMode;
|
||||
|
||||
enum { /* return values */
|
||||
|
@ -59,7 +59,7 @@ enum {
|
||||
PROP_OS_CPE_NAME,
|
||||
PROP_OS_HOME_URL,
|
||||
_PROP_MAX,
|
||||
_PROP_INVALID = -EINVAL,
|
||||
_PROP_INVALID = -1,
|
||||
};
|
||||
|
||||
typedef struct Context {
|
||||
|
@ -17,7 +17,7 @@ typedef enum ImportCompressType {
|
||||
IMPORT_COMPRESS_GZIP,
|
||||
IMPORT_COMPRESS_BZIP2,
|
||||
_IMPORT_COMPRESS_TYPE_MAX,
|
||||
_IMPORT_COMPRESS_TYPE_INVALID = -EINVAL,
|
||||
_IMPORT_COMPRESS_TYPE_INVALID = -1,
|
||||
} ImportCompressType;
|
||||
|
||||
typedef struct ImportCompress {
|
||||
|
@ -46,7 +46,7 @@ typedef enum TransferType {
|
||||
TRANSFER_PULL_TAR,
|
||||
TRANSFER_PULL_RAW,
|
||||
_TRANSFER_TYPE_MAX,
|
||||
_TRANSFER_TYPE_INVALID = -EINVAL,
|
||||
_TRANSFER_TYPE_INVALID = -1,
|
||||
} TransferType;
|
||||
|
||||
struct Transfer {
|
||||
|
@ -33,7 +33,7 @@ typedef enum VerificationStyle {
|
||||
VERIFICATION_PER_FILE, /* SuSE-style ".sha256" files with inline gpg signature */
|
||||
VERIFICATION_PER_DIRECTORY, /* Ubuntu-style SHA256SUM files with detached SHA256SUM.gpg signatures */
|
||||
_VERIFICATION_STYLE_MAX,
|
||||
_VERIFICATION_STYLE_INVALID = -EINVAL,
|
||||
_VERIFICATION_STYLE_INVALID = -1,
|
||||
} VerificationStyle;
|
||||
|
||||
int verification_style_from_url(const char *url, VerificationStyle *style);
|
||||
|
@ -22,7 +22,7 @@ typedef enum PullJobState {
|
||||
PULL_JOB_DONE,
|
||||
PULL_JOB_FAILED,
|
||||
_PULL_JOB_STATE_MAX,
|
||||
_PULL_JOB_STATE_INVALID = -EINVAL,
|
||||
_PULL_JOB_STATE_INVALID = -1,
|
||||
} PullJobState;
|
||||
|
||||
#define PULL_JOB_IS_COMPLETE(j) (IN_SET((j)->state, PULL_JOB_DONE, PULL_JOB_FAILED))
|
||||
|
@ -961,14 +961,16 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
case ARG_SPLIT_MODE:
|
||||
arg_split_mode = journal_write_split_mode_from_string(optarg);
|
||||
if (arg_split_mode == _JOURNAL_WRITE_SPLIT_INVALID)
|
||||
return log_error_errno(arg_split_mode, "Invalid split mode: %s", optarg);
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Invalid split mode: %s", optarg);
|
||||
break;
|
||||
|
||||
case ARG_COMPRESS:
|
||||
if (optarg) {
|
||||
r = parse_boolean(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --compress= parameter.");
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse --compress= parameter.");
|
||||
|
||||
arg_compress = !!r;
|
||||
} else
|
||||
|
@ -36,5 +36,5 @@ typedef enum JournalWriteSplitMode {
|
||||
JOURNAL_WRITE_SPLIT_NONE,
|
||||
JOURNAL_WRITE_SPLIT_HOST,
|
||||
_JOURNAL_WRITE_SPLIT_MAX,
|
||||
_JOURNAL_WRITE_SPLIT_INVALID = -EINVAL,
|
||||
_JOURNAL_WRITE_SPLIT_INVALID = -1
|
||||
} JournalWriteSplitMode;
|
||||
|
@ -413,7 +413,7 @@ static int setup_uploader(Uploader *u, const char *url, const char *state_file)
|
||||
assert(url);
|
||||
|
||||
*u = (Uploader) {
|
||||
.input = -1,
|
||||
.input = -1
|
||||
};
|
||||
|
||||
host = STARTSWITH_SET(url, "http://", "https://");
|
||||
|
@ -565,7 +565,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
|
||||
arg_output = output_mode_from_string(optarg);
|
||||
if (arg_output < 0)
|
||||
return log_error_errno(arg_output, "Unknown output format '%s'.", optarg);
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown output format '%s'.", optarg);
|
||||
|
||||
if (IN_SET(arg_output, OUTPUT_EXPORT, OUTPUT_JSON, OUTPUT_JSON_PRETTY, OUTPUT_JSON_SSE, OUTPUT_JSON_SEQ, OUTPUT_CAT))
|
||||
arg_quiet = true;
|
||||
@ -835,7 +835,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
to = log_level_from_string(dots + 2);
|
||||
|
||||
if (from < 0 || to < 0)
|
||||
return log_error_errno(from < 0 ? from : to,
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse log level range %s", optarg);
|
||||
|
||||
arg_priorities = 0;
|
||||
@ -853,7 +853,8 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
|
||||
p = log_level_from_string(optarg);
|
||||
if (p < 0)
|
||||
return log_error_errno(p, "Unknown log level %s", optarg);
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Unknown log level %s", optarg);
|
||||
|
||||
arg_priorities = 0;
|
||||
|
||||
@ -884,7 +885,8 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
|
||||
num = log_facility_unshifted_from_string(fac);
|
||||
if (num < 0)
|
||||
return log_error_errno(num, "Bad --facility= argument \"%s\".", fac);
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Bad --facility= argument \"%s\".", fac);
|
||||
|
||||
if (set_ensure_put(&arg_facilities, NULL, INT_TO_PTR(num)) < 0)
|
||||
return log_oom();
|
||||
|
@ -368,7 +368,7 @@ static int client_context_read_log_level_max(
|
||||
|
||||
ll = log_level_from_string(value);
|
||||
if (ll < 0)
|
||||
return ll;
|
||||
return -EINVAL;
|
||||
|
||||
c->log_level_max = ll;
|
||||
return 0;
|
||||
|
@ -25,7 +25,7 @@ typedef enum Storage {
|
||||
STORAGE_PERSISTENT,
|
||||
STORAGE_NONE,
|
||||
_STORAGE_MAX,
|
||||
_STORAGE_INVALID = -EINVAL,
|
||||
_STORAGE_INVALID = -1
|
||||
} Storage;
|
||||
|
||||
typedef enum SplitMode {
|
||||
@ -33,7 +33,7 @@ typedef enum SplitMode {
|
||||
SPLIT_LOGIN, /* deprecated */
|
||||
SPLIT_NONE,
|
||||
_SPLIT_MAX,
|
||||
_SPLIT_INVALID = -EINVAL,
|
||||
_SPLIT_INVALID = -1
|
||||
} SplitMode;
|
||||
|
||||
typedef struct JournalCompressOptions {
|
||||
|
@ -60,7 +60,7 @@ typedef enum LineBreak {
|
||||
LINE_BREAK_EOF,
|
||||
LINE_BREAK_PID_CHANGE,
|
||||
_LINE_BREAK_MAX,
|
||||
_LINE_BREAK_INVALID = -EINVAL,
|
||||
_LINE_BREAK_INVALID = -1,
|
||||
} LineBreak;
|
||||
|
||||
struct StdoutStream {
|
||||
|
@ -46,7 +46,7 @@ typedef enum IPv4ACDState {
|
||||
IPV4ACD_STATE_ANNOUNCING,
|
||||
IPV4ACD_STATE_RUNNING,
|
||||
_IPV4ACD_STATE_MAX,
|
||||
_IPV4ACD_STATE_INVALID = -EINVAL,
|
||||
_IPV4ACD_STATE_INVALID = -1
|
||||
} IPv4ACDState;
|
||||
|
||||
struct sd_ipv4acd {
|
||||
|
@ -122,22 +122,22 @@ typedef enum BusSlotType {
|
||||
BUS_NODE_ENUMERATOR,
|
||||
BUS_NODE_VTABLE,
|
||||
BUS_NODE_OBJECT_MANAGER,
|
||||
_BUS_SLOT_INVALID = -EINVAL,
|
||||
_BUS_SLOT_INVALID = -1,
|
||||
} BusSlotType;
|
||||
|
||||
struct sd_bus_slot {
|
||||
unsigned n_ref;
|
||||
BusSlotType type:8;
|
||||
BusSlotType type:5;
|
||||
|
||||
/* Slots can be "floating" or not. If they are not floating (the usual case) then they reference the
|
||||
* bus object they are associated with. This means the bus object stays allocated at least as long as
|
||||
* there is a slot around associated with it. If it is floating, then the slot's lifecycle is bound
|
||||
* to the lifecycle of the bus: it will be disconnected from the bus when the bus is destroyed, and
|
||||
* it keeping the slot reffed hence won't mean the bus stays reffed too. Internally this means the
|
||||
* reference direction is reversed: floating slots objects are referenced by the bus object, and not
|
||||
* vice versa. */
|
||||
bool floating;
|
||||
bool match_added;
|
||||
/* Slots can be "floating" or not. If they are not floating (the usual case) then they reference the bus object
|
||||
* they are associated with. This means the bus object stays allocated at least as long as there is a slot
|
||||
* around associated with it. If it is floating, then the slot's lifecycle is bound to the lifecycle of the
|
||||
* bus: it will be disconnected from the bus when the bus is destroyed, and it keeping the slot reffed hence
|
||||
* won't mean the bus stays reffed too. Internally this means the reference direction is reversed: floating
|
||||
* slots objects are referenced by the bus object, and not vice versa. */
|
||||
bool floating:1;
|
||||
|
||||
bool match_added:1;
|
||||
|
||||
sd_bus *bus;
|
||||
void *userdata;
|
||||
|
@ -27,7 +27,7 @@ enum bus_match_node_type {
|
||||
BUS_MATCH_ARG_HAS,
|
||||
BUS_MATCH_ARG_HAS_LAST = BUS_MATCH_ARG_HAS + 63,
|
||||
_BUS_MATCH_NODE_TYPE_MAX,
|
||||
_BUS_MATCH_NODE_TYPE_INVALID = -EINVAL,
|
||||
_BUS_MATCH_NODE_TYPE_INVALID = -1
|
||||
};
|
||||
|
||||
struct bus_match_node {
|
||||
|
@ -15,7 +15,7 @@ static void test_error(void) {
|
||||
const sd_bus_error temporarily_const_error = {
|
||||
.name = SD_BUS_ERROR_ACCESS_DENIED,
|
||||
.message = "oh! no",
|
||||
._need_free = -1,
|
||||
._need_free = -1
|
||||
};
|
||||
|
||||
assert_se(!sd_bus_error_is_set(&error));
|
||||
|
@ -21,7 +21,7 @@ typedef enum DeviceEnumerationType {
|
||||
DEVICE_ENUMERATION_TYPE_DEVICES,
|
||||
DEVICE_ENUMERATION_TYPE_SUBSYSTEMS,
|
||||
_DEVICE_ENUMERATION_TYPE_MAX,
|
||||
_DEVICE_ENUMERATION_TYPE_INVALID = -EINVAL,
|
||||
_DEVICE_ENUMERATION_TYPE_INVALID = -1,
|
||||
} DeviceEnumerationType;
|
||||
|
||||
struct sd_device_enumerator {
|
||||
|
@ -1,8 +1,6 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
#pragma once
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include "sd-device.h"
|
||||
|
||||
typedef enum MonitorNetlinkGroup {
|
||||
@ -10,7 +8,7 @@ typedef enum MonitorNetlinkGroup {
|
||||
MONITOR_GROUP_KERNEL,
|
||||
MONITOR_GROUP_UDEV,
|
||||
_MONITOR_NETLINK_GROUP_MAX,
|
||||
_MONITOR_NETLINK_GROUP_INVALID = -EINVAL,
|
||||
_MONITOR_NETLINK_GROUP_INVALID = -1,
|
||||
} MonitorNetlinkGroup;
|
||||
|
||||
int device_monitor_new_full(sd_device_monitor **ret, MonitorNetlinkGroup group, int fd);
|
||||
|
@ -204,7 +204,7 @@ static int device_set_action(sd_device *device, const char *action) {
|
||||
|
||||
a = device_action_from_string(action);
|
||||
if (a < 0)
|
||||
return a;
|
||||
return -EINVAL;
|
||||
|
||||
r = device_add_property_internal(device, "ACTION", action);
|
||||
if (r < 0)
|
||||
|
@ -20,7 +20,7 @@ typedef enum DeviceAction {
|
||||
DEVICE_ACTION_BIND,
|
||||
DEVICE_ACTION_UNBIND,
|
||||
_DEVICE_ACTION_MAX,
|
||||
_DEVICE_ACTION_INVALID = -EINVAL,
|
||||
_DEVICE_ACTION_INVALID = -1,
|
||||
} DeviceAction;
|
||||
|
||||
int device_new_from_nulstr(sd_device **ret, uint8_t *nulstr, size_t len);
|
||||
|
@ -28,7 +28,7 @@ typedef enum EventSourceType {
|
||||
SOURCE_WATCHDOG,
|
||||
SOURCE_INOTIFY,
|
||||
_SOURCE_EVENT_SOURCE_TYPE_MAX,
|
||||
_SOURCE_EVENT_SOURCE_TYPE_INVALID = -EINVAL,
|
||||
_SOURCE_EVENT_SOURCE_TYPE_INVALID = -1
|
||||
} EventSourceType;
|
||||
|
||||
/* All objects we use in epoll events start with this value, so that
|
||||
@ -40,7 +40,7 @@ typedef enum WakeupType {
|
||||
WAKEUP_SIGNAL_DATA,
|
||||
WAKEUP_INOTIFY_DATA,
|
||||
_WAKEUP_TYPE_MAX,
|
||||
_WAKEUP_TYPE_INVALID = -EINVAL,
|
||||
_WAKEUP_TYPE_INVALID = -1,
|
||||
} WakeupType;
|
||||
|
||||
struct inode_data;
|
||||
@ -56,7 +56,7 @@ struct sd_event_source {
|
||||
|
||||
char *description;
|
||||
|
||||
EventSourceType type;
|
||||
EventSourceType type:5;
|
||||
signed int enabled:3;
|
||||
bool pending:1;
|
||||
bool dispatching:1;
|
||||
|
@ -33,17 +33,17 @@ struct match_callback {
|
||||
typedef enum NetlinkSlotType {
|
||||
NETLINK_REPLY_CALLBACK,
|
||||
NETLINK_MATCH_CALLBACK,
|
||||
_NETLINK_SLOT_INVALID = -EINVAL,
|
||||
_NETLINK_SLOT_INVALID = -1,
|
||||
} NetlinkSlotType;
|
||||
|
||||
struct sd_netlink_slot {
|
||||
unsigned n_ref;
|
||||
NetlinkSlotType type:8;
|
||||
bool floating;
|
||||
sd_netlink *netlink;
|
||||
void *userdata;
|
||||
sd_netlink_destroy_t destroy_callback;
|
||||
NetlinkSlotType type:2;
|
||||
|
||||
bool floating:1;
|
||||
char *description;
|
||||
|
||||
LIST_FIELDS(sd_netlink_slot, slots);
|
||||
|
@ -93,7 +93,7 @@ typedef enum NLUnionLinkInfoData {
|
||||
NL_UNION_LINK_INFO_DATA_IFB,
|
||||
NL_UNION_LINK_INFO_DATA_BAREUDP,
|
||||
_NL_UNION_LINK_INFO_DATA_MAX,
|
||||
_NL_UNION_LINK_INFO_DATA_INVALID = -EINVAL,
|
||||
_NL_UNION_LINK_INFO_DATA_INVALID = -1
|
||||
} NLUnionLinkInfoData;
|
||||
|
||||
const char *nl_union_link_info_data_to_string(NLUnionLinkInfoData p) _const_;
|
||||
@ -115,7 +115,7 @@ typedef enum NLUnionTCAOptionData {
|
||||
NL_UNION_TCA_OPTION_DATA_SFB,
|
||||
NL_UNION_TCA_OPTION_DATA_TBF,
|
||||
_NL_UNION_TCA_OPTION_DATA_MAX,
|
||||
_NL_UNION_TCA_OPTION_DATA_INVALID = -EINVAL,
|
||||
_NL_UNION_TCA_OPTION_DATA_INVALID = -1,
|
||||
} NLUnionTCAOptionData;
|
||||
|
||||
const char *nl_union_tca_option_data_to_string(NLUnionTCAOptionData p) _const_;
|
||||
@ -131,7 +131,7 @@ typedef enum NLUnionNFTExprData {
|
||||
NL_UNION_NFT_EXPR_DATA_META,
|
||||
NL_UNION_NFT_EXPR_DATA_NAT,
|
||||
_NL_UNION_NFT_EXPR_DATA_MAX,
|
||||
_NL_UNION_NFT_EXPR_DATA_INVALID = -EINVAL,
|
||||
_NL_UNION_NFT_EXPR_DATA_INVALID = -1,
|
||||
} NLUnionNFTExprData;
|
||||
|
||||
const char *nl_union_nft_expr_data_to_string(NLUnionNFTExprData p) _const_;
|
||||
|
@ -22,7 +22,7 @@ typedef enum LinkOperationalState {
|
||||
LINK_OPERSTATE_ENSLAVED,
|
||||
LINK_OPERSTATE_ROUTABLE,
|
||||
_LINK_OPERSTATE_MAX,
|
||||
_LINK_OPERSTATE_INVALID = -EINVAL,
|
||||
_LINK_OPERSTATE_INVALID = -1
|
||||
} LinkOperationalState;
|
||||
|
||||
typedef enum LinkCarrierState {
|
||||
@ -33,7 +33,7 @@ typedef enum LinkCarrierState {
|
||||
LINK_CARRIER_STATE_CARRIER = LINK_OPERSTATE_CARRIER,
|
||||
LINK_CARRIER_STATE_ENSLAVED = LINK_OPERSTATE_ENSLAVED,
|
||||
_LINK_CARRIER_STATE_MAX,
|
||||
_LINK_CARRIER_STATE_INVALID = -EINVAL,
|
||||
_LINK_CARRIER_STATE_INVALID = -1
|
||||
} LinkCarrierState;
|
||||
|
||||
typedef enum LinkAddressState {
|
||||
@ -41,7 +41,7 @@ typedef enum LinkAddressState {
|
||||
LINK_ADDRESS_STATE_DEGRADED,
|
||||
LINK_ADDRESS_STATE_ROUTABLE,
|
||||
_LINK_ADDRESS_STATE_MAX,
|
||||
_LINK_ADDRESS_STATE_INVALID = -EINVAL,
|
||||
_LINK_ADDRESS_STATE_INVALID = -1
|
||||
} LinkAddressState;
|
||||
|
||||
const char* link_operstate_to_string(LinkOperationalState s) _const_;
|
||||
|
@ -1371,7 +1371,8 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
|
||||
arg_output = output_mode_from_string(optarg);
|
||||
if (arg_output < 0)
|
||||
return log_error_errno(arg_output, "Unknown output '%s'.", optarg);
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Unknown output '%s'.", optarg);
|
||||
|
||||
if (OUTPUT_MODE_IS_JSON(arg_output))
|
||||
arg_legend = false;
|
||||
@ -1402,7 +1403,8 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
|
||||
arg_signal = signal_from_string(optarg);
|
||||
if (arg_signal < 0)
|
||||
return log_error_errno(arg_signal, "Failed to parse signal string %s.", optarg);
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse signal string %s.", optarg);
|
||||
break;
|
||||
|
||||
case 'H':
|
||||
|
@ -15,7 +15,7 @@ typedef enum HandleAction {
|
||||
HANDLE_SUSPEND_THEN_HIBERNATE,
|
||||
HANDLE_LOCK,
|
||||
_HANDLE_ACTION_MAX,
|
||||
_HANDLE_ACTION_INVALID = -EINVAL,
|
||||
_HANDLE_ACTION_INVALID = -1
|
||||
} HandleAction;
|
||||
|
||||
#include "logind-inhibit.h"
|
||||
|
@ -13,14 +13,14 @@ typedef enum InhibitWhat {
|
||||
INHIBIT_HANDLE_LID_SWITCH = 1 << 6,
|
||||
INHIBIT_HANDLE_REBOOT_KEY = 1 << 7,
|
||||
_INHIBIT_WHAT_MAX = 1 << 8,
|
||||
_INHIBIT_WHAT_INVALID = -EINVAL,
|
||||
_INHIBIT_WHAT_INVALID = -1
|
||||
} InhibitWhat;
|
||||
|
||||
typedef enum InhibitMode {
|
||||
INHIBIT_BLOCK,
|
||||
INHIBIT_DELAY,
|
||||
_INHIBIT_MODE_MAX,
|
||||
_INHIBIT_MODE_INVALID = -EINVAL,
|
||||
_INHIBIT_MODE_INVALID = -1
|
||||
} InhibitMode;
|
||||
|
||||
#include "logind.h"
|
||||
|
@ -15,7 +15,7 @@ typedef enum SessionState {
|
||||
SESSION_ACTIVE, /* Logged in and in the fg */
|
||||
SESSION_CLOSING, /* Logged out, but scope is still there */
|
||||
_SESSION_STATE_MAX,
|
||||
_SESSION_STATE_INVALID = -EINVAL,
|
||||
_SESSION_STATE_INVALID = -1
|
||||
} SessionState;
|
||||
|
||||
typedef enum SessionClass {
|
||||
@ -24,7 +24,7 @@ typedef enum SessionClass {
|
||||
SESSION_LOCK_SCREEN,
|
||||
SESSION_BACKGROUND,
|
||||
_SESSION_CLASS_MAX,
|
||||
_SESSION_CLASS_INVALID = -EINVAL,
|
||||
_SESSION_CLASS_INVALID = -1
|
||||
} SessionClass;
|
||||
|
||||
typedef enum SessionType {
|
||||
@ -35,7 +35,7 @@ typedef enum SessionType {
|
||||
SESSION_MIR,
|
||||
SESSION_WEB,
|
||||
_SESSION_TYPE_MAX,
|
||||
_SESSION_TYPE_INVALID = -EINVAL,
|
||||
_SESSION_TYPE_INVALID = -1
|
||||
} SessionType;
|
||||
|
||||
#define SESSION_TYPE_IS_GRAPHICAL(type) IN_SET(type, SESSION_X11, SESSION_WAYLAND, SESSION_MIR)
|
||||
@ -44,7 +44,7 @@ enum KillWho {
|
||||
KILL_LEADER,
|
||||
KILL_ALL,
|
||||
_KILL_WHO_MAX,
|
||||
_KILL_WHO_INVALID = -EINVAL,
|
||||
_KILL_WHO_INVALID = -1
|
||||
};
|
||||
|
||||
typedef enum TTYValidity {
|
||||
@ -52,7 +52,7 @@ typedef enum TTYValidity {
|
||||
TTY_FROM_UTMP,
|
||||
TTY_UTMP_INCONSISTENT, /* may happen on ssh sessions with multiplexed TTYs */
|
||||
_TTY_VALIDITY_MAX,
|
||||
_TTY_VALIDITY_INVALID = -EINVAL,
|
||||
_TTY_VALIDITY_INVALID = -1,
|
||||
} TTYValidity;
|
||||
|
||||
struct Session {
|
||||
|
@ -16,7 +16,7 @@ typedef enum UserState {
|
||||
USER_ACTIVE, /* User logged in and has a session in the fg */
|
||||
USER_CLOSING, /* User logged out, but processes still remain and lingering is not enabled */
|
||||
_USER_STATE_MAX,
|
||||
_USER_STATE_INVALID = -EINVAL,
|
||||
_USER_STATE_INVALID = -1
|
||||
} UserState;
|
||||
|
||||
struct User {
|
||||
|
@ -14,7 +14,7 @@ typedef enum MachineState {
|
||||
MACHINE_RUNNING, /* Machine is running */
|
||||
MACHINE_CLOSING, /* Machine is terminating */
|
||||
_MACHINE_STATE_MAX,
|
||||
_MACHINE_STATE_INVALID = -EINVAL,
|
||||
_MACHINE_STATE_INVALID = -1
|
||||
} MachineState;
|
||||
|
||||
typedef enum MachineClass {
|
||||
@ -22,14 +22,14 @@ typedef enum MachineClass {
|
||||
MACHINE_VM,
|
||||
MACHINE_HOST,
|
||||
_MACHINE_CLASS_MAX,
|
||||
_MACHINE_CLASS_INVALID = -EINVAL,
|
||||
_MACHINE_CLASS_INVALID = -1
|
||||
} MachineClass;
|
||||
|
||||
enum KillWho {
|
||||
KILL_LEADER,
|
||||
KILL_ALL,
|
||||
_KILL_WHO_MAX,
|
||||
_KILL_WHO_INVALID = -EINVAL,
|
||||
_KILL_WHO_INVALID = -1
|
||||
};
|
||||
|
||||
struct Machine {
|
||||
|
@ -2693,10 +2693,10 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = output_mode_from_string(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Unknown output '%s'.", optarg);
|
||||
arg_output = r;
|
||||
arg_output = output_mode_from_string(optarg);
|
||||
if (arg_output < 0)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Unknown output '%s'.", optarg);
|
||||
|
||||
if (OUTPUT_MODE_IS_JSON(arg_output))
|
||||
arg_legend = false;
|
||||
@ -2720,10 +2720,10 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = signal_from_string(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse signal string %s.", optarg);
|
||||
arg_signal = r;
|
||||
arg_signal = signal_from_string(optarg);
|
||||
if (arg_signal < 0)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse signal string %s.", optarg);
|
||||
break;
|
||||
|
||||
case ARG_NO_ASK_PASSWORD:
|
||||
@ -2758,10 +2758,10 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
r = import_verify_from_string(optarg);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to parse --verify= setting: %s", optarg);
|
||||
arg_verify = r;
|
||||
arg_verify = import_verify_from_string(optarg);
|
||||
if (arg_verify < 0)
|
||||
return log_error_errno(SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse --verify= setting: %s", optarg);
|
||||
break;
|
||||
|
||||
case ARG_FORCE:
|
||||
|
@ -313,7 +313,7 @@ static int network_set_dhcp_type(Context *context, const char *ifname, const cha
|
||||
|
||||
t = dracut_dhcp_type_from_string(dhcp_type);
|
||||
if (t < 0)
|
||||
return t;
|
||||
return -EINVAL;
|
||||
|
||||
network = network_get(context, ifname);
|
||||
if (!network) {
|
||||
|
@ -19,7 +19,7 @@ typedef enum DHCPType {
|
||||
DHCP_TYPE_EITHER6,
|
||||
DHCP_TYPE_IBFT,
|
||||
_DHCP_TYPE_MAX,
|
||||
_DHCP_TYPE_INVALID = -EINVAL,
|
||||
_DHCP_TYPE_INVALID = -1,
|
||||
} DHCPType;
|
||||
|
||||
typedef struct Address Address;
|
||||
|
@ -15,7 +15,7 @@ typedef enum BareUDPProtocol {
|
||||
BARE_UDP_PROTOCOL_MPLS_UC = ETH_P_MPLS_UC,
|
||||
BARE_UDP_PROTOCOL_MPLS_MC = ETH_P_MPLS_MC,
|
||||
_BARE_UDP_PROTOCOL_MAX,
|
||||
_BARE_UDP_PROTOCOL_INVALID = -EINVAL,
|
||||
_BARE_UDP_PROTOCOL_INVALID = -1
|
||||
} BareUDPProtocol;
|
||||
|
||||
struct BareUDP {
|
||||
|
@ -35,7 +35,7 @@ typedef enum MulticastRouter {
|
||||
MULTICAST_ROUTER_PERMANENT = MDB_RTR_TYPE_PERM,
|
||||
MULTICAST_ROUTER_TEMPORARY = MDB_RTR_TYPE_TEMP,
|
||||
_MULTICAST_ROUTER_MAX,
|
||||
_MULTICAST_ROUTER_INVALID = -EINVAL,
|
||||
_MULTICAST_ROUTER_INVALID = -1,
|
||||
} MulticastRouter;
|
||||
|
||||
DEFINE_NETDEV_CAST(BRIDGE, Bridge);
|
||||
|
@ -12,7 +12,7 @@ typedef enum FooOverUDPEncapType {
|
||||
NETDEV_FOO_OVER_UDP_ENCAP_DIRECT = FOU_ENCAP_DIRECT,
|
||||
NETDEV_FOO_OVER_UDP_ENCAP_GUE = FOU_ENCAP_GUE,
|
||||
_NETDEV_FOO_OVER_UDP_ENCAP_MAX,
|
||||
_NETDEV_FOO_OVER_UDP_ENCAP_INVALID = -EINVAL,
|
||||
_NETDEV_FOO_OVER_UDP_ENCAP_INVALID = -1,
|
||||
} FooOverUDPEncapType;
|
||||
|
||||
typedef struct FouTunnel {
|
||||
|
@ -14,7 +14,7 @@ typedef enum GeneveDF {
|
||||
NETDEV_GENEVE_DF_YES = GENEVE_DF_SET,
|
||||
NETDEV_GENEVE_DF_INHERIT = GENEVE_DF_INHERIT,
|
||||
_NETDEV_GENEVE_DF_MAX,
|
||||
_NETDEV_GENEVE_DF_INVALID = -EINVAL,
|
||||
_NETDEV_GENEVE_DF_INVALID = -1
|
||||
} GeneveDF;
|
||||
|
||||
struct Geneve {
|
||||
|
@ -12,14 +12,14 @@ typedef enum L2tpL2specType {
|
||||
NETDEV_L2TP_L2SPECTYPE_NONE = L2TP_L2SPECTYPE_NONE,
|
||||
NETDEV_L2TP_L2SPECTYPE_DEFAULT = L2TP_L2SPECTYPE_DEFAULT,
|
||||
_NETDEV_L2TP_L2SPECTYPE_MAX,
|
||||
_NETDEV_L2TP_L2SPECTYPE_INVALID = -EINVAL,
|
||||
_NETDEV_L2TP_L2SPECTYPE_INVALID = -1,
|
||||
} L2tpL2specType;
|
||||
|
||||
typedef enum L2tpEncapType {
|
||||
NETDEV_L2TP_ENCAPTYPE_UDP = L2TP_ENCAPTYPE_UDP,
|
||||
NETDEV_L2TP_ENCAPTYPE_IP = L2TP_ENCAPTYPE_IP,
|
||||
_NETDEV_L2TP_ENCAPTYPE_MAX,
|
||||
_NETDEV_L2TP_ENCAPTYPE_INVALID = -EINVAL,
|
||||
_NETDEV_L2TP_ENCAPTYPE_INVALID = -1,
|
||||
} L2tpEncapType;
|
||||
|
||||
typedef enum L2tpLocalAddressType {
|
||||
@ -27,7 +27,7 @@ typedef enum L2tpLocalAddressType {
|
||||
NETDEV_L2TP_LOCAL_ADDRESS_STATIC,
|
||||
NETDEV_L2TP_LOCAL_ADDRESS_DYNAMIC,
|
||||
_NETDEV_L2TP_LOCAL_ADDRESS_MAX,
|
||||
_NETDEV_L2TP_LOCAL_ADDRESS_INVALID = -EINVAL,
|
||||
_NETDEV_L2TP_LOCAL_ADDRESS_INVALID = -1,
|
||||
} L2tpLocalAddressType;
|
||||
|
||||
typedef struct L2tpTunnel L2tpTunnel;
|
||||
|
@ -85,7 +85,7 @@ typedef enum NetDevKind {
|
||||
NETDEV_KIND_BAREUDP,
|
||||
_NETDEV_KIND_MAX,
|
||||
_NETDEV_KIND_TUNNEL, /* Used by config_parse_stacked_netdev() */
|
||||
_NETDEV_KIND_INVALID = -EINVAL,
|
||||
_NETDEV_KIND_INVALID = -1
|
||||
} NetDevKind;
|
||||
|
||||
typedef enum NetDevState {
|
||||
@ -95,7 +95,7 @@ typedef enum NetDevState {
|
||||
NETDEV_STATE_READY,
|
||||
NETDEV_STATE_LINGER,
|
||||
_NETDEV_STATE_MAX,
|
||||
_NETDEV_STATE_INVALID = -EINVAL,
|
||||
_NETDEV_STATE_INVALID = -1,
|
||||
} NetDevState;
|
||||
|
||||
typedef enum NetDevCreateType {
|
||||
@ -104,7 +104,7 @@ typedef enum NetDevCreateType {
|
||||
NETDEV_CREATE_STACKED,
|
||||
NETDEV_CREATE_AFTER_CONFIGURED,
|
||||
_NETDEV_CREATE_MAX,
|
||||
_NETDEV_CREATE_INVALID = -EINVAL,
|
||||
_NETDEV_CREATE_INVALID = -1,
|
||||
} NetDevCreateType;
|
||||
|
||||
typedef struct Manager Manager;
|
||||
|
@ -12,13 +12,13 @@ typedef enum Ip6TnlMode {
|
||||
NETDEV_IP6_TNL_MODE_IPIP6,
|
||||
NETDEV_IP6_TNL_MODE_ANYIP6,
|
||||
_NETDEV_IP6_TNL_MODE_MAX,
|
||||
_NETDEV_IP6_TNL_MODE_INVALID = -EINVAL,
|
||||
_NETDEV_IP6_TNL_MODE_INVALID = -1,
|
||||
} Ip6TnlMode;
|
||||
|
||||
typedef enum IPv6FlowLabel {
|
||||
NETDEV_IPV6_FLOWLABEL_INHERIT = 0xFFFFF + 1,
|
||||
_NETDEV_IPV6_FLOWLABEL_MAX,
|
||||
_NETDEV_IPV6_FLOWLABEL_INVALID = -EINVAL,
|
||||
_NETDEV_IPV6_FLOWLABEL_INVALID = -1,
|
||||
} IPv6FlowLabel;
|
||||
|
||||
typedef struct Tunnel {
|
||||
|
@ -16,7 +16,7 @@ typedef enum VxLanDF {
|
||||
NETDEV_VXLAN_DF_YES = VXLAN_DF_SET,
|
||||
NETDEV_VXLAN_DF_INHERIT = VXLAN_DF_INHERIT,
|
||||
_NETDEV_VXLAN_DF_MAX,
|
||||
_NETDEV_VXLAN_DF_INVALID = -EINVAL,
|
||||
_NETDEV_VXLAN_DF_INVALID = -1
|
||||
} VxLanDF;
|
||||
|
||||
struct VxLan {
|
||||
|
@ -1754,6 +1754,7 @@ int config_parse_duplicate_address_detection(
|
||||
|
||||
Network *network = userdata;
|
||||
_cleanup_(address_free_or_set_invalidp) Address *n = NULL;
|
||||
AddressFamily a;
|
||||
int r;
|
||||
|
||||
assert(filename);
|
||||
@ -1782,14 +1783,14 @@ int config_parse_duplicate_address_detection(
|
||||
return 0;
|
||||
}
|
||||
|
||||
AddressFamily a = duplicate_address_detection_address_family_from_string(rvalue);
|
||||
a = duplicate_address_detection_address_family_from_string(rvalue);
|
||||
if (a < 0) {
|
||||
log_syntax(unit, LOG_WARNING, filename, line, a,
|
||||
log_syntax(unit, LOG_WARNING, filename, line, SYNTHETIC_ERRNO(EINVAL),
|
||||
"Failed to parse %s=, ignoring: %s", lvalue, rvalue);
|
||||
return 0;
|
||||
}
|
||||
n->duplicate_address_detection = a;
|
||||
|
||||
n->duplicate_address_detection = a;
|
||||
TAKE_PTR(n);
|
||||
return 0;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user