Use initalization instead of explicit zeroing

Before, we would initialize many fields twice: first
by filling the structure with zeros, and then a second
time with the real values. We can let the compiler do
the job for us, avoiding one copy.

A downside of this patch is that text gets slightly
bigger. This is because all zero() calls are effectively
inlined:

$ size build/.libs/systemd
         text    data     bss     dec     hex filename
before 897737  107300    2560 1007597   f5fed build/.libs/systemd
after  897873  107300    2560 1007733   f6075 build/.libs/systemd

… actually less than 1‰.

A few asserts that the parameter is not null had to be removed. I
don't think this changes much, because first, it is quite unlikely
for the assert to fail, and second, an immediate SEGV is almost as
good as an assert.
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2013-03-24 19:59:00 -04:00
parent 8c62ecf1a9
commit b92bea5d2a
49 changed files with 392 additions and 554 deletions

View file

@ -160,9 +160,8 @@ int bus_execute_append_cpu_sched_priority(DBusMessageIter *i, const char *proper
if (c->cpu_sched_set)
n = c->cpu_sched_priority;
else {
struct sched_param p;
struct sched_param p = {};
zero(p);
if (sched_getparam(0, &p) >= 0)
n = p.sched_priority;
else
@ -280,9 +279,8 @@ int bus_execute_append_rlimits(DBusMessageIter *i, const char *property, void *d
if (c->rlimit[r])
u = (uint64_t) c->rlimit[r]->rlim_max;
else {
struct rlimit rl;
struct rlimit rl = {};
zero(rl);
getrlimit(r, &rl);
u = (uint64_t) rl.rlim_max;

View file

@ -203,13 +203,11 @@ static void bus_toggle_watch(DBusWatch *bus_watch, void *data) {
}
static int bus_timeout_arm(Manager *m, Watch *w) {
struct itimerspec its;
struct itimerspec its = {};
assert(m);
assert(w);
zero(its);
if (dbus_timeout_get_enabled(w->data.bus_timeout)) {
timespec_store(&its.it_value, dbus_timeout_get_interval(w->data.bus_timeout) * USEC_PER_MSEC);
its.it_interval = its.it_value;

View file

@ -477,7 +477,6 @@ static void device_shutdown(Manager *m) {
}
static int device_enumerate(Manager *m) {
struct epoll_event ev;
int r;
struct udev_enumerate *e = NULL;
struct udev_list_entry *item = NULL, *first = NULL;
@ -485,6 +484,8 @@ static int device_enumerate(Manager *m) {
assert(m);
if (!m->udev) {
struct epoll_event ev;
if (!(m->udev = udev_new()))
return -ENOMEM;

View file

@ -205,7 +205,10 @@ static int open_null_as(int flags, int nfd) {
static int connect_logger_as(const ExecContext *context, ExecOutput output, const char *ident, const char *unit_id, int nfd) {
int fd, r;
union sockaddr_union sa;
union sockaddr_union sa = {
.un.sun_family = AF_UNIX,
.un.sun_path = "/run/systemd/journal/stdout",
};
assert(context);
assert(output < _EXEC_OUTPUT_MAX);
@ -216,10 +219,6 @@ static int connect_logger_as(const ExecContext *context, ExecOutput output, cons
if (fd < 0)
return -errno;
zero(sa);
sa.un.sun_family = AF_UNIX;
strncpy(sa.un.sun_path, "/run/systemd/journal/stdout", sizeof(sa.un.sun_path));
r = connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path));
if (r < 0) {
close_nointr_nofail(fd);
@ -938,7 +937,7 @@ static int apply_seccomp(uint32_t *syscall_filter) {
int i;
unsigned n;
struct sock_filter *f;
struct sock_fprog prog;
struct sock_fprog prog = {};
assert(syscall_filter);
@ -970,7 +969,6 @@ static int apply_seccomp(uint32_t *syscall_filter) {
memcpy(f + (ELEMENTSOF(header) + 2*n), footer, sizeof(footer));
/* Third: install the filter */
zero(prog);
prog.len = ELEMENTSOF(header) + ELEMENTSOF(footer) + 2*n;
prog.filter = f;
if (prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, &prog) < 0)
@ -1210,10 +1208,9 @@ int exec_spawn(ExecCommand *command,
}
if (context->cpu_sched_set) {
struct sched_param param;
zero(param);
param.sched_priority = context->cpu_sched_priority;
struct sched_param param = {
.sched_priority = context->cpu_sched_priority,
};
r = sched_setscheduler(0,
context->cpu_sched_policy |
@ -1701,7 +1698,7 @@ int exec_context_load_environment(const ExecContext *c, char ***l) {
int k;
bool ignore = false;
char **p;
glob_t pglob;
glob_t pglob = {};
int count, n;
fn = *i;
@ -1721,7 +1718,6 @@ int exec_context_load_environment(const ExecContext *c, char ***l) {
}
/* Filename supports globbing, take all matching files */
zero(pglob);
errno = 0;
if (glob(fn, 0, NULL, &pglob) != 0) {
globfree(&pglob);

View file

@ -858,10 +858,12 @@ finish:
}
int job_start_timer(Job *j) {
struct itimerspec its;
struct epoll_event ev;
struct itimerspec its = {};
struct epoll_event ev = {
.data.ptr = &j->timer_watch,
.events = EPOLLIN,
};
int fd, r;
assert(j);
if (j->unit->job_timeout <= 0 ||
j->timer_watch.type == WATCH_JOB_TIMER)
@ -874,7 +876,6 @@ int job_start_timer(Job *j) {
goto fail;
}
zero(its);
timespec_store(&its.it_value, j->unit->job_timeout);
if (timerfd_settime(fd, 0, &its, NULL) < 0) {
@ -882,10 +883,6 @@ int job_start_timer(Job *j) {
goto fail;
}
zero(ev);
ev.data.ptr = &j->timer_watch;
ev.events = EPOLLIN;
if (epoll_ctl(j->manager->epoll_fd, EPOLL_CTL_ADD, fd, &ev) < 0) {
r = -errno;
goto fail;
@ -1064,15 +1061,14 @@ int job_deserialize(Job *j, FILE *f, FDSet *fds) {
}
int job_coldplug(Job *j) {
struct epoll_event ev;
struct epoll_event ev = {
.data.ptr = &j->timer_watch,
.events = EPOLLIN,
};
if (j->timer_watch.type != WATCH_JOB_TIMER)
return 0;
zero(ev);
ev.data.ptr = &j->timer_watch;
ev.events = EPOLLIN;
if (epoll_ctl(j->manager->epoll_fd, EPOLL_CTL_ADD, j->timer_watch.fd, &ev) < 0)
return -errno;

View file

@ -68,11 +68,9 @@ static const char * const variable_names[_VARIABLE_MAX] = {
};
int locale_setup(void) {
char *variables[_VARIABLE_MAX];
char *variables[_VARIABLE_MAX] = {};
int r = 0, i;
zero(variables);
if (detect_container(NULL) <= 0) {
r = parse_env_file("/proc/cmdline", WHITESPACE,
"locale.LANG", &variables[VARIABLE_LANG],

View file

@ -88,25 +88,26 @@ static int add_adresses(int fd, int if_loopback, unsigned *requests) {
union {
struct sockaddr sa;
struct sockaddr_nl nl;
} sa;
} sa = {
.nl.nl_family = AF_NETLINK,
};
union {
struct nlmsghdr header;
uint8_t buf[NLMSG_ALIGN(sizeof(struct nlmsghdr)) +
NLMSG_ALIGN(sizeof(struct ifaddrmsg)) +
RTA_LENGTH(sizeof(struct in6_addr))];
} request;
} request = {
.header.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg)),
.header.nlmsg_type = RTM_NEWADDR,
.header.nlmsg_flags = NLM_F_REQUEST|NLM_F_CREATE|NLM_F_ACK,
.header.nlmsg_seq = *requests + 1,
};
struct ifaddrmsg *ifaddrmsg;
uint32_t ipv4_address = htonl(INADDR_LOOPBACK);
int r;
zero(request);
request.header.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifaddrmsg));
request.header.nlmsg_type = RTM_NEWADDR;
request.header.nlmsg_flags = NLM_F_REQUEST|NLM_F_CREATE|NLM_F_ACK;
request.header.nlmsg_seq = *requests + 1;
ifaddrmsg = NLMSG_DATA(&request.header);
ifaddrmsg->ifa_family = AF_INET;
ifaddrmsg->ifa_prefixlen = 8;
@ -114,13 +115,11 @@ static int add_adresses(int fd, int if_loopback, unsigned *requests) {
ifaddrmsg->ifa_scope = RT_SCOPE_HOST;
ifaddrmsg->ifa_index = if_loopback;
r = add_rtattr(&request.header, sizeof(request), IFA_LOCAL, &ipv4_address, sizeof(ipv4_address));
r = add_rtattr(&request.header, sizeof(request), IFA_LOCAL,
&ipv4_address, sizeof(ipv4_address));
if (r < 0)
return r;
zero(sa);
sa.nl.nl_family = AF_NETLINK;
if (sendto_loop(fd, &request, request.header.nlmsg_len, 0, &sa.sa, sizeof(sa)) < 0)
return -errno;
(*requests)++;
@ -134,7 +133,8 @@ static int add_adresses(int fd, int if_loopback, unsigned *requests) {
ifaddrmsg->ifa_family = AF_INET6;
ifaddrmsg->ifa_prefixlen = 128;
r = add_rtattr(&request.header, sizeof(request), IFA_LOCAL, &in6addr_loopback, sizeof(in6addr_loopback));
r = add_rtattr(&request.header, sizeof(request), IFA_LOCAL,
&in6addr_loopback, sizeof(in6addr_loopback));
if (r < 0)
return r;
@ -149,31 +149,29 @@ static int start_interface(int fd, int if_loopback, unsigned *requests) {
union {
struct sockaddr sa;
struct sockaddr_nl nl;
} sa;
} sa = {
.nl.nl_family = AF_NETLINK,
};
union {
struct nlmsghdr header;
uint8_t buf[NLMSG_ALIGN(sizeof(struct nlmsghdr)) +
NLMSG_ALIGN(sizeof(struct ifinfomsg))];
} request;
} request = {
.header.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifinfomsg)),
.header.nlmsg_type = RTM_NEWLINK,
.header.nlmsg_flags = NLM_F_REQUEST|NLM_F_ACK,
.header.nlmsg_seq = *requests + 1,
};
struct ifinfomsg *ifinfomsg;
zero(request);
request.header.nlmsg_len = NLMSG_LENGTH(sizeof(struct ifinfomsg));
request.header.nlmsg_type = RTM_NEWLINK;
request.header.nlmsg_flags = NLM_F_REQUEST|NLM_F_ACK;
request.header.nlmsg_seq = *requests + 1;
ifinfomsg = NLMSG_DATA(&request.header);
ifinfomsg->ifi_family = AF_UNSPEC;
ifinfomsg->ifi_index = if_loopback;
ifinfomsg->ifi_flags = IFF_UP;
ifinfomsg->ifi_change = IFF_UP;
zero(sa);
sa.nl.nl_family = AF_NETLINK;
if (sendto_loop(fd, &request, request.header.nlmsg_len, 0, &sa.sa, sizeof(sa)) < 0)
return -errno;
@ -234,7 +232,10 @@ static int check_loopback(void) {
union {
struct sockaddr sa;
struct sockaddr_in in;
} sa;
} sa = {
.in.sin_family = AF_INET,
.in.sin_addr.s_addr = INADDR_LOOPBACK,
};
/* If we failed to set up the loop back device, check whether
* it might already be set up */
@ -243,10 +244,6 @@ static int check_loopback(void) {
if (fd < 0)
return -errno;
zero(sa);
sa.in.sin_family = AF_INET;
sa.in.sin_addr.s_addr = INADDR_LOOPBACK;
if (bind(fd, &sa.sa, sizeof(sa.in)) >= 0)
r = 1;
else
@ -260,7 +257,9 @@ int loopback_setup(void) {
union {
struct sockaddr sa;
struct sockaddr_nl nl;
} sa;
} sa = {
.nl.nl_family = AF_NETLINK,
};
unsigned requests = 0, i;
int _cleanup_close_ fd = -1;
bool eperm = false;
@ -274,8 +273,6 @@ int loopback_setup(void) {
if (fd < 0)
return -errno;
zero(sa);
sa.nl.nl_family = AF_NETLINK;
if (bind(fd, &sa.sa, sizeof(sa)) < 0) {
r = -errno;
goto error;

View file

@ -107,13 +107,13 @@ _noreturn_ static void crash(int sig) {
if (!arg_dump_core)
log_error("Caught <%s>, not dumping core.", signal_to_string(sig));
else {
struct sigaction sa;
struct sigaction sa = {
.sa_handler = nop_handler,
.sa_flags = SA_NOCLDSTOP|SA_RESTART,
};
pid_t pid;
/* We want to wait for the core process, hence let's enable SIGCHLD */
zero(sa);
sa.sa_handler = nop_handler;
sa.sa_flags = SA_NOCLDSTOP|SA_RESTART;
assert_se(sigaction(SIGCHLD, &sa, NULL) == 0);
pid = fork();
@ -121,7 +121,7 @@ _noreturn_ static void crash(int sig) {
log_error("Caught <%s>, cannot fork for core dump: %s", signal_to_string(sig), strerror(errno));
else if (pid == 0) {
struct rlimit rl;
struct rlimit rl = {};
/* Enable default signal handler for core dump */
zero(sa);
@ -129,7 +129,6 @@ _noreturn_ static void crash(int sig) {
assert_se(sigaction(sig, &sa, NULL) == 0);
/* Don't limit the core dump size */
zero(rl);
rl.rlim_cur = RLIM_INFINITY;
rl.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &rl);
@ -162,16 +161,16 @@ _noreturn_ static void crash(int sig) {
chvt(arg_crash_chvt);
if (arg_crash_shell) {
struct sigaction sa;
struct sigaction sa = {
.sa_handler = SIG_IGN,
.sa_flags = SA_NOCLDSTOP|SA_NOCLDWAIT|SA_RESTART,
};
pid_t pid;
log_info("Executing crash shell in 10s...");
sleep(10);
/* Let the kernel reap children for us */
zero(sa);
sa.sa_handler = SIG_IGN;
sa.sa_flags = SA_NOCLDSTOP|SA_NOCLDWAIT|SA_RESTART;
assert_se(sigaction(SIGCHLD, &sa, NULL) == 0);
pid = fork();
@ -193,12 +192,10 @@ _noreturn_ static void crash(int sig) {
}
static void install_crash_handler(void) {
struct sigaction sa;
zero(sa);
sa.sa_handler = crash;
sa.sa_flags = SA_NODEFER;
struct sigaction sa = {
.sa_handler = crash,
.sa_flags = SA_NODEFER,
};
sigaction_many(&sa, SIGNALS_CRASH_HANDLER, -1);
}

View file

@ -93,12 +93,15 @@ static int manager_setup_notify(Manager *m) {
union {
struct sockaddr sa;
struct sockaddr_un un;
} sa;
struct epoll_event ev;
} sa = {
.sa.sa_family = AF_UNIX,
};
struct epoll_event ev = {
.events = EPOLLIN,
.data.ptr = &m->notify_watch,
};
int one = 1, r;
assert(m);
m->notify_watch.type = WATCH_NOTIFY;
m->notify_watch.fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (m->notify_watch.fd < 0) {
@ -106,9 +109,6 @@ static int manager_setup_notify(Manager *m) {
return -errno;
}
zero(sa);
sa.sa.sa_family = AF_UNIX;
if (getpid() != 1 || detect_container(NULL) > 0)
snprintf(sa.un.sun_path, sizeof(sa.un.sun_path), NOTIFY_SOCKET "/%llu", random_ull());
else
@ -129,10 +129,6 @@ static int manager_setup_notify(Manager *m) {
return -errno;
}
zero(ev);
ev.events = EPOLLIN;
ev.data.ptr = &m->notify_watch;
r = epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->notify_watch.fd, &ev);
if (r < 0) {
log_error("Failed to add notification socket fd to epoll: %m");
@ -150,16 +146,14 @@ static int manager_setup_notify(Manager *m) {
}
static int manager_jobs_in_progress_mod_timer(Manager *m) {
struct itimerspec its;
struct itimerspec its = {
.it_value.tv_sec = JOBS_IN_PROGRESS_WAIT_SEC,
.it_interval.tv_sec = JOBS_IN_PROGRESS_PERIOD_SEC,
};
if (m->jobs_in_progress_watch.type != WATCH_JOBS_IN_PROGRESS)
return 0;
zero(its);
its.it_value.tv_sec = JOBS_IN_PROGRESS_WAIT_SEC;
its.it_interval.tv_sec = JOBS_IN_PROGRESS_PERIOD_SEC;
if (timerfd_settime(m->jobs_in_progress_watch.fd, 0, &its, NULL) < 0)
return -errno;
@ -167,11 +161,12 @@ static int manager_jobs_in_progress_mod_timer(Manager *m) {
}
static int manager_watch_jobs_in_progress(Manager *m) {
struct epoll_event ev;
struct epoll_event ev = {
.events = EPOLLIN,
.data.ptr = &m->jobs_in_progress_watch,
};
int r;
assert(m);
if (m->jobs_in_progress_watch.type != WATCH_INVALID)
return 0;
@ -189,10 +184,6 @@ static int manager_watch_jobs_in_progress(Manager *m) {
goto err;
}
zero(ev);
ev.events = EPOLLIN;
ev.data.ptr = &m->jobs_in_progress_watch;
if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->jobs_in_progress_watch.fd, &ev) < 0) {
log_error("Failed to add jobs progress timer fd to epoll: %m");
r = -errno;
@ -287,10 +278,18 @@ static void manager_print_jobs_in_progress(Manager *m) {
}
static int manager_setup_time_change(Manager *m) {
struct epoll_event ev;
struct itimerspec its;
struct epoll_event ev = {
.events = EPOLLIN,
.data.ptr = &m->time_change_watch,
};
/* We only care for the cancellation event, hence we set the
* timeout to the latest possible value. */
struct itimerspec its = {
.it_value.tv_sec = TIME_T_MAX,
};
assert_cc(sizeof(time_t) == sizeof(TIME_T_MAX));
assert(m);
assert(m->time_change_watch.type == WATCH_INVALID);
/* Uses TFD_TIMER_CANCEL_ON_SET to get notifications whenever
@ -303,13 +302,6 @@ static int manager_setup_time_change(Manager *m) {
return -errno;
}
zero(its);
/* We only care for the cancellation event, hence we set the
* timeout to the latest possible value. */
assert_cc(sizeof(time_t) == sizeof(TIME_T_MAX));
its.it_value.tv_sec = TIME_T_MAX;
if (timerfd_settime(m->time_change_watch.fd, TFD_TIMER_ABSTIME|TFD_TIMER_CANCEL_ON_SET, &its, NULL) < 0) {
log_debug("Failed to set up TFD_TIMER_CANCEL_ON_SET, ignoring: %m");
close_nointr_nofail(m->time_change_watch.fd);
@ -317,10 +309,6 @@ static int manager_setup_time_change(Manager *m) {
return 0;
}
zero(ev);
ev.events = EPOLLIN;
ev.data.ptr = &m->time_change_watch;
if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->time_change_watch.fd, &ev) < 0) {
log_error("Failed to add timer change fd to epoll: %m");
return -errno;
@ -360,15 +348,18 @@ static int enable_special_signals(Manager *m) {
static int manager_setup_signals(Manager *m) {
sigset_t mask;
struct epoll_event ev;
struct sigaction sa;
struct epoll_event ev = {
.events = EPOLLIN,
.data.ptr = &m->signal_watch,
};
struct sigaction sa = {
.sa_handler = SIG_DFL,
.sa_flags = SA_NOCLDSTOP|SA_RESTART,
};
assert(m);
/* We are not interested in SIGSTOP and friends. */
zero(sa);
sa.sa_handler = SIG_DFL;
sa.sa_flags = SA_NOCLDSTOP|SA_RESTART;
assert_se(sigaction(SIGCHLD, &sa, NULL) == 0);
assert_se(sigemptyset(&mask) == 0);
@ -410,10 +401,6 @@ static int manager_setup_signals(Manager *m) {
if (m->signal_watch.fd < 0)
return -errno;
zero(ev);
ev.events = EPOLLIN;
ev.data.ptr = &m->signal_watch;
if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->signal_watch.fd, &ev) < 0)
return -errno;
@ -1184,30 +1171,29 @@ static int manager_process_notify_fd(Manager *m) {
for (;;) {
char buf[4096];
struct msghdr msghdr;
struct iovec iovec;
struct ucred *ucred;
struct iovec iovec = {
.iov_base = buf,
.iov_len = sizeof(buf)-1,
};
union {
struct cmsghdr cmsghdr;
uint8_t buf[CMSG_SPACE(sizeof(struct ucred))];
} control;
} control = {};
struct msghdr msghdr = {
.msg_iov = &iovec,
.msg_iovlen = 1,
.msg_control = &control,
.msg_controllen = sizeof(control),
};
struct ucred *ucred;
Unit *u;
char _cleanup_strv_free_ **tags = NULL;
zero(iovec);
iovec.iov_base = buf;
iovec.iov_len = sizeof(buf)-1;
zero(control);
zero(msghdr);
msghdr.msg_iov = &iovec;
msghdr.msg_iovlen = 1;
msghdr.msg_control = &control;
msghdr.msg_controllen = sizeof(control);
n = recvmsg(m->notify_watch.fd, &msghdr, MSG_DONTWAIT);
if (n <= 0) {
if (n >= 0)
if (n == 0)
return -EIO;
if (errno == EAGAIN || errno == EINTR)
@ -1254,12 +1240,10 @@ static int manager_dispatch_sigchld(Manager *m) {
assert(m);
for (;;) {
siginfo_t si;
siginfo_t si = {};
Unit *u;
int r;
zero(si);
/* First we call waitd() for a PID and do not reap the
* zombie. That way we can still access /proc/$PID for
* it while it is a zombie. */

View file

@ -293,7 +293,7 @@ static int mount_add_requires_mounts_links(Mount *m) {
}
static char* mount_test_option(const char *haystack, const char *needle) {
struct mntent me;
struct mntent me = { .mnt_opts = (char*) haystack };
assert(needle);
@ -303,9 +303,6 @@ static char* mount_test_option(const char *haystack, const char *needle) {
if (!haystack)
return NULL;
zero(me);
me.mnt_opts = (char*) haystack;
return hasmntopt(&me, needle);
}
@ -1706,10 +1703,14 @@ static void mount_shutdown(Manager *m) {
static int mount_enumerate(Manager *m) {
int r;
struct epoll_event ev;
assert(m);
if (!m->proc_self_mountinfo) {
struct epoll_event ev = {
.events = EPOLLPRI,
.data.ptr = &m->mount_watch,
};
m->proc_self_mountinfo = fopen("/proc/self/mountinfo", "re");
if (!m->proc_self_mountinfo)
return -errno;
@ -1717,10 +1718,6 @@ static int mount_enumerate(Manager *m) {
m->mount_watch.type = WATCH_MOUNT;
m->mount_watch.fd = fileno(m->proc_self_mountinfo);
zero(ev);
ev.events = EPOLLPRI;
ev.data.ptr = &m->mount_watch;
if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->mount_watch.fd, &ev) < 0)
return -errno;
}

View file

@ -3446,7 +3446,7 @@ static int service_enumerate(Manager *m) {
unsigned i;
DIR _cleanup_closedir_ *d = NULL;
char _cleanup_free_ *path = NULL, *fpath = NULL, *name = NULL;
Set *runlevel_services[ELEMENTSOF(rcnd_table)];
Set *runlevel_services[ELEMENTSOF(rcnd_table)] = {};
Set _cleanup_set_free_ *shutdown_services = NULL;
Unit *service;
Iterator j;
@ -3457,8 +3457,6 @@ static int service_enumerate(Manager *m) {
if (m->running_as != SYSTEMD_SYSTEM)
return 0;
zero(runlevel_services);
STRV_FOREACH(p, m->lookup_paths.sysvrcnd_path)
for (i = 0; i < ELEMENTSOF(rcnd_table); i ++) {
struct dirent *de;

View file

@ -1242,10 +1242,14 @@ static void swap_shutdown(Manager *m) {
static int swap_enumerate(Manager *m) {
int r;
struct epoll_event ev;
assert(m);
if (!m->proc_swaps) {
struct epoll_event ev = {
.events = EPOLLPRI,
.data.ptr = &m->swap_watch,
};
m->proc_swaps = fopen("/proc/swaps", "re");
if (!m->proc_swaps)
return (errno == ENOENT) ? 0 : -errno;
@ -1253,10 +1257,6 @@ static int swap_enumerate(Manager *m) {
m->swap_watch.type = WATCH_SWAP;
m->swap_watch.fd = fileno(m->proc_swaps);
zero(ev);
ev.events = EPOLLPRI;
ev.data.ptr = &m->swap_watch;
if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->swap_watch.fd, &ev) < 0)
return -errno;
}

View file

@ -381,7 +381,13 @@ static int delete_loopback(const char *device) {
static int delete_dm(dev_t devnum) {
int _cleanup_close_ fd = -1;
int r;
struct dm_ioctl dm;
struct dm_ioctl dm = {
.version = {DM_VERSION_MAJOR,
DM_VERSION_MINOR,
DM_VERSION_PATCHLEVEL},
.data_size = sizeof(dm),
.dev = devnum,
};
assert(major(devnum) != 0);
@ -389,14 +395,6 @@ static int delete_dm(dev_t devnum) {
if (fd < 0)
return -errno;
zero(dm);
dm.version[0] = DM_VERSION_MAJOR;
dm.version[1] = DM_VERSION_MINOR;
dm.version[2] = DM_VERSION_PATCHLEVEL;
dm.data_size = sizeof(dm);
dm.dev = devnum;
r = ioctl(fd, DM_DEV_REMOVE, &dm);
return r >= 0 ? 0 : -errno;
}

View file

@ -1520,17 +1520,16 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
}
int unit_watch_fd(Unit *u, int fd, uint32_t events, Watch *w) {
struct epoll_event ev;
struct epoll_event ev = {
.data.ptr = w,
.events = events,
};
assert(u);
assert(fd >= 0);
assert(w);
assert(w->type == WATCH_INVALID || (w->type == WATCH_FD && w->fd == fd && w->data.unit == u));
zero(ev);
ev.data.ptr = w;
ev.events = events;
if (epoll_ctl(u->manager->epoll_fd,
w->type == WATCH_INVALID ? EPOLL_CTL_ADD : EPOLL_CTL_MOD,
fd,
@ -1578,7 +1577,7 @@ void unit_unwatch_pid(Unit *u, pid_t pid) {
}
int unit_watch_timer(Unit *u, clockid_t clock_id, bool relative, usec_t usec, Watch *w) {
struct itimerspec its;
struct itimerspec its = {};
int flags, fd;
bool ours;
@ -1603,8 +1602,6 @@ int unit_watch_timer(Unit *u, clockid_t clock_id, bool relative, usec_t usec, Wa
} else
assert_not_reached("Invalid watch type");
zero(its);
if (usec <= 0) {
/* Set absolute time in the past, but not 0, since we
* don't want to disarm the timer */
@ -1622,11 +1619,10 @@ int unit_watch_timer(Unit *u, clockid_t clock_id, bool relative, usec_t usec, Wa
goto fail;
if (w->type == WATCH_INVALID) {
struct epoll_event ev;
zero(ev);
ev.data.ptr = w;
ev.events = EPOLLIN;
struct epoll_event ev = {
.data.ptr = w,
.events = EPOLLIN,
};
if (epoll_ctl(u->manager->epoll_fd, EPOLL_CTL_ADD, fd, &ev) < 0)
goto fail;

View file

@ -461,10 +461,7 @@ int main(int argc, char *argv[]) {
k = crypt_load(cd, CRYPT_LUKS1, NULL);
if ((!opt_type && k < 0) || streq_ptr(opt_type, CRYPT_PLAIN)) {
struct crypt_params_plain params;
zero(params);
params.hash = hash;
struct crypt_params_plain params = { .hash = hash };
/* for CRYPT_PLAIN limit reads
* from keyfile to key length, and

View file

@ -152,7 +152,7 @@ static int show_status(DBusConnection *bus, char **args, unsigned n) {
const char *interface = "";
int r;
DBusMessageIter iter, sub, sub2, sub3;
StatusInfo info;
StatusInfo info = {};
assert(args);
@ -176,7 +176,6 @@ static int show_status(DBusConnection *bus, char **args, unsigned n) {
return -EIO;
}
zero(info);
dbus_message_iter_recurse(&iter, &sub);
while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) {

View file

@ -719,7 +719,7 @@ void server_driver_message(Server *s, sd_id128_t message_id, const char *format,
struct iovec iovec[N_IOVEC_META_FIELDS + 4];
int n = 0;
va_list ap;
struct ucred ucred;
struct ucred ucred = {};
assert(s);
assert(format);
@ -740,7 +740,6 @@ void server_driver_message(Server *s, sd_id128_t message_id, const char *format,
IOVEC_SET_STRING(iovec[n++], mid);
}
zero(ucred);
ucred.pid = getpid();
ucred.uid = getuid();
ucred.gid = getgid();
@ -1356,17 +1355,16 @@ static int server_open_sync_timer(Server *s) {
int server_schedule_sync(Server *s) {
int r;
struct itimerspec sync_timer_enable;
assert(s);
if (s->sync_scheduled)
return 0;
if (s->sync_interval_usec) {
zero(sync_timer_enable);
sync_timer_enable.it_value.tv_sec = s->sync_interval_usec / USEC_PER_SEC;
sync_timer_enable.it_value.tv_nsec = s->sync_interval_usec % MSEC_PER_SEC;
struct itimerspec sync_timer_enable = {
.it_value.tv_sec = s->sync_interval_usec / USEC_PER_SEC,
.it_value.tv_nsec = s->sync_interval_usec % MSEC_PER_SEC,
};
r = timerfd_settime(s->sync_timer_fd, 0, &sync_timer_enable, NULL);
if (r < 0)

View file

@ -412,13 +412,16 @@ fail:
}
int server_open_stdout_socket(Server *s) {
union sockaddr_union sa;
int r;
struct epoll_event ev;
assert(s);
if (s->stdout_fd < 0) {
union sockaddr_union sa = {
.un.sun_family = AF_UNIX,
.un.sun_path = "/run/systemd/journal/stdout",
};
s->stdout_fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (s->stdout_fd < 0) {
@ -426,10 +429,6 @@ int server_open_stdout_socket(Server *s) {
return -errno;
}
zero(sa);
sa.un.sun_family = AF_UNIX;
strncpy(sa.un.sun_path, "/run/systemd/journal/stdout", sizeof(sa.un.sun_path));
unlink(sa.un.sun_path);
r = bind(s->stdout_fd, &sa.sa, offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path));

View file

@ -34,28 +34,28 @@
#define WARN_FORWARD_SYSLOG_MISSED_USEC (30 * USEC_PER_SEC)
static void forward_syslog_iovec(Server *s, const struct iovec *iovec, unsigned n_iovec, struct ucred *ucred, struct timeval *tv) {
struct msghdr msghdr;
union sockaddr_union sa = {
.un.sun_family = AF_UNIX,
.un.sun_path = "/run/systemd/journal/syslog",
};
struct msghdr msghdr = {
.msg_iov = (struct iovec *) iovec,
.msg_iovlen = n_iovec,
.msg_name = &sa,
.msg_namelen = offsetof(union sockaddr_union, un.sun_path)
+ sizeof("/run/systemd/journal/syslog") - 1,
};
struct cmsghdr *cmsg;
union {
struct cmsghdr cmsghdr;
uint8_t buf[CMSG_SPACE(sizeof(struct ucred))];
} control;
union sockaddr_union sa;
assert(s);
assert(iovec);
assert(n_iovec > 0);
zero(msghdr);
msghdr.msg_iov = (struct iovec*) iovec;
msghdr.msg_iovlen = n_iovec;
zero(sa);
sa.un.sun_family = AF_UNIX;
strncpy(sa.un.sun_path, "/run/systemd/journal/syslog", sizeof(sa.un.sun_path));
msghdr.msg_name = &sa;
msghdr.msg_namelen = offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path);
if (ucred) {
zero(control);
msghdr.msg_control = &control;
@ -412,13 +412,16 @@ void server_process_syslog_message(
}
int server_open_syslog_socket(Server *s) {
union sockaddr_union sa;
int one, r;
struct epoll_event ev;
assert(s);
if (s->syslog_fd < 0) {
union sockaddr_union sa = {
.un.sun_family = AF_UNIX,
.un.sun_path = "/dev/log",
};
s->syslog_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
if (s->syslog_fd < 0) {
@ -426,10 +429,6 @@ int server_open_syslog_socket(Server *s) {
return -errno;
}
zero(sa);
sa.un.sun_family = AF_UNIX;
strncpy(sa.un.sun_path, "/dev/log", sizeof(sa.un.sun_path));
unlink(sa.un.sun_path);
r = bind(s->syslog_fd, &sa.sa, offsetof(union sockaddr_union, un.sun_path) + strlen(sa.un.sun_path));

View file

@ -986,16 +986,14 @@ int bus_socket_read_message(sd_bus *bus, sd_bus_message **m) {
int bus_socket_process_opening(sd_bus *b) {
int error = 0;
socklen_t slen = sizeof(error);
struct pollfd p;
struct pollfd p = {
.fd = b->output_fd,
.events = POLLOUT,
};
int r;
assert(b);
assert(b->state == BUS_OPENING);
zero(p);
p.fd = b->output_fd;
p.events = POLLOUT;
r = poll(&p, 1, 0);
if (r < 0)
return -errno;

View file

@ -436,8 +436,11 @@ static int parse_unix_address(sd_bus *b, const char **p, char **guid) {
static int parse_tcp_address(sd_bus *b, const char **p, char **guid) {
_cleanup_free_ char *host = NULL, *port = NULL, *family = NULL;
struct addrinfo hints, *result;
int r;
struct addrinfo *result, hints = {
.ai_socktype = SOCK_STREAM,
.ai_flags = AI_ADDRCONFIG,
};
assert(b);
assert(p);
@ -475,10 +478,6 @@ static int parse_tcp_address(sd_bus *b, const char **p, char **guid) {
if (!host || !port)
return -EINVAL;
zero(hints);
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = AI_ADDRCONFIG;
if (family) {
if (streq(family, "ipv4"))
hints.ai_family = AF_INET;
@ -1937,7 +1936,7 @@ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) {
}
static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec) {
struct pollfd p[2];
struct pollfd p[2] = {};
int r, e, n;
struct timespec ts;
usec_t until, m;
@ -1968,9 +1967,7 @@ static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec) {
if (timeout_usec != (uint64_t) -1 && (m == (uint64_t) -1 || timeout_usec < m))
m = timeout_usec;
zero(p);
p[0].fd = bus->input_fd;
if (bus->output_fd == bus->input_fd) {
p[0].events = e;
n = 1;

View file

@ -158,7 +158,7 @@ static int show_status(DBusConnection *bus, char **args, unsigned n) {
const char *interface = "";
int r;
DBusMessageIter iter, sub, sub2, sub3;
StatusInfo info;
StatusInfo info = {};
assert(args);
@ -182,7 +182,6 @@ static int show_status(DBusConnection *bus, char **args, unsigned n) {
return -EIO;
}
zero(info);
dbus_message_iter_recurse(&iter, &sub);
while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) {

View file

@ -1011,7 +1011,7 @@ static DBusHandlerResult locale_message_handler(
dbus_bool_t interactive;
DBusMessageIter iter;
bool modified = false;
bool passed[_PROP_MAX];
bool passed[_PROP_MAX] = {};
int p;
if (!dbus_message_iter_init(message, &iter))
@ -1033,8 +1033,6 @@ static DBusHandlerResult locale_message_handler(
dbus_message_iter_get_basic(&iter, &interactive);
zero(passed);
/* Check whether a variable changed and if so valid */
STRV_FOREACH(i, l) {
bool valid = false;

View file

@ -834,17 +834,13 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo
const char *interface = "";
int r;
DBusMessageIter iter, sub, sub2, sub3;
SessionStatusInfo session_info;
UserStatusInfo user_info;
SeatStatusInfo seat_info;
SessionStatusInfo session_info = {};
UserStatusInfo user_info = {};
SeatStatusInfo seat_info = {};
assert(path);
assert(new_line);
zero(session_info);
zero(user_info);
zero(seat_info);
r = bus_method_call_with_reply(
bus,
"org.freedesktop.login1",

View file

@ -292,7 +292,7 @@ int inhibitor_create_fifo(Inhibitor *i) {
/* Open reading side */
if (i->fifo_fd < 0) {
struct epoll_event ev;
struct epoll_event ev = {};
i->fifo_fd = open(i->fifo_path, O_RDONLY|O_CLOEXEC|O_NDELAY);
if (i->fifo_fd < 0)
@ -302,7 +302,6 @@ int inhibitor_create_fifo(Inhibitor *i) {
if (r < 0)
return r;
zero(ev);
ev.events = 0;
ev.data.u32 = FD_OTHER_BASE + i->fifo_fd;

View file

@ -898,7 +898,7 @@ int session_create_fifo(Session *s) {
/* Open reading side */
if (s->fifo_fd < 0) {
struct epoll_event ev;
struct epoll_event ev = {};
s->fifo_fd = open(s->fifo_path, O_RDONLY|O_CLOEXEC|O_NDELAY);
if (s->fifo_fd < 0)
@ -908,7 +908,6 @@ int session_create_fifo(Session *s) {
if (r < 0)
return r;
zero(ev);
ev.events = 0;
ev.data.u32 = FD_OTHER_BASE + s->fifo_fd;

View file

@ -1174,7 +1174,10 @@ static void manager_dispatch_other(Manager *m, int fd) {
static int manager_connect_bus(Manager *m) {
DBusError error;
int r;
struct epoll_event ev;
struct epoll_event ev = {
.events = EPOLLIN,
.data.u32 = FD_BUS,
};
assert(m);
assert(!m->bus);
@ -1230,10 +1233,6 @@ static int manager_connect_bus(Manager *m) {
goto fail;
}
zero(ev);
ev.events = EPOLLIN;
ev.data.u32 = FD_BUS;
if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->bus_fd, &ev) < 0)
goto fail;
@ -1246,7 +1245,10 @@ fail:
}
static int manager_connect_console(Manager *m) {
struct epoll_event ev;
struct epoll_event ev = {
.events = 0,
.data.u32 = FD_CONSOLE,
};
assert(m);
assert(m->console_active_fd < 0);
@ -1271,10 +1273,6 @@ static int manager_connect_console(Manager *m) {
return -errno;
}
zero(ev);
ev.events = 0;
ev.data.u32 = FD_CONSOLE;
if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->console_active_fd, &ev) < 0)
return -errno;
@ -1282,8 +1280,11 @@ static int manager_connect_console(Manager *m) {
}
static int manager_connect_udev(Manager *m) {
struct epoll_event ev;
int r;
struct epoll_event ev = {
.events = EPOLLIN,
.data.u32 = FD_SEAT_UDEV,
};
assert(m);
assert(!m->udev_seat_monitor);
@ -1304,9 +1305,6 @@ static int manager_connect_udev(Manager *m) {
m->udev_seat_fd = udev_monitor_get_fd(m->udev_seat_monitor);
zero(ev);
ev.events = EPOLLIN;
ev.data.u32 = FD_SEAT_UDEV;
if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->udev_seat_fd, &ev) < 0)
return -errno;
@ -1447,7 +1445,7 @@ int manager_get_idle_hint(Manager *m, dual_timestamp *t) {
int manager_dispatch_idle_action(Manager *m) {
struct dual_timestamp since;
struct itimerspec its;
struct itimerspec its = {};
int r;
usec_t n;
@ -1459,7 +1457,6 @@ int manager_dispatch_idle_action(Manager *m) {
goto finish;
}
zero(its);
n = now(CLOCK_MONOTONIC);
r = manager_get_idle_hint(m, &since);
@ -1482,7 +1479,10 @@ int manager_dispatch_idle_action(Manager *m) {
}
if (m->idle_action_fd < 0) {
struct epoll_event ev;
struct epoll_event ev = {
.events = EPOLLIN,
.data.u32 = FD_IDLE_ACTION,
};
m->idle_action_fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK|TFD_CLOEXEC);
if (m->idle_action_fd < 0) {
@ -1491,10 +1491,6 @@ int manager_dispatch_idle_action(Manager *m) {
goto finish;
}
zero(ev);
ev.events = EPOLLIN;
ev.data.u32 = FD_IDLE_ACTION;
if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->idle_action_fd, &ev) < 0) {
log_error("Failed to add idle action timer to epoll: %m");
r = -errno;

View file

@ -256,13 +256,15 @@ static bool check_user_lists(
}
static int get_seat_from_display(const char *display, const char **seat, uint32_t *vtnr) {
char *p = NULL;
char _cleanup_free_ *p = NULL;
int r;
int fd;
union sockaddr_union sa;
int _cleanup_close_ fd = -1;
union sockaddr_union sa = {
.un.sun_family = AF_UNIX,
};
struct ucred ucred;
socklen_t l;
char *tty;
char _cleanup_free_ *tty = NULL;
int v;
assert(display);
@ -277,27 +279,17 @@ static int get_seat_from_display(const char *display, const char **seat, uint32_
r = socket_from_display(display, &p);
if (r < 0)
return r;
strncpy(sa.un.sun_path, p, sizeof(sa.un.sun_path)-1);
fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0);
if (fd < 0) {
free(p);
if (fd < 0)
return -errno;
}
zero(sa);
sa.un.sun_family = AF_UNIX;
strncpy(sa.un.sun_path, p, sizeof(sa.un.sun_path)-1);
free(p);
if (connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path)) < 0) {
close_nointr_nofail(fd);
if (connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path)) < 0)
return -errno;
}
l = sizeof(ucred);
r = getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &ucred, &l);
close_nointr_nofail(fd);
if (r < 0)
return -errno;
@ -306,8 +298,6 @@ static int get_seat_from_display(const char *display, const char **seat, uint32_
return r;
v = vtnr_from_tty(tty);
free(tty);
if (v < 0)
return v;
else if (v == 0)

View file

@ -674,8 +674,11 @@ static int setup_kmsg(const char *dest, int kmsg_socket) {
union {
struct cmsghdr cmsghdr;
uint8_t buf[CMSG_SPACE(sizeof(int))];
} control;
struct msghdr mh;
} control = {};
struct msghdr mh = {
.msg_control = &control,
.msg_controllen = sizeof(control),
};
struct cmsghdr *cmsg;
assert(dest);
@ -716,12 +719,6 @@ static int setup_kmsg(const char *dest, int kmsg_socket) {
return -errno;
}
zero(mh);
zero(control);
mh.msg_control = &control;
mh.msg_controllen = sizeof(control);
cmsg = CMSG_FIRSTHDR(&mh);
cmsg->cmsg_level = SOL_SOCKET;
cmsg->cmsg_type = SCM_RIGHTS;

View file

@ -64,7 +64,7 @@ PyDoc_STRVAR(MonotonicType__doc__,
static PyStructSequence_Field MonotonicType_fields[] = {
{(char*) "timestamp", (char*) "Time"},
{(char*) "bootid", (char*) "Unique identifier of the boot"},
{NULL, NULL}
{} /* Sentinel */
};
static PyStructSequence_Desc Monotonic_desc = {
@ -898,7 +898,7 @@ static PyGetSetDef Reader_getsetters[] = {
NULL,
(char*) closed__doc__,
NULL},
{NULL}
{} /* Sentinel */
};
static PyMethodDef Reader_methods[] = {
@ -927,7 +927,7 @@ static PyMethodDef Reader_methods[] = {
{"test_cursor", (PyCFunction) Reader_test_cursor, METH_VARARGS, Reader_test_cursor__doc__},
{"query_unique", (PyCFunction) Reader_query_unique, METH_VARARGS, Reader_query_unique__doc__},
{"get_catalog", (PyCFunction) Reader_get_catalog, METH_NOARGS, Reader_get_catalog__doc__},
{NULL} /* Sentinel */
{} /* Sentinel */
};
static PyTypeObject ReaderType = {

View file

@ -75,10 +75,7 @@ static usec_t starttime;
#define PTR_TO_SECTOR(p) (PTR_TO_ULONG(p)-1)
static int btrfs_defrag(int fd) {
struct btrfs_ioctl_vol_args data;
zero(data);
data.fd = fd;
struct btrfs_ioctl_vol_args data = { .fd = fd };
return ioctl(fd, BTRFS_IOC_DEFRAG, &data);
}
@ -186,11 +183,10 @@ static unsigned long fd_first_block(int fd) {
struct {
struct fiemap fiemap;
struct fiemap_extent extent;
} data;
zero(data);
data.fiemap.fm_length = ~0ULL;
data.fiemap.fm_extent_count = 1;
} data = {
.fiemap.fm_length = ~0ULL,
.fiemap.fm_extent_count = 1,
};
if (ioctl(fd, FS_IOC_FIEMAP, &data) < 0)
return 0;
@ -238,7 +234,7 @@ static int collect(const char *root) {
FD_INOTIFY, /* We get notifications to quit early via this fd */
_FD_MAX
};
struct pollfd pollfd[_FD_MAX];
struct pollfd pollfd[_FD_MAX] = {};
int fanotify_fd = -1, signal_fd = -1, inotify_fd = -1, r = 0;
pid_t my_pid;
Hashmap *files = NULL;
@ -314,7 +310,6 @@ static int collect(const char *root) {
my_pid = getpid();
zero(pollfd);
pollfd[FD_FANOTIFY].fd = fanotify_fd;
pollfd[FD_FANOTIFY].events = POLLIN;
pollfd[FD_SIGNAL].fd = signal_fd;

View file

@ -129,10 +129,9 @@ int main(int argc, char *argv[]) {
}
while (!hashmap_isempty(pids)) {
siginfo_t si;
siginfo_t si = {};
char *s;
zero(si);
if (waitid(P_ALL, 0, &si, WEXITED) < 0) {
if (errno == EINTR)

View file

@ -41,14 +41,14 @@ static int send_on_socket(int fd, const char *socket_name, const void *packet, s
union {
struct sockaddr sa;
struct sockaddr_un un;
} sa;
} sa = {
.un.sun_family = AF_UNIX,
};
assert(fd >= 0);
assert(socket_name);
assert(packet);
zero(sa);
sa.un.sun_family = AF_UNIX;
strncpy(sa.un.sun_path, socket_name, sizeof(sa.un.sun_path));
if (sendto(fd, packet, size, MSG_NOSIGNAL, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(socket_name)) < 0) {

View file

@ -109,7 +109,6 @@ int ask_password_tty(
}
zero(pollfd);
pollfd[POLL_TTY].fd = ttyfd >= 0 ? ttyfd : STDIN_FILENO;
pollfd[POLL_TTY].events = POLLIN;
pollfd[POLL_INOTIFY].fd = notify;
@ -248,7 +247,9 @@ static int create_socket(char **name) {
union {
struct sockaddr sa;
struct sockaddr_un un;
} sa;
} sa = {
.un.sun_family = AF_UNIX,
};
int one = 1, r;
char *c;
@ -260,8 +261,6 @@ static int create_socket(char **name) {
return -errno;
}
zero(sa);
sa.un.sun_family = AF_UNIX;
snprintf(sa.un.sun_path, sizeof(sa.un.sun_path)-1, "/run/systemd/ask-password/sck.%llu", random_ull());
RUN_WITH_UMASK(0177) {

View file

@ -45,7 +45,7 @@ typedef struct EpollData {
static dbus_bool_t add_watch(DBusWatch *watch, void *data) {
EpollData _cleanup_free_ *e = NULL;
struct epoll_event ev;
struct epoll_event ev = { .data.ptr = e };
assert(watch);
@ -57,9 +57,7 @@ static dbus_bool_t add_watch(DBusWatch *watch, void *data) {
e->object = watch;
e->is_timeout = false;
zero(ev);
ev.events = bus_flags_to_events(watch);
ev.data.ptr = e;
if (epoll_ctl(PTR_TO_INT(data), EPOLL_CTL_ADD, e->fd, &ev) < 0) {
@ -106,7 +104,7 @@ static void remove_watch(DBusWatch *watch, void *data) {
static void toggle_watch(DBusWatch *watch, void *data) {
EpollData *e;
struct epoll_event ev;
struct epoll_event ev = {};
assert(watch);
@ -114,21 +112,18 @@ static void toggle_watch(DBusWatch *watch, void *data) {
if (!e)
return;
zero(ev);
ev.events = bus_flags_to_events(watch);
ev.data.ptr = e;
ev.events = bus_flags_to_events(watch);
assert_se(epoll_ctl(PTR_TO_INT(data), EPOLL_CTL_MOD, e->fd, &ev) == 0);
}
static int timeout_arm(EpollData *e) {
struct itimerspec its;
struct itimerspec its = {};
assert(e);
assert(e->is_timeout);
zero(its);
if (dbus_timeout_get_enabled(e->object)) {
timespec_store(&its.it_value, dbus_timeout_get_interval(e->object) * USEC_PER_MSEC);
its.it_interval = its.it_value;
@ -142,7 +137,7 @@ static int timeout_arm(EpollData *e) {
static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) {
EpollData *e;
struct epoll_event ev;
struct epoll_event ev = {};
assert(timeout);
@ -160,7 +155,6 @@ static dbus_bool_t add_timeout(DBusTimeout *timeout, void *data) {
if (timeout_arm(e) < 0)
goto fail;
zero(ev);
ev.events = EPOLLIN;
ev.data.ptr = e;
@ -227,13 +221,11 @@ int bus_loop_open(DBusConnection *c) {
int bus_loop_dispatch(int fd) {
int n;
struct epoll_event event;
struct epoll_event event = {};
EpollData *d;
assert(fd >= 0);
zero(event);
n = epoll_wait(fd, &event, 1, 0);
if (n < 0)
return errno == EAGAIN || errno == EINTR ? 0 : -errno;

View file

@ -700,7 +700,7 @@ int unit_file_link(
UnitFileChange **changes,
unsigned *n_changes) {
LookupPaths _cleanup_lookup_paths_free_ paths = {NULL};
LookupPaths _cleanup_lookup_paths_free_ paths = {};
char **i;
char _cleanup_free_ *config_path = NULL;
int r, q;
@ -1116,7 +1116,7 @@ static int unit_file_can_install(
const char *name,
bool allow_symlink) {
InstallContext _cleanup_install_context_done_ c = {NULL};
InstallContext _cleanup_install_context_done_ c = {};
InstallInfo *i;
int r;
@ -1452,8 +1452,8 @@ int unit_file_enable(
UnitFileChange **changes,
unsigned *n_changes) {
LookupPaths _cleanup_lookup_paths_free_ paths = {NULL};
InstallContext _cleanup_install_context_done_ c = {NULL};
LookupPaths _cleanup_lookup_paths_free_ paths = {};
InstallContext _cleanup_install_context_done_ c = {};
char **i;
char _cleanup_free_ *config_path = NULL;
int r;
@ -1491,8 +1491,8 @@ int unit_file_disable(
UnitFileChange **changes,
unsigned *n_changes) {
LookupPaths _cleanup_lookup_paths_free_ paths = {NULL};
InstallContext _cleanup_install_context_done_ c = {NULL};
LookupPaths _cleanup_lookup_paths_free_ paths = {};
InstallContext _cleanup_install_context_done_ c = {};
char **i;
char _cleanup_free_ *config_path = NULL;
Set _cleanup_set_free_free_ *remove_symlinks_to = NULL;
@ -1533,8 +1533,8 @@ int unit_file_reenable(
UnitFileChange **changes,
unsigned *n_changes) {
LookupPaths _cleanup_lookup_paths_free_ paths = {NULL};
InstallContext _cleanup_install_context_done_ c = {NULL};
LookupPaths _cleanup_lookup_paths_free_ paths = {};
InstallContext _cleanup_install_context_done_ c = {};
char **i;
char _cleanup_free_ *config_path = NULL;
Set _cleanup_set_free_free_ *remove_symlinks_to = NULL;
@ -1576,7 +1576,7 @@ UnitFileState unit_file_get_state(
const char *root_dir,
const char *name) {
LookupPaths _cleanup_lookup_paths_free_ paths = {NULL};
LookupPaths _cleanup_lookup_paths_free_ paths = {};
UnitFileState state = _UNIT_FILE_STATE_INVALID;
char **i;
char _cleanup_free_ *path = NULL;
@ -1734,8 +1734,8 @@ int unit_file_preset(
UnitFileChange **changes,
unsigned *n_changes) {
LookupPaths _cleanup_lookup_paths_free_ paths = {NULL};
InstallContext _cleanup_install_context_done_ plus = {NULL}, minus = {NULL};
LookupPaths _cleanup_lookup_paths_free_ paths = {};
InstallContext _cleanup_install_context_done_ plus = {}, minus = {NULL};
char **i;
char _cleanup_free_ *config_path = NULL;
Set _cleanup_set_free_free_ *remove_symlinks_to = NULL;
@ -1800,7 +1800,7 @@ int unit_file_get_list(
const char *root_dir,
Hashmap *h) {
LookupPaths _cleanup_lookup_paths_free_ paths = {NULL};
LookupPaths _cleanup_lookup_paths_free_ paths = {};
char **i;
char _cleanup_free_ *buf = NULL;
DIR _cleanup_closedir_ *d = NULL;

View file

@ -129,16 +129,15 @@ static int create_log_socket(int type) {
}
static int log_open_syslog(void) {
union sockaddr_union sa;
int r;
union sockaddr_union sa = {
.un.sun_family = AF_UNIX,
.un.sun_path = "/dev/log",
};
if (syslog_fd >= 0)
return 0;
zero(sa);
sa.un.sun_family = AF_UNIX;
strncpy(sa.un.sun_path, "/dev/log", sizeof(sa.un.sun_path));
syslog_fd = create_log_socket(SOCK_DGRAM);
if (syslog_fd < 0) {
r = syslog_fd;
@ -183,7 +182,10 @@ void log_close_journal(void) {
}
static int log_open_journal(void) {
union sockaddr_union sa;
union sockaddr_union sa = {
.un.sun_family = AF_UNIX,
.un.sun_path = "/run/systemd/journal/socket",
};
int r;
if (journal_fd >= 0)
@ -195,10 +197,6 @@ static int log_open_journal(void) {
goto fail;
}
zero(sa);
sa.un.sun_family = AF_UNIX;
strncpy(sa.un.sun_path, "/run/systemd/journal/socket", sizeof(sa.un.sun_path));
if (connect(journal_fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + strlen(sa.un.sun_path)) < 0) {
r = -errno;
goto fail;
@ -313,7 +311,7 @@ static int write_to_console(
const char *buffer) {
char location[64];
struct iovec iovec[5];
struct iovec iovec[5] = {};
unsigned n = 0;
bool highlight;
@ -322,8 +320,6 @@ static int write_to_console(
highlight = LOG_PRI(level) <= LOG_ERR && show_color;
zero(iovec);
if (show_location) {
snprintf(location, sizeof(location), "(%s:%u) ", file, line);
char_array_0(location);
@ -353,8 +349,11 @@ static int write_to_syslog(
const char *buffer) {
char header_priority[16], header_time[64], header_pid[16];
struct iovec iovec[5];
struct msghdr msghdr;
struct iovec iovec[5] = {};
struct msghdr msghdr = {
.msg_iov = iovec,
.msg_iovlen = ELEMENTSOF(iovec),
};
time_t t;
struct tm *tm;
@ -375,7 +374,6 @@ static int write_to_syslog(
snprintf(header_pid, sizeof(header_pid), "[%lu]: ", (unsigned long) getpid());
char_array_0(header_pid);
zero(iovec);
IOVEC_SET_STRING(iovec[0], header_priority);
IOVEC_SET_STRING(iovec[1], header_time);
IOVEC_SET_STRING(iovec[2], program_invocation_short_name);
@ -386,10 +384,6 @@ static int write_to_syslog(
if (syslog_is_stream)
iovec[4].iov_len++;
zero(msghdr);
msghdr.msg_iov = iovec;
msghdr.msg_iovlen = ELEMENTSOF(iovec);
for (;;) {
ssize_t n;
@ -417,7 +411,7 @@ static int write_to_kmsg(
const char *buffer) {
char header_priority[16], header_pid[16];
struct iovec iovec[5];
struct iovec iovec[5] = {};
if (kmsg_fd < 0)
return 0;
@ -428,7 +422,6 @@ static int write_to_kmsg(
snprintf(header_pid, sizeof(header_pid), "[%lu]: ", (unsigned long) getpid());
char_array_0(header_pid);
zero(iovec);
IOVEC_SET_STRING(iovec[0], header_priority);
IOVEC_SET_STRING(iovec[1], program_invocation_short_name);
IOVEC_SET_STRING(iovec[2], header_pid);
@ -482,8 +475,8 @@ static int write_to_journal(
const char *buffer) {
char header[LINE_MAX];
struct iovec iovec[4] = {{0}};
struct msghdr mh = {0};
struct iovec iovec[4] = {};
struct msghdr mh = {};
if (journal_fd < 0)
return 0;
@ -742,7 +735,7 @@ int log_struct_internal(
journal_fd >= 0) {
char header[LINE_MAX];
struct iovec iovec[17] = {{0}};
struct iovec iovec[17] = {};
unsigned n = 0, i;
struct msghdr mh;
static const char nl = '\n';

View file

@ -889,15 +889,14 @@ int reset_all_signal_handlers(void) {
int sig;
for (sig = 1; sig < _NSIG; sig++) {
struct sigaction sa;
struct sigaction sa = {
.sa_handler = SIG_DFL,
.sa_flags = SA_RESTART,
};
if (sig == SIGKILL || sig == SIGSTOP)
continue;
zero(sa);
sa.sa_handler = SIG_DFL;
sa.sa_flags = SA_RESTART;
/* On Linux the first two RT signals are reserved by
* glibc, and sigaction() will return EINVAL for them. */
if ((sigaction(sig, &sa, NULL) < 0))
@ -1858,11 +1857,10 @@ int open_terminal(const char *name, int mode) {
}
int flush_fd(int fd) {
struct pollfd pollfd;
zero(pollfd);
pollfd.fd = fd;
pollfd.events = POLLIN;
struct pollfd pollfd = {
.fd = fd,
.events = POLLIN,
};
for (;;) {
char buf[LINE_MAX];
@ -1903,7 +1901,6 @@ int acquire_terminal(
int fd = -1, notify = -1, r = 0, wd = -1;
usec_t ts = 0;
struct sigaction sa_old, sa_new;
assert(name);
@ -1938,6 +1935,11 @@ int acquire_terminal(
}
for (;;) {
struct sigaction sa_old, sa_new = {
.sa_handler = SIG_IGN,
.sa_flags = SA_RESTART,
};
if (notify >= 0) {
r = flush_fd(notify);
if (r < 0)
@ -1953,9 +1955,6 @@ int acquire_terminal(
/* Temporarily ignore SIGHUP, so that we don't get SIGHUP'ed
* if we already own the tty. */
zero(sa_new);
sa_new.sa_handler = SIG_IGN;
sa_new.sa_flags = SA_RESTART;
assert_se(sigaction(SIGHUP, &sa_new, &sa_old) == 0);
/* First, try to get the tty */
@ -2063,7 +2062,10 @@ fail:
int release_terminal(void) {
int r = 0;
struct sigaction sa_old, sa_new;
struct sigaction sa_old, sa_new = {
.sa_handler = SIG_IGN,
.sa_flags = SA_RESTART,
};
int _cleanup_close_ fd;
fd = open("/dev/tty", O_RDWR|O_NOCTTY|O_NDELAY|O_CLOEXEC);
@ -2072,10 +2074,6 @@ int release_terminal(void) {
/* Temporarily ignore SIGHUP, so that we don't get SIGHUP'ed
* by our own TIOCNOTTY */
zero(sa_new);
sa_new.sa_handler = SIG_IGN;
sa_new.sa_flags = SA_RESTART;
assert_se(sigaction(SIGHUP, &sa_new, &sa_old) == 0);
if (ioctl(fd, TIOCNOTTY) < 0)
@ -2100,13 +2098,13 @@ int sigaction_many(const struct sigaction *sa, ...) {
}
int ignore_signals(int sig, ...) {
struct sigaction sa;
struct sigaction sa = {
.sa_handler = SIG_IGN,
.sa_flags = SA_RESTART,
};
va_list ap;
int r = 0;
zero(sa);
sa.sa_handler = SIG_IGN;
sa.sa_flags = SA_RESTART;
if (sigaction(sig, &sa, NULL) < 0)
r = -errno;
@ -2121,14 +2119,13 @@ int ignore_signals(int sig, ...) {
}
int default_signals(int sig, ...) {
struct sigaction sa;
struct sigaction sa = {
.sa_handler = SIG_DFL,
.sa_flags = SA_RESTART,
};
va_list ap;
int r = 0;
zero(sa);
sa.sa_handler = SIG_DFL;
sa.sa_flags = SA_RESTART;
if (sigaction(sig, &sa, NULL) < 0)
r = -errno;
@ -2177,11 +2174,10 @@ ssize_t loop_read(int fd, void *buf, size_t nbytes, bool do_poll) {
continue;
if (k < 0 && errno == EAGAIN && do_poll) {
struct pollfd pollfd;
zero(pollfd);
pollfd.fd = fd;
pollfd.events = POLLIN;
struct pollfd pollfd = {
.fd = fd,
.events = POLLIN,
};
if (poll(&pollfd, 1, -1) < 0) {
if (errno == EINTR)
@ -2226,11 +2222,10 @@ ssize_t loop_write(int fd, const void *buf, size_t nbytes, bool do_poll) {
continue;
if (k < 0 && errno == EAGAIN && do_poll) {
struct pollfd pollfd;
zero(pollfd);
pollfd.fd = fd;
pollfd.events = POLLOUT;
struct pollfd pollfd = {
.fd = fd,
.events = POLLOUT,
};
if (poll(&pollfd, 1, -1) < 0) {
if (errno == EINTR)
@ -2933,7 +2928,7 @@ int status_vprintf(const char *status, bool ellipse, bool ephemeral, const char
static const char status_indent[] = " "; /* "[" STATUS "] " */
_cleanup_free_ char *s = NULL;
_cleanup_close_ int fd = -1;
struct iovec iovec[6];
struct iovec iovec[6] = {};
int n = 0;
static bool prev_ephemeral;
@ -2971,8 +2966,6 @@ int status_vprintf(const char *status, bool ellipse, bool ephemeral, const char
}
}
zero(iovec);
if (prev_ephemeral)
IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE);
prev_ephemeral = ephemeral;
@ -3162,8 +3155,7 @@ char **replace_env_argv(char **argv, char **env) {
}
int fd_columns(int fd) {
struct winsize ws;
zero(ws);
struct winsize ws = {};
if (ioctl(fd, TIOCGWINSZ, &ws) < 0)
return -errno;
@ -3197,8 +3189,7 @@ unsigned columns(void) {
}
int fd_lines(int fd) {
struct winsize ws;
zero(ws);
struct winsize ws = {};
if (ioctl(fd, TIOCGWINSZ, &ws) < 0)
return -errno;
@ -3247,13 +3238,9 @@ bool on_tty(void) {
}
int running_in_chroot(void) {
struct stat a, b;
zero(a);
zero(b);
struct stat a = {}, b = {};
/* Only works as root */
if (stat("/proc/1/root", &a) < 0)
return -errno;
@ -3731,10 +3718,9 @@ void execute_directory(const char *directory, DIR *d, char *argv[]) {
while (!hashmap_isempty(pids)) {
pid_t pid = PTR_TO_UINT(hashmap_first_key(pids));
siginfo_t si;
siginfo_t si = {};
char *path;
zero(si);
if (waitid(P_PID, pid, &si, WEXITED) < 0) {
if (errno == EINTR)
@ -3861,12 +3847,11 @@ char* hostname_cleanup(char *s) {
}
int pipe_eof(int fd) {
struct pollfd pollfd;
int r;
zero(pollfd);
pollfd.fd = fd;
pollfd.events = POLLIN|POLLHUP;
struct pollfd pollfd = {
.fd = fd,
.events = POLLIN|POLLHUP,
};
r = poll(&pollfd, 1, 0);
if (r < 0)
@ -3879,12 +3864,11 @@ int pipe_eof(int fd) {
}
int fd_wait_for_event(int fd, int event, usec_t t) {
struct pollfd pollfd;
int r;
zero(pollfd);
pollfd.fd = fd;
pollfd.events = event;
struct pollfd pollfd = {
.fd = fd,
.events = event,
};
r = poll(&pollfd, 1, t == (usec_t) -1 ? -1 : (int) (t / USEC_PER_MSEC));
if (r < 0)
@ -4343,7 +4327,6 @@ int glob_exists(const char *path) {
assert(path);
zero(g);
errno = 0;
k = glob(path, GLOB_NOSORT|GLOB_BRACE, NULL, &g);

View file

@ -33,7 +33,7 @@
#include "utmp-wtmp.h"
int utmp_get_runlevel(int *runlevel, int *previous) {
struct utmpx lookup, *found;
struct utmpx *found, lookup = { .ut_type = RUN_LVL };
int r;
const char *e;
@ -66,9 +66,6 @@ int utmp_get_runlevel(int *runlevel, int *previous) {
setutxent();
zero(lookup);
lookup.ut_type = RUN_LVL;
if (!(found = getutxid(&lookup)))
r = -errno;
else {
@ -102,14 +99,12 @@ static void init_timestamp(struct utmpx *store, usec_t t) {
}
static void init_entry(struct utmpx *store, usec_t t) {
struct utsname uts;
struct utsname uts = {};
assert(store);
init_timestamp(store, t);
zero(uts);
if (uname(&uts) >= 0)
strncpy(store->ut_host, uts.release, sizeof(store->ut_host));
@ -311,7 +306,10 @@ static int write_to_terminal(const char *tty, const char *message) {
while (left > 0) {
ssize_t n;
struct pollfd pollfd;
struct pollfd pollfd = {
.fd = fd,
.events = POLLOUT,
};
usec_t t;
int k;
@ -320,10 +318,6 @@ static int write_to_terminal(const char *tty, const char *message) {
if (t >= end)
return -ETIME;
zero(pollfd);
pollfd.fd = fd;
pollfd.events = POLLOUT;
k = poll(&pollfd, 1, (end - t) / USEC_PER_MSEC);
if (k < 0)
return -errno;

View file

@ -62,7 +62,7 @@ int detect_vm(const char **id) {
union {
uint32_t sig32[3];
char text[13];
} sig;
} sig = {};
unsigned i;
const char *j, *k;
bool hypervisor;
@ -84,7 +84,6 @@ int detect_vm(const char **id) {
return r;
/* http://lwn.net/Articles/301888/ */
zero(sig);
#if defined (__i386__)
#define REG_a "eax"

View file

@ -46,30 +46,29 @@ union shutdown_buffer {
};
static int read_packet(int fd, union shutdown_buffer *_b) {
struct msghdr msghdr;
struct iovec iovec;
struct ucred *ucred;
ssize_t n;
union shutdown_buffer b; /* We maintain our own copy here, in
* order not to corrupt the last message */
struct iovec iovec = {
iovec.iov_base = &b,
iovec.iov_len = sizeof(b) - 1,
};
union {
struct cmsghdr cmsghdr;
uint8_t buf[CMSG_SPACE(sizeof(struct ucred))];
} control;
ssize_t n;
union shutdown_buffer b; /* We maintain our own copy here, in order not to corrupt the last message */
} control = {};
struct msghdr msghdr = {
.msg_iov = &iovec,
msghdr.msg_iovlen = 1,
msghdr.msg_control = &control,
msghdr.msg_controllen = sizeof(control),
};
assert(fd >= 0);
assert(_b);
zero(iovec);
iovec.iov_base = &b;
iovec.iov_len = sizeof(b) - 1;
zero(control);
zero(msghdr);
msghdr.msg_iov = &iovec;
msghdr.msg_iovlen = 1;
msghdr.msg_control = &control;
msghdr.msg_controllen = sizeof(control);
n = recvmsg(fd, &msghdr, MSG_DONTWAIT);
if (n <= 0) {
if (n == 0) {
@ -270,8 +269,8 @@ int main(int argc, char *argv[]) {
};
int r = EXIT_FAILURE, n_fds;
union shutdown_buffer b;
struct pollfd pollfd[_FD_MAX];
union shutdown_buffer b = {};
struct pollfd pollfd[_FD_MAX] = {};
bool exec_shutdown = false, unlink_nologin = false;
unsigned i;
@ -302,9 +301,6 @@ int main(int argc, char *argv[]) {
return EXIT_FAILURE;
}
zero(b);
zero(pollfd);
pollfd[FD_SOCKET].fd = SD_LISTEN_FDS_START;
pollfd[FD_SOCKET].events = POLLIN;
@ -402,13 +398,12 @@ int main(int argc, char *argv[]) {
}
if (pollfd[FD_WALL_TIMER].revents) {
struct itimerspec its;
struct itimerspec its = {};
warn_wall(n, &b.command);
flush_fd(pollfd[FD_WALL_TIMER].fd);
/* Restart timer */
zero(its);
timespec_store(&its.it_value, when_wall(n, b.command.usec));
if (timerfd_settime(pollfd[FD_WALL_TIMER].fd, TFD_TIMER_ABSTIME, &its, NULL) < 0) {
log_error("timerfd_settime(): %m");

View file

@ -124,7 +124,6 @@ int main(int argc, char *argv[]) {
for (;;) {
_cleanup_bus_message_unref_ sd_bus_message *m = NULL;
struct pollfd p[3];
int events_a, events_b, fd;
uint64_t timeout_a, timeout_b, t;
struct timespec _ts, *ts;
@ -211,15 +210,14 @@ int main(int argc, char *argv[]) {
ts = timespec_store(&_ts, t);
}
zero(p);
p[0].fd = fd;
p[0].events = events_a;
p[1].fd = STDIN_FILENO;
p[1].events = events_b & POLLIN;
p[2].fd = STDOUT_FILENO;
p[2].events = events_b & POLLOUT;
{
struct pollfd p[3] = {
{.fd = fd, .events = events_a, },
{.fd = STDIN_FILENO, .events = events_b & POLLIN, },
{.fd = STDOUT_FILENO, .events = events_b & POLLOUT, }};
r = ppoll(p, ELEMENTSOF(p), ts, NULL);
r = ppoll(p, ELEMENTSOF(p), ts, NULL);
}
if (r < 0) {
log_error("ppoll() failed: %m");
goto finish;

View file

@ -1193,14 +1193,11 @@ static int enable_wait_for_jobs(DBusConnection *bus) {
static int wait_for_jobs(DBusConnection *bus, Set *s) {
int r = 0;
WaitData d;
WaitData d = { .set = s };
assert(bus);
assert(s);
zero(d);
d.set = s;
if (!dbus_connection_add_filter(bus, wait_filter, &d, NULL))
return log_oom();
@ -3021,9 +3018,8 @@ static int print_property(const char *name, DBusMessageIter *iter) {
dbus_message_iter_recurse(iter, &sub);
while (dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRUCT) {
ExecStatusInfo info;
ExecStatusInfo info = {};
zero(info);
if (exec_status_info_deserialize(&sub, &info) >= 0) {
char timestamp1[FORMAT_TIMESTAMP_MAX], timestamp2[FORMAT_TIMESTAMP_MAX];
char _cleanup_free_ *t;
@ -3070,14 +3066,12 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo
const char *interface = "";
int r;
DBusMessageIter iter, sub, sub2, sub3;
UnitStatusInfo info;
UnitStatusInfo info = {};
ExecStatusInfo *p;
assert(path);
assert(new_line);
zero(info);
r = bus_method_call_with_reply(
bus,
"org.freedesktop.systemd1",
@ -3654,7 +3648,7 @@ static int enable_sysv_units(char **args) {
#if defined(HAVE_SYSV_COMPAT) && defined(HAVE_CHKCONFIG)
const char *verb = args[0];
unsigned f = 1, t = 1;
LookupPaths paths;
LookupPaths paths = {};
if (arg_scope != UNIT_FILE_SYSTEM)
return 0;
@ -3667,7 +3661,6 @@ static int enable_sysv_units(char **args) {
/* Processes all SysV units, and reshuffles the array so that
* afterwards only the native units remain */
zero(paths);
r = lookup_paths_init(&paths, SYSTEMD_SYSTEM, false, NULL, NULL, NULL);
if (r < 0)
return r;
@ -4716,7 +4709,7 @@ static int parse_time_spec(const char *t, usec_t *_u) {
} else {
char *e = NULL;
long hour, minute;
struct tm tm;
struct tm tm = {};
time_t s;
usec_t n;
@ -4732,7 +4725,6 @@ static int parse_time_spec(const char *t, usec_t *_u) {
n = now(CLOCK_REALTIME);
s = (time_t) (n / USEC_PER_SEC);
zero(tm);
assert_se(localtime_r(&s, &tm));
tm.tm_hour = (int) hour;
@ -5134,7 +5126,7 @@ finish:
}
static int talk_initctl(void) {
struct init_request request = {0};
struct init_request request = {};
int r;
int _cleanup_close_ fd = -1;
char rl;
@ -5339,41 +5331,38 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError
static int send_shutdownd(usec_t t, char mode, bool dry_run, bool warn, const char *message) {
int _cleanup_close_ fd;
struct msghdr msghdr;
struct iovec iovec[2];
union sockaddr_union sockaddr;
struct sd_shutdown_command c;
struct sd_shutdown_command c = {
.usec = t,
.mode = mode,
.dry_run = dry_run,
.warn_wall = warn,
};
union sockaddr_union sockaddr = {
.un.sun_family = AF_UNIX,
.un.sun_path = "/run/systemd/shutdownd",
};
struct iovec iovec[2] = {
{.iov_base = (char*) &c,
.iov_len = offsetof(struct sd_shutdown_command, wall_message),
}
};
struct msghdr msghdr = {
.msg_name = &sockaddr,
.msg_namelen = offsetof(struct sockaddr_un, sun_path)
+ sizeof("/run/systemd/shutdownd") - 1,
.msg_iov = iovec,
.msg_iovlen = 1,
};
fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0);
if (fd < 0)
return -errno;
zero(c);
c.usec = t;
c.mode = mode;
c.dry_run = dry_run;
c.warn_wall = warn;
zero(sockaddr);
sockaddr.sa.sa_family = AF_UNIX;
strncpy(sockaddr.un.sun_path, "/run/systemd/shutdownd", sizeof(sockaddr.un.sun_path));
zero(msghdr);
msghdr.msg_name = &sockaddr;
msghdr.msg_namelen = offsetof(struct sockaddr_un, sun_path) + sizeof("/run/systemd/shutdownd") - 1;
zero(iovec);
iovec[0].iov_base = (char*) &c;
iovec[0].iov_len = offsetof(struct sd_shutdown_command, wall_message);
if (isempty(message))
msghdr.msg_iovlen = 1;
else {
if (!isempty(message)) {
iovec[1].iov_base = (char*) message;
iovec[1].iov_len = strlen(message);
msghdr.msg_iovlen = 2;
msghdr.msg_iovlen++;
}
msghdr.msg_iov = iovec;
if (sendmsg(fd, &msghdr, MSG_NOSIGNAL) < 0)
return -errno;

View file

@ -72,9 +72,8 @@ typedef struct StatusInfo {
} StatusInfo;
static bool ntp_synced(void) {
struct timex txc;
struct timex txc = {};
zero(txc);
if (adjtimex(&txc) < 0)
return false;
@ -242,7 +241,7 @@ static int show_status(DBusConnection *bus, char **args, unsigned n) {
const char *interface = "";
int r;
DBusMessageIter iter, sub, sub2, sub3;
StatusInfo info;
StatusInfo info = {};
assert(args);
@ -266,7 +265,6 @@ static int show_status(DBusConnection *bus, char **args, unsigned n) {
return -EIO;
}
zero(info);
dbus_message_iter_recurse(&iter, &sub);
while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) {

View file

@ -601,11 +601,9 @@ static int recursive_relabel(Item *i, const char *path) {
static int glob_item(Item *i, int (*action)(Item *, const char *)) {
int r = 0, k;
glob_t g;
glob_t g = {};
char **fn;
zero(g);
errno = 0;
if ((k = glob(i->path, GLOB_NOSORT|GLOB_BRACE, NULL, &g)) != 0) {

View file

@ -60,11 +60,11 @@ static int ask_password_plymouth(
char ***_passphrases) {
int fd = -1, notify = -1;
union sockaddr_union sa;
union sockaddr_union sa = {};
char *packet = NULL;
ssize_t k;
int r, n;
struct pollfd pollfd[2];
struct pollfd pollfd[2] = {};
char buffer[LINE_MAX];
size_t p = 0;
enum {
@ -91,7 +91,6 @@ static int ask_password_plymouth(
goto finish;
}
zero(sa);
sa.sa.sa_family = AF_UNIX;
strncpy(sa.un.sun_path+1, "/org/freedesktop/plymouthd", sizeof(sa.un.sun_path)-1);
if (connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)) < 0) {
@ -116,7 +115,6 @@ static int ask_password_plymouth(
goto finish;
}
zero(pollfd);
pollfd[POLL_SOCKET].fd = fd;
pollfd[POLL_SOCKET].events = POLLIN;
pollfd[POLL_INOTIFY].fd = notify;
@ -325,7 +323,7 @@ static int parse_password(const char *filename, char **wall) {
union {
struct sockaddr sa;
struct sockaddr_un un;
} sa;
} sa = {};
size_t packet_length = 0;
assert(arg_action == ACTION_QUERY ||
@ -410,7 +408,6 @@ static int parse_password(const char *filename, char **wall) {
goto finish;
}
zero(sa);
sa.un.sun_family = AF_UNIX;
strncpy(sa.un.sun_path, socket_name, sizeof(sa.un.sun_path));
@ -563,7 +560,7 @@ static int watch_passwords(void) {
};
int notify = -1, signal_fd = -1, tty_block_fd = -1;
struct pollfd pollfd[_FD_MAX];
struct pollfd pollfd[_FD_MAX] = {};
sigset_t mask;
int r;
@ -591,7 +588,6 @@ static int watch_passwords(void) {
goto finish;
}
zero(pollfd);
pollfd[FD_INOTIFY].fd = notify;
pollfd[FD_INOTIFY].events = POLLIN;
pollfd[FD_SIGNAL].fd = signal_fd;

View file

@ -396,7 +396,7 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool
unsigned int i;
const char *devtype;
const char *prefix = "en";
struct netnames names;
struct netnames names = {};
int err;
/* handle only ARPHRD_ETHER devices */
@ -425,7 +425,6 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool
prefix = "ww";
}
zero(names);
err = names_mac(dev, &names);
if (err >= 0 && names.mac_valid) {
char str[IFNAMSIZ];

View file

@ -313,11 +313,10 @@ static int on_runlevel(Context *c) {
int main(int argc, char *argv[]) {
int r;
DBusError error;
Context c;
Context c = {};
dbus_error_init(&error);
zero(c);
#ifdef HAVE_AUDIT
c.audit_fd = -1;
#endif

View file

@ -179,20 +179,18 @@ static int font_load(const char *vc, const char *font, const char *map, const ch
* to apply a new font to all VTs.
*/
static void font_copy_to_all_vcs(int fd) {
struct vt_stat vcs;
int i;
int r;
struct vt_stat vcs = {};
int i, r;
/* get active, and 16 bit mask of used VT numbers */
zero(vcs);
r = ioctl(fd, VT_GETSTATE, &vcs);
if (r < 0)
return;
for (i = 1; i <= 15; i++) {
char vcname[16];
struct console_font_op cfo;
int _cleanup_close_ vcfd = -1;
struct console_font_op cfo = {};
if (i == vcs.v_active)
continue;
@ -208,7 +206,6 @@ static void font_copy_to_all_vcs(int fd) {
continue;
/* copy font from active VT, where the font was uploaded to */
zero(cfo);
cfo.op = KD_FONT_OP_COPY;
cfo.height = vcs.v_active-1; /* tty1 == index 0 */
ioctl(vcfd, KDFONTOP, &cfo);