mirror of https://github.com/hak5/openwrt-owl.git
parent
8aa6978a43
commit
05c0ca34a7
|
@ -21,6 +21,7 @@ include $(INCLUDE_DIR)/package.mk
|
|||
define Package/hotplug2
|
||||
SECTION:=utils
|
||||
CATEGORY:=Utilities
|
||||
VERSION:=0.9+r102-$(PKG_RELEASE)
|
||||
TITLE:=Dynamic device management subsystem for embedded systems
|
||||
URL:=http://isteve.bofh.cz/~isteve/hotplug2/
|
||||
endef
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
Index: hotplug2-0.9/hotplug2.c
|
||||
===================================================================
|
||||
--- hotplug2-0.9.orig/hotplug2.c 2007-06-04 13:21:41.134723240 +0200
|
||||
+++ hotplug2-0.9/hotplug2.c 2007-06-04 13:21:41.203712752 +0200
|
||||
@@ -391,6 +391,7 @@
|
||||
int rv = 0;
|
||||
int i;
|
||||
char *coldplug_command = NULL;
|
||||
+ char *rules_file = HOTPLUG2_RULE_PATH;
|
||||
sigset_t block_mask;
|
||||
|
||||
struct rules_t *rules = NULL;
|
||||
@@ -435,6 +436,13 @@
|
||||
break;
|
||||
|
||||
modprobe_command = *argv;
|
||||
+ } else if (!strcmp(*argv, "--set-rules-file")) {
|
||||
+ argv++;
|
||||
+ argc--;
|
||||
+ if (argc <= 0)
|
||||
+ break;
|
||||
+
|
||||
+ rules_file = *argv;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -443,7 +451,7 @@
|
||||
#ifdef HAVE_RULES
|
||||
if (!dumb) {
|
||||
filemap = MAP_FAILED;
|
||||
- rule_fd = open(HOTPLUG2_RULE_PATH, O_RDONLY | O_NOATIME);
|
||||
+ rule_fd = open(rules_file, O_RDONLY | O_NOATIME);
|
||||
if (rule_fd == -1) {
|
||||
dumb = 1;
|
||||
ERROR("rules parse","Unable to open rules file: %s.", strerror(errno));
|
|
@ -0,0 +1,542 @@
|
|||
diff -urN -x .svn hotplug2-0.9/AUTHORS hotplug2/AUTHORS
|
||||
--- hotplug2-0.9/AUTHORS 2006-10-08 18:13:50.000000000 +0200
|
||||
+++ hotplug2/AUTHORS 2007-06-25 10:51:14.688225416 +0200
|
||||
@@ -1,7 +1,11 @@
|
||||
Authors:
|
||||
----------
|
||||
iSteve <isteve@bofh.cz>
|
||||
-Tomas Janousek <tomi@nomi.cz>
|
||||
+
|
||||
+ Contributions:
|
||||
+----------------
|
||||
+nbd (rules override patch)
|
||||
+Tomas Janousek <tomi@nomi.cz> (Makefiles, SVN hosting)
|
||||
|
||||
Thanks to:
|
||||
------------
|
||||
@@ -10,5 +14,9 @@
|
||||
Randy Dunlap (help with isapnpmap)
|
||||
Igor2 (provided testing machines)
|
||||
yanek (provided testing machines)
|
||||
+Zdenek Styblik (provided testing OpenWRT device)
|
||||
+OpenWRT team (for trusting this project)
|
||||
+mtu (debugging, testing, ideas)
|
||||
+mnemoc (trivial sanity changes on makefiles, linux24 compat patches)
|
||||
|
||||
-...anyone taking more than a short peek at the software.
|
||||
\ No newline at end of file
|
||||
+...anyone taking more than a short peek at the software.
|
||||
diff -urN -x .svn hotplug2-0.9/Changelog hotplug2/Changelog
|
||||
--- hotplug2-0.9/Changelog 2006-10-08 15:32:31.000000000 +0200
|
||||
+++ hotplug2/Changelog 2007-06-25 10:51:14.689225264 +0200
|
||||
@@ -1,3 +1,10 @@
|
||||
+0.9 - 1.0:
|
||||
+* Add --set-rules-file.
|
||||
+* Allow any ACTION.
|
||||
+* Add 'printdebug' rule.
|
||||
+* Fix chmod, chown, chgrp.
|
||||
+* Use octal for chmod and makedev.
|
||||
+
|
||||
0.8 - 0.9:
|
||||
* Use signals to handle children.
|
||||
* Separate info and debugging output.
|
||||
@@ -44,4 +51,4 @@
|
||||
* Add more actions.
|
||||
* Significant cleanup of rules handling.
|
||||
* Better error reporting.
|
||||
-
|
||||
\ No newline at end of file
|
||||
+
|
||||
diff -urN -x .svn hotplug2-0.9/docs/hotplug2.8 hotplug2/docs/hotplug2.8
|
||||
--- hotplug2-0.9/docs/hotplug2.8 2006-09-26 09:23:36.000000000 +0200
|
||||
+++ hotplug2/docs/hotplug2.8 2007-06-25 10:51:14.540247912 +0200
|
||||
@@ -31,6 +31,8 @@
|
||||
.TP
|
||||
\fB\-\-set\-modprobe\-cmd <cmd>\fR
|
||||
Sets the application used to perform modprobe. It only gets used in dumb mode. Default is to autodetect: if '/bin/modprobe' is from module\-init\-tools, use '/sbin/modprobe', otherwise use '/sbin/hotplug2\-modwrap'.
|
||||
+\fB\-\-set\-rules\-file <file>\fR
|
||||
+Sets the path to the file containing hotplug2 rules.
|
||||
.SH "SIGNALS"
|
||||
.TP
|
||||
\fBSIGUSR1\fR
|
||||
diff -urN -x .svn hotplug2-0.9/docs/hotplug2.rules.doc hotplug2/docs/hotplug2.rules.doc
|
||||
--- hotplug2-0.9/docs/hotplug2.rules.doc 2006-09-26 10:19:46.000000000 +0200
|
||||
+++ hotplug2/docs/hotplug2.rules.doc 2007-06-25 10:51:14.537248368 +0200
|
||||
@@ -11,12 +11,12 @@
|
||||
[... [...]]
|
||||
}
|
||||
|
||||
-Comments are allowed, they are prefixed with '#', treating the whole rest of the
|
||||
-line as comment. Please note that comments in place of action parameters are not
|
||||
-supported.
|
||||
+Comments are allowed, they are prefixed with '#', treating the whole rest of
|
||||
+the line as comment. Please note that comments in place of action parameters
|
||||
+are not supported.
|
||||
|
||||
-The <key> is one of the environmental variables that have been obtained by the
|
||||
-uevent netlink.
|
||||
+The <key> is one of the environmental variables that have been obtained by
|
||||
+the uevent netlink.
|
||||
|
||||
COMMON KEYS
|
||||
-----------
|
||||
@@ -66,9 +66,9 @@
|
||||
-------
|
||||
|
||||
* run <...>
|
||||
- Execute an application using system();, takes one parameter. Note that
|
||||
- the application has set all environmental variables read by uevent
|
||||
- netlink.
|
||||
+ Execute an application using system();, takes one parameter. Note
|
||||
+ that the application has set all environmental variables read by
|
||||
+ uevent netlink.
|
||||
|
||||
* break
|
||||
Break the processing of the current block of actions.
|
||||
@@ -86,23 +86,22 @@
|
||||
|
||||
* exec <application [parameter [parameter [...]]]> ;
|
||||
Execute an application. Takes variable number of parameters, but the
|
||||
- last parameter must be terminated with semicolon. Again, all variables
|
||||
- are set as environmental.
|
||||
+ last parameter must be terminated with semicolon. Again, all
|
||||
+ variables are set as environmental.
|
||||
|
||||
- If you need to escape the ';', use '\\;'. Only applies for actions with
|
||||
- variable number of parameters.
|
||||
+ If you need to escape the ';', use '\\;'. Only applies for actions
|
||||
+ with variable number of parameters.
|
||||
|
||||
* makedev <path> <mode>
|
||||
- Create a device with given mode. The mode is not in octal unless it
|
||||
- starts with '0', eg. "0644" != "644".
|
||||
+ Create a device with given mode. Mode is interpreted as octal.
|
||||
|
||||
Major, minor and devpath must be set for makedev to be able to work.
|
||||
Tests for these variables are also performed internally in makedev
|
||||
function.
|
||||
|
||||
* symlink <target> <linkname>
|
||||
- Create a symbolic link (symlink, also known as soft link) pointing at
|
||||
- target with name linkname.
|
||||
+ Create a symbolic link (symlink, also known as soft link) pointing
|
||||
+ at target with name linkname.
|
||||
|
||||
* chown <path> <owner name>
|
||||
Change owner of path to owner name.
|
||||
@@ -111,12 +110,14 @@
|
||||
Change group of path to group name.
|
||||
|
||||
* chmod <path> <mode>
|
||||
- Change mode of path to given mode. Like with makedev, heading '0' is
|
||||
- necessary for the mode to be interpreted as octal.
|
||||
+ Change mode of path to given mode. Mode is interpreted as octal.
|
||||
|
||||
* setenv <key> <value>
|
||||
Sets environmental variable key to the given value. If an env var
|
||||
of the given name already exists, it gets overwritten.
|
||||
+
|
||||
+ * printdebug
|
||||
+ Prints all variables read from kernel.
|
||||
|
||||
ESCAPING
|
||||
--------
|
||||
@@ -136,8 +137,9 @@
|
||||
SAMPLE CONFIG
|
||||
-------------
|
||||
|
||||
-Below is a sample hotplug2.rules file. It loads modules to all available devices
|
||||
-quietly and creates device nodes for block devices.
|
||||
+Below is a sample hotplug2.rules file. It loads modules to all available
|
||||
+devices quietly and creates device nodes for block devices. Note that this
|
||||
+sample is not very viable for real life usage.
|
||||
---------------------------------------------------------------------------------
|
||||
MODALIAS is set {
|
||||
exec modprobe -q %MODALIAS% ;
|
||||
@@ -146,3 +148,33 @@
|
||||
SUBSYSTEM == block, DEVPATH is set, MAJOR is set, MINOR is set {
|
||||
makedev /dev/%DEVICENAME% 0644
|
||||
}
|
||||
+
|
||||
+
|
||||
+Please find also the more complex set of rules, dedicated to handling most
|
||||
+common needs.
|
||||
+---------------------------------------------------------------------------------
|
||||
+#For debugging
|
||||
+#ACTION is set {
|
||||
+# printdebug
|
||||
+#}
|
||||
+
|
||||
+# Load modules (what old hotplug did)
|
||||
+MODALIAS is set {
|
||||
+ exec modprobe -q %MODALIAS% ;
|
||||
+}
|
||||
+
|
||||
+# Create device nodes
|
||||
+DEVPATH is set, MAJOR is set, MINOR is set {
|
||||
+ makedev /dev/%DEVICENAME% 0644
|
||||
+}
|
||||
+
|
||||
+# Mount a USB flashdisk
|
||||
+ACTION == add, PHYSDEVPATH ~~ "/usb[0-9]*/", DEVICENAME ~~ "^sd[a-z][0-9]+$", DEVPATH is set, MAJOR is set, MINOR is set {
|
||||
+ makedev /dev/%DEVICENAME% 0644
|
||||
+ exec mount /dev/%DEVICENAME% /mnt/%DEVICENAME%
|
||||
+}
|
||||
+
|
||||
+# Unmount a USB flashdisk
|
||||
+ACTION == remove, PHYSDEVPATH ~~ "/usb[0-9]*/", DEVICENAME ~~ "^sd[a-z][0-9]+$", MAJOR is set, MINOR is set {
|
||||
+ exec umount /mnt/%DEVICENAME%
|
||||
+}
|
||||
diff -urN -x .svn hotplug2-0.9/docs/Makefile hotplug2/docs/Makefile
|
||||
--- hotplug2-0.9/docs/Makefile 2006-09-26 00:27:02.000000000 +0200
|
||||
+++ hotplug2/docs/Makefile 2007-06-25 10:51:14.540247912 +0200
|
||||
@@ -2,12 +2,13 @@
|
||||
|
||||
BINS=
|
||||
SUBDIRS=
|
||||
-
|
||||
+DESTDIR=
|
||||
+MANDIR=/usr/share/man
|
||||
|
||||
all:
|
||||
|
||||
install:
|
||||
- $(INSTALL) $(wildcard *.8) /usr/share/man/man8/
|
||||
+ $(INSTALL) $(wildcard *.8) $(DESTDIR)$(MANDIR)/man8/
|
||||
|
||||
|
||||
include ../common.mak
|
||||
diff -urN -x .svn hotplug2-0.9/examples/Makefile hotplug2/examples/Makefile
|
||||
--- hotplug2-0.9/examples/Makefile 2006-09-26 01:03:08.000000000 +0200
|
||||
+++ hotplug2/examples/Makefile 2007-06-25 10:51:14.685225872 +0200
|
||||
@@ -2,19 +2,23 @@
|
||||
|
||||
BINS=
|
||||
SUBDIRS=
|
||||
+DESTDIR=
|
||||
+KERNELVER=`uname -r`
|
||||
|
||||
|
||||
all:
|
||||
|
||||
install:
|
||||
- case "`uname -r`" in \
|
||||
- 2.6.*) \
|
||||
- $(INSTALL) hotplug2.rules-2.6kernel /etc/hotplug2.rules \
|
||||
- ;; \
|
||||
- *) \
|
||||
- $(INSTALL) hotplug2.rules-2.4kernel /etc/hotplug2.rules \
|
||||
- ;; \
|
||||
- esac
|
||||
+ if ! [ -e "/etc/hotplug2.rules" ]; then \
|
||||
+ case "$(KERNELVER)" in \
|
||||
+ 2.6.*) \
|
||||
+ $(INSTALL) hotplug2.rules-2.6kernel $(DESTDIR)/etc/hotplug2.rules \
|
||||
+ ;; \
|
||||
+ *) \
|
||||
+ $(INSTALL) hotplug2.rules-2.4kernel $(DESTDIR)/etc/hotplug2.rules \
|
||||
+ ;; \
|
||||
+ esac; \
|
||||
+ fi;
|
||||
|
||||
|
||||
include ../common.mak
|
||||
diff -urN -x .svn hotplug2-0.9/hotplug2.c hotplug2/hotplug2.c
|
||||
--- hotplug2-0.9/hotplug2.c 2006-10-08 15:18:23.000000000 +0200
|
||||
+++ hotplug2/hotplug2.c 2007-06-25 10:51:14.688225416 +0200
|
||||
@@ -391,6 +391,7 @@
|
||||
int rv = 0;
|
||||
int i;
|
||||
char *coldplug_command = NULL;
|
||||
+ char *rules_file = HOTPLUG2_RULE_PATH;
|
||||
sigset_t block_mask;
|
||||
|
||||
struct rules_t *rules = NULL;
|
||||
@@ -435,15 +436,31 @@
|
||||
break;
|
||||
|
||||
modprobe_command = *argv;
|
||||
+ } else if (!strcmp(*argv, "--set-rules-file")) {
|
||||
+ argv++;
|
||||
+ argc--;
|
||||
+ if (argc <= 0)
|
||||
+ break;
|
||||
+
|
||||
+ rules_file = *argv;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-#ifdef HAVE_RULES
|
||||
+#ifndef HAVE_RULES
|
||||
+ /*
|
||||
+ * We don't use rules, so we use dumb mode only.
|
||||
+ */
|
||||
+ dumb = 1;
|
||||
+#else
|
||||
+ /*
|
||||
+ * We're not in dumb mode, parse the rules. If we fail,
|
||||
+ * faillback to dumb mode.
|
||||
+ */
|
||||
if (!dumb) {
|
||||
filemap = MAP_FAILED;
|
||||
- rule_fd = open(HOTPLUG2_RULE_PATH, O_RDONLY | O_NOATIME);
|
||||
+ rule_fd = open(rules_file, O_RDONLY | O_NOATIME);
|
||||
if (rule_fd == -1) {
|
||||
dumb = 1;
|
||||
ERROR("rules parse","Unable to open rules file: %s.", strerror(errno));
|
||||
@@ -477,10 +494,12 @@
|
||||
|
||||
if (dumb == 1)
|
||||
ERROR("rules parse","Parsing rules failed, switching to dumb mode.");
|
||||
- } else if (!modprobe_command)
|
||||
-#else
|
||||
- if (dumb && !modprobe_command)
|
||||
+ } else
|
||||
#endif
|
||||
+ /*
|
||||
+ * No modprobe command specified, let's autodetect it.
|
||||
+ */
|
||||
+ if (!modprobe_command)
|
||||
{
|
||||
if (get_modprobe_command()) {
|
||||
ERROR("modprobe_command","Unable to autodetect modprobe command.");
|
||||
@@ -536,7 +555,7 @@
|
||||
|
||||
modalias = get_hotplug2_value_by_key(tmpevent, "MODALIAS");
|
||||
seqnum = get_hotplug2_value_by_key(tmpevent, "SEQNUM");
|
||||
-
|
||||
+
|
||||
if (seqnum == NULL) {
|
||||
free_hotplug2_event(tmpevent);
|
||||
ERROR("reading events", "Malformed event read (missing SEQNUM).");
|
||||
@@ -547,7 +566,7 @@
|
||||
if (cur_seqnum > highest_seqnum)
|
||||
highest_seqnum = cur_seqnum;
|
||||
|
||||
- if (tmpevent->action == ACTION_ADD && (!dumb || modalias != NULL)) {
|
||||
+ if ((dumb && tmpevent->action == ACTION_ADD && modalias != NULL) || (!dumb)) {
|
||||
/*
|
||||
* We have more children than we want. Wait until SIGCHLD handler reduces
|
||||
* their numbers.
|
||||
@@ -568,11 +587,9 @@
|
||||
sigprocmask(SIG_UNBLOCK, &block_mask, 0);
|
||||
signal(SIGCHLD, SIG_DFL);
|
||||
signal(SIGUSR1, SIG_DFL);
|
||||
-#ifdef HAVE_RULES
|
||||
if (!dumb)
|
||||
perform_action(dup_hotplug2_event(tmpevent), rules);
|
||||
else
|
||||
-#endif
|
||||
perform_dumb_action(dup_hotplug2_event(tmpevent), modalias);
|
||||
exit(0);
|
||||
break;
|
||||
@@ -593,12 +610,10 @@
|
||||
signal(SIGINT, SIG_DFL);
|
||||
signal(SIGCHLD, SIG_DFL);
|
||||
|
||||
-#ifdef HAVE_RULES
|
||||
if (!dumb) {
|
||||
rules_free(rules);
|
||||
free(rules);
|
||||
}
|
||||
-#endif
|
||||
|
||||
cleanup();
|
||||
|
||||
diff -urN -x .svn hotplug2-0.9/linux24_compat/hotplug2-modwrap.c hotplug2/linux24_compat/hotplug2-modwrap.c
|
||||
--- hotplug2-0.9/linux24_compat/hotplug2-modwrap.c 2006-09-25 22:23:07.000000000 +0200
|
||||
+++ hotplug2/linux24_compat/hotplug2-modwrap.c 2007-06-25 10:51:14.601238640 +0200
|
||||
@@ -122,6 +122,12 @@
|
||||
free(module);
|
||||
free(line);
|
||||
}
|
||||
+
|
||||
+ if (strcmp(argv[argc - 1], match_alias) == 0) {
|
||||
+ if (execute(argv)) {
|
||||
+ ERROR("execute", "Unable to execute: `%s'.", argv[0]);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
free(filename);
|
||||
free(match_alias);
|
||||
diff -urN -x .svn hotplug2-0.9/linux24_compat/Makefile hotplug2/linux24_compat/Makefile
|
||||
--- hotplug2-0.9/linux24_compat/Makefile 2006-09-26 00:26:46.000000000 +0200
|
||||
+++ hotplug2/linux24_compat/Makefile 2007-06-25 10:51:14.601238640 +0200
|
||||
@@ -2,13 +2,14 @@
|
||||
|
||||
BINS=generate_alias hotplug2-coldplug-2.4 hotplug2-modwrap
|
||||
SUBDIRS=
|
||||
+DESTDIR=
|
||||
|
||||
|
||||
all: $(BINS)
|
||||
|
||||
install:
|
||||
- $(INSTALL_BIN) hotplug2-coldplug-2.4 hotplug2-modwrap /sbin/
|
||||
- $(INSTALL_BIN) generate_alias /usr/sbin/
|
||||
+ $(INSTALL_BIN) hotplug2-coldplug-2.4 hotplug2-modwrap $(DESTDIR)/sbin/
|
||||
+ $(INSTALL_BIN) generate_alias $(DESTDIR)/usr/sbin/
|
||||
|
||||
|
||||
hotplug2-coldplug-2.4: hotplug2-coldplug-2.4.o ../parser_utils.o ../filemap_utils.o ../mem_utils.o
|
||||
diff -urN -x .svn hotplug2-0.9/Makefile hotplug2/Makefile
|
||||
--- hotplug2-0.9/Makefile 2006-09-26 01:03:08.000000000 +0200
|
||||
+++ hotplug2/Makefile 2007-06-25 10:51:14.693224656 +0200
|
||||
@@ -2,12 +2,13 @@
|
||||
|
||||
BINS=hotplug2 hotplug2-dnode
|
||||
SUBDIRS=linux24_compat docs examples
|
||||
+DESTDIR=
|
||||
|
||||
|
||||
all: $(BINS)
|
||||
|
||||
install:
|
||||
- $(INSTALL_BIN) $(BINS) /sbin/
|
||||
+ $(INSTALL_BIN) $(BINS) $(DESTDIR)/sbin/
|
||||
|
||||
|
||||
hotplug2: hotplug2.o childlist.o mem_utils.o rules.o
|
||||
diff -urN -x .svn hotplug2-0.9/rules.c hotplug2/rules.c
|
||||
--- hotplug2-0.9/rules.c 2006-09-29 22:19:31.000000000 +0200
|
||||
+++ hotplug2/rules.c 2007-06-25 10:51:14.692224808 +0200
|
||||
@@ -59,6 +59,24 @@
|
||||
free(path);
|
||||
}
|
||||
|
||||
+static void rmdir_p(char *path) {
|
||||
+ char *ptr;
|
||||
+
|
||||
+ path = strdup(path);
|
||||
+ ptr = path;
|
||||
+ while (ptr != NULL) {
|
||||
+ ptr = strrchr(path, '/');
|
||||
+ if (ptr == NULL)
|
||||
+ break;
|
||||
+
|
||||
+ *ptr = '\0';
|
||||
+
|
||||
+ if (rmdir(path))
|
||||
+ break;
|
||||
+ }
|
||||
+ free(path);
|
||||
+}
|
||||
+
|
||||
static char *replace_str(char *hay, char *needle, char *replacement) {
|
||||
char *ptr, *start, *bptr, *buf;
|
||||
int occurences, j;
|
||||
@@ -250,11 +268,30 @@
|
||||
return rv;
|
||||
}
|
||||
|
||||
-static int chown_chgrp(int action, char *file, char *param) {
|
||||
+static int chmod_file(struct hotplug2_event_t *event, char *file, char *value) {
|
||||
+ int rv;
|
||||
+
|
||||
+ file = replace_key_by_value(strdup(file), event);
|
||||
+ value = replace_key_by_value(strdup(value), event);
|
||||
+
|
||||
+ rv = chmod(file, strtoul(value, 0, 8));
|
||||
+
|
||||
+ free(file);
|
||||
+ free(value);
|
||||
+
|
||||
+ return rv;
|
||||
+}
|
||||
+
|
||||
+static int chown_chgrp(struct hotplug2_event_t *event, int action, char *file, char *param) {
|
||||
struct group *grp;
|
||||
struct passwd *pwd;
|
||||
int rv;
|
||||
-
|
||||
+
|
||||
+ file = replace_key_by_value(strdup(file), event);
|
||||
+ param = replace_key_by_value(strdup(param), event);
|
||||
+
|
||||
+ rv = -1;
|
||||
+
|
||||
switch (action) {
|
||||
case ACT_CHOWN:
|
||||
pwd = getpwnam(param);
|
||||
@@ -265,8 +302,20 @@
|
||||
rv = chown(file, -1, grp->gr_gid);
|
||||
break;
|
||||
}
|
||||
+
|
||||
+ free(file);
|
||||
+ free(param);
|
||||
|
||||
- return -1;
|
||||
+ return rv;
|
||||
+}
|
||||
+
|
||||
+static int print_debug(struct hotplug2_event_t *event) {
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < event->env_vars_c; i++)
|
||||
+ printf("%s=%s\n", event->env_vars[i].key, event->env_vars[i].value);
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
static int rule_condition_eval(struct hotplug2_event_t *event, struct condition_t *condition) {
|
||||
@@ -347,11 +396,11 @@
|
||||
last_rv = make_dev_from_event(event, rule->actions[i].parameter[0], strtoul(rule->actions[i].parameter[1], NULL, 0));
|
||||
break;
|
||||
case ACT_CHMOD:
|
||||
- last_rv = chmod(rule->actions[i].parameter[0], strtoul(rule->actions[i].parameter[1], NULL, 0));
|
||||
+ last_rv = chmod_file(event, rule->actions[i].parameter[0], rule->actions[i].parameter[1]);
|
||||
break;
|
||||
case ACT_CHOWN:
|
||||
case ACT_CHGRP:
|
||||
- last_rv = chown_chgrp(rule->actions[i].type, rule->actions[i].parameter[0], rule->actions[i].parameter[1]);
|
||||
+ last_rv = chown_chgrp(event, rule->actions[i].type, rule->actions[i].parameter[0], rule->actions[i].parameter[1]);
|
||||
break;
|
||||
case ACT_SYMLINK:
|
||||
last_rv = make_symlink(event, rule->actions[i].parameter[0], rule->actions[i].parameter[1]);
|
||||
@@ -365,6 +414,13 @@
|
||||
case ACT_SETENV:
|
||||
last_rv = setenv(rule->actions[i].parameter[0], rule->actions[i].parameter[1], 1);
|
||||
break;
|
||||
+ case ACT_REMOVE:
|
||||
+ last_rv = unlink(rule->actions[i].parameter[0]);
|
||||
+ rmdir_p(rule->actions[i].parameter[0]);
|
||||
+ break;
|
||||
+ case ACT_DEBUG:
|
||||
+ last_rv = print_debug(event);
|
||||
+ break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -518,6 +574,8 @@
|
||||
{"chmod", 2, ACT_CHMOD},
|
||||
{"chgrp", 2, ACT_CHGRP},
|
||||
{"setenv", 2, ACT_SETENV},
|
||||
+ {"remove", 1, ACT_REMOVE},
|
||||
+ {"printdebug", 0, ACT_DEBUG},
|
||||
/*symlink*/
|
||||
{"symlink", 2, ACT_SYMLINK},
|
||||
{"softlink", 2, ACT_SYMLINK},
|
||||
diff -urN -x .svn hotplug2-0.9/rules.h hotplug2/rules.h
|
||||
--- hotplug2-0.9/rules.h 2006-09-25 13:42:22.000000000 +0200
|
||||
+++ hotplug2/rules.h 2007-06-25 10:51:14.687225568 +0200
|
||||
@@ -24,9 +24,11 @@
|
||||
#define ACT_CHGRP 6 /* chgrp <...> */
|
||||
#define ACT_CHOWN 7 /* chown <...> */
|
||||
#define ACT_SYMLINK 8 /* symlink <...> */
|
||||
-#define ACT_NEXT_EVENT 9 /* next */
|
||||
+#define ACT_NEXT_EVENT 9 /* next */
|
||||
#define ACT_NEXT_IF_FAILED 10 /* next_if_failed */
|
||||
#define ACT_SETENV 11 /* setenv <...> */
|
||||
+#define ACT_REMOVE 12 /* remove <...> */
|
||||
+#define ACT_DEBUG 13 /* debug */
|
||||
|
||||
#define EVAL_MATCH 1
|
||||
#define EVAL_NOT_MATCH 0
|
||||
diff -urN -x .svn hotplug2-0.9/TODO hotplug2/TODO
|
||||
--- hotplug2-0.9/TODO 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ hotplug2/TODO 2007-06-25 10:51:14.691224960 +0200
|
||||
@@ -0,0 +1 @@
|
||||
+ - live rules update (via inotify)
|
|
@ -1,13 +0,0 @@
|
|||
Index: hotplug2-0.9/hotplug2.c
|
||||
===================================================================
|
||||
--- hotplug2-0.9.orig/hotplug2.c 2007-06-25 09:07:07.038012616 +0200
|
||||
+++ hotplug2-0.9/hotplug2.c 2007-06-25 09:07:19.420130248 +0200
|
||||
@@ -555,7 +555,7 @@
|
||||
if (cur_seqnum > highest_seqnum)
|
||||
highest_seqnum = cur_seqnum;
|
||||
|
||||
- if (tmpevent->action == ACTION_ADD && (!dumb || modalias != NULL)) {
|
||||
+ if (!dumb || modalias != NULL) {
|
||||
/*
|
||||
* We have more children than we want. Wait until SIGCHLD handler reduces
|
||||
* their numbers.
|
Loading…
Reference in New Issue