chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Really commit the udev_run_devd changes...
[elogind.git]
/
extras
/
run_directory
/
udev_run_devd.c
diff --git
a/extras/run_directory/udev_run_devd.c
b/extras/run_directory/udev_run_devd.c
index 02bbc8c353e4228ac384eff525abf22155693aa7..e708de8aa49d7d38b56a3be7f9f2b477bd3e9b5b 100644
(file)
--- a/
extras/run_directory/udev_run_devd.c
+++ b/
extras/run_directory/udev_run_devd.c
@@
-25,8
+25,8
@@
#include "../../udev_utils.h"
#include "../../list.h"
#include "../../logging.h"
#include "../../udev_utils.h"
#include "../../list.h"
#include "../../logging.h"
+#include "run_directory.h"
-extern int run_directory(const char *dir, const char *suffix, const char *subsystem);
#ifdef USE_LOG
void log_message (int priority, const char *format, ...)
#ifdef USE_LOG
void log_message (int priority, const char *format, ...)
@@
-55,11
+55,25
@@
void log_message (int priority, const char *format, ...)
int main(int argc, char *argv[], char *envp[])
{
int main(int argc, char *argv[], char *envp[])
{
+ char dirname[NAME_SIZE];
+ const char *devname;
+ const char *my_devname;
const char *subsystem;
int fd;
const char *subsystem;
int fd;
- if (getenv("DEVNAME") == NULL)
+ devname = getenv("DEVNAME");
+ if (devname == NULL)
exit(0);
exit(0);
+ /*
+ * Hack, we are assuming that the device nodes are in /dev,
+ * if not, this will not work, but you should be using the
+ * RUN= rule anyway...
+ */
+ my_devname = strstr(devname, "/dev/");
+ if (my_devname != NULL)
+ my_devname = &my_devname[5];
+ else
+ my_devname = devname;
subsystem = argv[1];
logging_init("udev_run_devd");
subsystem = argv[1];
logging_init("udev_run_devd");
@@
-73,6
+87,11
@@
int main(int argc, char *argv[], char *envp[])
}
dbg("running dev.d directory");
}
dbg("running dev.d directory");
- run_directory("/etc/dev.d", ".dev", subsystem);
+ sprintf(dirname, "/etc/dev.d/%s", my_devname);
+ run_directory(dirname, ".dev", subsystem);
+ sprintf(dirname, "/etc/dev.d/%s", subsystem);
+ run_directory(dirname, ".dev", subsystem);
+ run_directory("/etc/dev.d/default", ".dev", subsystem);
+
exit(0);
}
exit(0);
}