X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=extras%2Frun_directory%2Fudev_run_devd.c;h=e708de8aa49d7d38b56a3be7f9f2b477bd3e9b5b;hp=02bbc8c353e4228ac384eff525abf22155693aa7;hb=04b90b7e256762bb6eecf0567ca33ceec03621f5;hpb=78e21e3ed4a038a8aa358eb109b6029ca9c3cdd1 diff --git a/extras/run_directory/udev_run_devd.c b/extras/run_directory/udev_run_devd.c index 02bbc8c35..e708de8aa 100644 --- 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 "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, ...) @@ -55,11 +55,25 @@ void log_message (int priority, const char *format, ...) int main(int argc, char *argv[], char *envp[]) { + char dirname[NAME_SIZE]; + const char *devname; + const char *my_devname; const char *subsystem; int fd; - if (getenv("DEVNAME") == NULL) + devname = getenv("DEVNAME"); + if (devname == NULL) 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"); @@ -73,6 +87,11 @@ int main(int argc, char *argv[], char *envp[]) } 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); }