[OpenWrt-Devel] [PATCH libubox] hotplug: add hotplug_call() helper

Rafał Miłecki zajec5 at gmail.com
Thu Dec 6 07:31:23 EST 2018


From: Rafał Miłecki <rafal at 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 <rafal at 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 <rafal at 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 at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list