From: Rafał Miłecki <ra...@milecki.pl> This new function imlements common code needed to run /etc/hotplug.d/ listeners. It allows specifying subsystem and environment strings as commonly used in the hotplug.d.
Signed-off-by: Rafał Miłecki <ra...@milecki.pl> --- CMakeLists.txt | 2 +- hotplug.c | 35 +++++++++++++++++++++++++++++++++++ hotplug.h | 8 ++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 hotplug.c create mode 100644 hotplug.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 57804cf..aa54499 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ IF(JSONC_FOUND) INCLUDE_DIRECTORIES(${JSONC_INCLUDE_DIRS}) ENDIF() -SET(SOURCES avl.c avl-cmp.c blob.c blobmsg.c uloop.c usock.c ustream.c ustream-fd.c vlist.c utils.c safe_list.c runqueue.c md5.c kvlist.c ulog.c base64.c) +SET(SOURCES avl.c avl-cmp.c blob.c blobmsg.c uloop.c usock.c ustream.c ustream-fd.c vlist.c utils.c safe_list.c runqueue.c md5.c kvlist.c ulog.c base64.c hotplug.c) ADD_LIBRARY(ubox SHARED ${SOURCES}) ADD_LIBRARY(ubox-static STATIC ${SOURCES}) diff --git a/hotplug.c b/hotplug.c new file mode 100644 index 0000000..f3298fa --- /dev/null +++ b/hotplug.c @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: ISC +/* + * hotplug - helpers for hotplug.d events + * + * Copyright (C) 2018 Rafał Miłecki <ra...@milecki.pl> + */ + +#include "hotplug.h" + +#include <errno.h> +#include <stdlib.h> +#include <sys/wait.h> +#include <unistd.h> + +int hotplug_call(char *subsystem, char * const *envp) +{ + pid_t pid; + + pid = fork(); + if (!pid) { + char * const argv[] = { "hotplug-call", subsystem, NULL }; + + execve("/sbin/hotplug-call", argv, envp); + exit(-1); + } else if (pid > 0) { + int status; + + waitpid(pid, &status, 0); + if (WEXITSTATUS(status)) + return WEXITSTATUS(status); + return 0; + } else { + return -errno; + } +} diff --git a/hotplug.h b/hotplug.h new file mode 100644 index 0000000..224a764 --- /dev/null +++ b/hotplug.h @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: ISC + +#ifndef __LIBUBOX_HOTPLUG_H +#define __LIBUBOX_HOTPLUG_H + +int hotplug_call(char *subsystem, char * const *envp); + +#endif -- 2.13.7 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel