summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@suse.de>2005-11-10 02:06:43 +0100
committerKay Sievers <kay.sievers@suse.de>2005-11-10 02:06:43 +0100
commita8d141a3c165dafcf21d081e88f3cc0b7f1e65c5 (patch)
tree745ed851fa78792ff895aee48b0ea7c42ef8fa40
parent53899a171ea862124b49c75b7511b7eb30742ef9 (diff)
replace udeveventrecorder by a shell script
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
-rw-r--r--.gitignore1
-rw-r--r--Makefile2
-rw-r--r--etc/udev/suse/95-debug.rules2
-rwxr-xr-xextras/eventrecorder.sh4
-rw-r--r--udeveventrecorder.c127
5 files changed, 5 insertions, 131 deletions
diff --git a/.gitignore b/.gitignore
index a83700c930..c37b70c524 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,6 +9,5 @@ udevinfo
udevmonitor
udevstart
udevtest
-udeveventrecorder
udev_version.h
diff --git a/Makefile b/Makefile
index c105dab2e2..ab75bb3d9a 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 fad54b9632..280287c1a7 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 0000000000..90cfe68ebb
--- /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 422cf88ff0..0000000000
--- a/udeveventrecorder.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * udeveventrecorder.c
- *
- * Copyright (C) 2004-2005 SuSE Linux Products GmbH
- * Author:
- * Olaf Hering <olh@suse.de>
- *
- * 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 <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-
-#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;
-}