From a8d141a3c165dafcf21d081e88f3cc0b7f1e65c5 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 10 Nov 2005 02:06:43 +0100 Subject: [PATCH] replace udeveventrecorder by a shell script Signed-off-by: Kay Sievers --- .gitignore | 1 - Makefile | 2 - etc/udev/suse/95-debug.rules | 2 +- extras/eventrecorder.sh | 4 ++ udeveventrecorder.c | 127 ----------------------------------- 5 files changed, 5 insertions(+), 131 deletions(-) create mode 100755 extras/eventrecorder.sh delete mode 100644 udeveventrecorder.c diff --git a/.gitignore b/.gitignore index a83700c93..c37b70c52 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,5 @@ udevinfo udevmonitor udevstart udevtest -udeveventrecorder udev_version.h diff --git a/Makefile b/Makefile index c105dab2e..ab75bb3d9 100644 --- a/Makefile +++ b/Makefile @@ -50,7 +50,6 @@ PROGRAMS = \ udev \ udevd \ udevsend \ - udeveventrecorder \ udevcontrol \ udevmonitor \ udevinfo \ @@ -359,7 +358,6 @@ uninstall-bin: - rm -f $(DESTDIR)$(sbindir)/udev - rm -f $(DESTDIR)$(sbindir)/udevd - rm -f $(DESTDIR)$(sbindir)/udevsend - - rm -f $(DESTDIR)$(sbindir)/udeveventrecoreder - rm -f $(DESTDIR)$(sbindir)/udevcontrol - rm -f $(DESTDIR)$(sbindir)/udevstart - rm -f $(DESTDIR)$(usrsbindir)/udevmonitor diff --git a/etc/udev/suse/95-debug.rules b/etc/udev/suse/95-debug.rules index fad54b963..280287c1a 100644 --- a/etc/udev/suse/95-debug.rules +++ b/etc/udev/suse/95-debug.rules @@ -1,5 +1,5 @@ # debug events to /events, but not on default udev_log="err" -ENV{UDEV_LOG}=="[4-9]", RUN+="/sbin/udeventrecorder" +ENV{UDEV_LOG}=="[4-9]", RUN+="/lib/udev/eventrecorder.sh" # event to be catched by udevmonitor RUN+="socket:/org/kernel/udev/monitor" diff --git a/extras/eventrecorder.sh b/extras/eventrecorder.sh new file mode 100755 index 000000000..90cfe68eb --- /dev/null +++ b/extras/eventrecorder.sh @@ -0,0 +1,4 @@ +#/bin/sh + +[ -d /events ] || exit 0 +set > /events/debug.$SEQNUM.$1.$ACTION.$$ diff --git a/udeveventrecorder.c b/udeveventrecorder.c deleted file mode 100644 index 422cf88ff..000000000 --- a/udeveventrecorder.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * udeveventrecorder.c - * - * Copyright (C) 2004-2005 SuSE Linux Products GmbH - * Author: - * Olaf Hering - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "udev.h" -#include "udev_version.h" -#include "udev_utils.h" -#include "logging.h" - -#define BUFSIZE 12345 -#define FNSIZE 123 - -static int udev_log = 0; - -#ifdef USE_LOG -void log_message (int priority, const char *format, ...) -{ - va_list args; - - if (priority > udev_log) - return; - - va_start(args, format); - vsyslog(priority, format, args); - va_end(args); -} -#endif - -int main(int argc, char **argv, char **envp) -{ - int fd, i; - unsigned long seq; - char **ep = envp; - char *buf, *p, *a; - struct stat sb; - const char *env; - - if (stat("/events", &sb) || !(S_ISDIR(sb.st_mode))) - return 0; - - env = getenv("UDEV_LOG"); - if (env) - udev_log = log_priority(env); - - logging_init("udeveventrecorder"); - dbg("version %s", UDEV_VERSION); - - p = getenv("SEQNUM"); - a = getenv("ACTION"); - buf = malloc(FNSIZE); - if (!(buf && a && argv[1])) - goto error; - if (p) - seq = strtoul(p, NULL, 0); - else - seq = 0; - - snprintf(buf, FNSIZE, "/events/debug.%05lu.%s.%s.%u", seq, argv[1], a ? a : "", getpid()); - if ((fd = open(buf, O_CREAT | O_WRONLY | O_TRUNC, 0644)) < 0) { - err("error creating '%s': %s", buf, strerror(errno)); - goto error; - } - free(buf); - p = malloc(BUFSIZE); - buf = p; - buf += snprintf(buf, p + BUFSIZE - buf, "set --"); - for (i = 1; i < argc; ++i) { - buf += snprintf(buf, p + BUFSIZE - buf, " %s", argv[i]); - if (buf > p + BUFSIZE) - goto full; - } - buf += snprintf(buf, p + BUFSIZE - buf, "\n"); - if (buf > p + BUFSIZE) - goto full; - while (*ep) { - unsigned char *t; - t = memchr(*ep, '=', strlen(*ep)); - if (t) { - *t = '\0'; - t++; - buf += snprintf(buf, p + BUFSIZE - buf, "%s='%s'\n", *ep, t); - --t; - *t = '='; - } - ep++; - if (buf > p + BUFSIZE) - break; - } - -full: - buf = p; - write(fd, buf, strlen(buf)); - close(fd); - free(buf); - return 0; - -error: - fprintf(stderr, "record enviroment to /events, to be called from udev context\n"); - return 1; -} -- 2.30.2