diff options
author | David Oberhollenzer <goliath@infraroot.at> | 2019-03-29 10:40:59 +0100 |
---|---|---|
committer | David Oberhollenzer <goliath@infraroot.at> | 2019-03-29 21:00:53 +0100 |
commit | c3d14cbfa863ea3af8aaa253f1d7d3909adf1547 (patch) | |
tree | 5b057f5fbdd0a28a6c5a9061c5907eb58f8e817f | |
parent | 7cfe6e845878d67f578fa846e784c064a178d9c5 (diff) |
cleanup: init status response
- rename init_status_response_t to init_status_t
- merge code for handling it
- fix memory leak in status command
Signed-off-by: David Oberhollenzer <goliath@infraroot.at>
-rw-r--r-- | cmd/service/startstop.c | 14 | ||||
-rw-r--r-- | cmd/service/status.c | 18 | ||||
-rw-r--r-- | lib/Makemodule.am | 2 | ||||
-rw-r--r-- | lib/include/initsock.h | 6 | ||||
-rw-r--r-- | lib/init/free_init_status.c | 10 | ||||
-rw-r--r-- | lib/init/init_socket_recv_status.c | 2 |
6 files changed, 27 insertions, 25 deletions
diff --git a/cmd/service/startstop.c b/cmd/service/startstop.c index ffc33de..8c30efa 100644 --- a/cmd/service/startstop.c +++ b/cmd/service/startstop.c @@ -8,17 +8,11 @@ #include <getopt.h> #include <unistd.h> -static void free_resp(init_status_response_t *resp) -{ - free(resp->filename); - free(resp->service_name); -} - static int cmd_startstop(int argc, char **argv, E_SERVICE_STATE filter, E_INIT_REQUEST action) { int i, fd, ret = EXIT_FAILURE; - init_status_response_t resp; + init_status_t resp; char tmppath[256]; bool found; @@ -41,12 +35,12 @@ static int cmd_startstop(int argc, char **argv, if (init_socket_recv_status(fd, &resp)) { perror("reading from initd socket"); - free_resp(&resp); + free_init_status(&resp); goto out; } if (resp.state == ESS_NONE) { - free_resp(&resp); + free_init_status(&resp); break; } @@ -68,7 +62,7 @@ static int cmd_startstop(int argc, char **argv, goto out; } - free_resp(&resp); + free_init_status(&resp); } ret = EXIT_SUCCESS; diff --git a/cmd/service/status.c b/cmd/service/status.c index abeeb15..752b0c7 100644 --- a/cmd/service/status.c +++ b/cmd/service/status.c @@ -15,17 +15,11 @@ static const struct option long_opts[] = { static const char *short_opts = "d"; -static void free_resp(init_status_response_t *resp) -{ - free(resp->filename); - free(resp->service_name); -} - static int cmd_status(int argc, char **argv) { bool is_tty, found, show_details = false; int i, fd, ret = EXIT_FAILURE; - init_status_response_t resp; + init_status_t resp; char tmppath[256]; const char *state; service_t *svc; @@ -63,12 +57,12 @@ static int cmd_status(int argc, char **argv) if (init_socket_recv_status(fd, &resp)) { perror("reading from initd socket"); - free_resp(&resp); + free_init_status(&resp); goto out; } if (resp.state == ESS_NONE) { - free_resp(&resp); + free_init_status(&resp); break; } @@ -87,8 +81,10 @@ static int cmd_status(int argc, char **argv) } } - if (!found) + if (!found) { + free_init_status(&resp); continue; + } } switch (resp.state) { @@ -150,7 +146,7 @@ static int cmd_status(int argc, char **argv) printf("[%s] %s\n", state, resp.filename); } - free_resp(&resp); + free_init_status(&resp); } ret = EXIT_SUCCESS; diff --git a/lib/Makemodule.am b/lib/Makemodule.am index a131463..8dcff06 100644 --- a/lib/Makemodule.am +++ b/lib/Makemodule.am @@ -1,7 +1,7 @@ libinit_a_SOURCES = lib/init/delsvc.c lib/init/svcmap.c lib/init/rdsvc.c libinit_a_SOURCES += lib/init/svcscan.c lib/init/del_svc_list.c libinit_a_SOURCES += lib/init/svc_tsort.c lib/include/service.h -libinit_a_SOURCES += lib/init/init_socket_open.c +libinit_a_SOURCES += lib/init/init_socket_open.c lib/init/free_init_status.c libinit_a_SOURCES += lib/include/initsock.h lib/init/init_socket_send_request.c libinit_a_SOURCES += lib/init/init_socket_recv_status.c libinit_a_CPPFLAGS = $(AM_CPPFLAGS) diff --git a/lib/include/initsock.h b/lib/include/initsock.h index afbf861..04b8ffd 100644 --- a/lib/include/initsock.h +++ b/lib/include/initsock.h @@ -45,12 +45,14 @@ typedef struct { int id; char *filename; char *service_name; -} init_status_response_t; +} init_status_t; int init_socket_open(const char *tmppath); int init_socket_send_request(int fd, E_INIT_REQUEST rq, ...); -int init_socket_recv_status(int fd, init_status_response_t *resp); +int init_socket_recv_status(int fd, init_status_t *resp); + +void free_init_status(init_status_t *resp); #endif /* INITSOCK_H */ diff --git a/lib/init/free_init_status.c b/lib/init/free_init_status.c new file mode 100644 index 0000000..945d407 --- /dev/null +++ b/lib/init/free_init_status.c @@ -0,0 +1,10 @@ +/* SPDX-License-Identifier: ISC */ +#include <stdlib.h> + +#include "initsock.h" + +void free_init_status(init_status_t *resp) +{ + free(resp->filename); + free(resp->service_name); +} diff --git a/lib/init/init_socket_recv_status.c b/lib/init/init_socket_recv_status.c index b812819..d5ca2e6 100644 --- a/lib/init/init_socket_recv_status.c +++ b/lib/init/init_socket_recv_status.c @@ -61,7 +61,7 @@ static char *read_string(int fd) return buffer; } -int init_socket_recv_status(int fd, init_status_response_t *resp) +int init_socket_recv_status(int fd, init_status_t *resp) { uint8_t info[8]; |