udev/cdrom_id: use a macro to initialize context

c was initialized unconditionally, but one has to look at the function
body to understand this. Let's make the whole thing shorter and more
direct.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek
2021-11-23 12:13:56 +01:00
parent 6d5ea0f127
commit a33bc79b99

View File

@@ -102,6 +102,12 @@ typedef struct Context {
uint64_t media_session_last_offset;
} Context;
#define CONTEXT_EMPTY { \
.fd = -1, \
.media_feature = _FEATURE_INVALID, \
.media_state = _MEDIA_STATE_INVALID, \
}
static void context_clear(Context *c) {
if (!c)
return;
@@ -110,16 +116,6 @@ static void context_clear(Context *c) {
free(c->drive_features);
}
static void context_init(Context *c) {
assert(c);
*c = (Context) {
.fd = -1,
.media_feature = _FEATURE_INVALID,
.media_state = _MEDIA_STATE_INVALID,
};
}
static bool drive_has_feature(const Context *c, Feature f) {
assert(c);
@@ -954,7 +950,7 @@ static int parse_argv(int argc, char *argv[]) {
}
static int run(int argc, char *argv[]) {
_cleanup_(context_clear) Context c;
_cleanup_(context_clear) Context c = CONTEXT_EMPTY;
int r;
log_set_target(LOG_TARGET_AUTO);
@@ -962,8 +958,6 @@ static int run(int argc, char *argv[]) {
log_parse_environment();
log_open();
context_init(&c);
r = parse_argv(argc, argv);
if (r <= 0)
return r;