chiark / gitweb /
[PATCH] actually have udev run files ending in .dev in the /etc/dev.d/ directory...
authorgreg@kroah.com <greg@kroah.com>
Thu, 25 Mar 2004 07:31:04 +0000 (23:31 -0800)
committerGreg KH <gregkh@suse.de>
Wed, 27 Apr 2005 04:35:12 +0000 (21:35 -0700)
dev_d.c

diff --git a/dev_d.c b/dev_d.c
index 36bee33bd9fbe1e049e4d0b97e5c5d280b2d2a42..9412c3da772950bdc195811052c294338bc44f89 100644 (file)
--- a/dev_d.c
+++ b/dev_d.c
@@ -36,6 +36,7 @@
 #include "logging.h"
 
 #define HOTPLUGDIR     "/etc/dev.d"
+#define SUFFIX         ".dev" 
 #define COMMENT_PREFIX '#'
 
 static void run_program(char *name)
@@ -64,7 +65,8 @@ static void execute_dir (char *dirname)
 {
        DIR *directory;
        struct dirent *entry;
-       char filename[256];
+       char filename[NAME_SIZE];
+       int name_len;
 
        dbg("opening %s", dirname);
        directory = opendir(dirname);
@@ -80,6 +82,13 @@ static void execute_dir (char *dirname)
                    (entry->d_name[0] == COMMENT_PREFIX))
                        continue;
 
+               /* Nor do we run files that do not end in ".dev" */
+               name_len = strlen(entry->d_name);
+               if (name_len < strlen(SUFFIX))
+                       continue;
+               if (strcmp(&entry->d_name[name_len - sizeof (SUFFIX) + 1], SUFFIX) != 0)
+                       continue;
+
                /* FIXME - need to use file_list_insert() here to run these in sorted order... */
                snprintf(filename, sizeof(filename), "%s%s", dirname, entry->d_name);
                filename[sizeof(filename)-1] = '\0';