summaryrefslogtreecommitdiff
path: root/udev_lib.c
diff options
context:
space:
mode:
authorkay.sievers@vrfy.org <kay.sievers@vrfy.org>2004-11-12 06:20:22 +0100
committerGreg KH <gregkh@suse.de>2005-04-26 22:24:38 -0700
commitaf4b05d4917fdfa55eff3d8d53a830464d8162a1 (patch)
tree352f8b4180c9be6f848c7f69517783b7912c42d3 /udev_lib.c
parent13f24d596c5638443ffc7bc48c10a66758335c74 (diff)
[PATCH] make the udev object available to more processing stages
Remove the overwriting of main_argv[] hack and use the values from the udev object. Pass the udev object to call_foreach_file(). In the udevstart case, export SUBSYSTEM and UDEVSTART to the environment.
Diffstat (limited to 'udev_lib.c')
-rw-r--r--udev_lib.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/udev_lib.c b/udev_lib.c
index 84daf9fd19..012d60b0ea 100644
--- a/udev_lib.c
+++ b/udev_lib.c
@@ -178,12 +178,12 @@ static int file_list_insert(char *filename, struct list_head *file_list)
}
/* calls function for every file found in specified directory */
-int call_foreach_file(int fnct(char *f) , char *dirname, char *suffix)
+int call_foreach_file(file_fnct_t fnct, const char *dirname,
+ const char *suffix, void *data)
{
struct dirent *ent;
DIR *dir;
char *ext;
- char file[NAME_SIZE];
struct files *loop_file;
struct files *tmp_file;
LIST_HEAD(file_list);
@@ -217,10 +217,12 @@ int call_foreach_file(int fnct(char *f) , char *dirname, char *suffix)
/* call function for every file in the list */
list_for_each_entry_safe(loop_file, tmp_file, &file_list, list) {
- snprintf(file, NAME_SIZE-1, "%s/%s", dirname, loop_file->name);
- file[NAME_SIZE-1] = '\0';
+ char filename[NAME_SIZE];
- fnct(file);
+ snprintf(filename, NAME_SIZE-1, "%s/%s", dirname, loop_file->name);
+ filename[NAME_SIZE-1] = '\0';
+
+ fnct(filename, data);
list_del(&loop_file->list);
free(loop_file);