2 * udev_run_directory.c - directory multiplexer
4 * Copyright (C) 2005 Kay Sievers <kay@vrfy.org>
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation version 2 of the License.
21 #include <sys/types.h>
25 #include "../../udev_utils.h"
26 #include "../../list.h"
27 #include "../../logging.h"
28 #include "run_directory.h"
30 static int exec_program(const char *filename, const char *subsystem)
34 dbg("running %s", filename);
39 execl(filename, filename, subsystem, NULL);
40 dbg("exec of child failed");
43 dbg("fork of child failed");
47 waitpid(pid, NULL, 0);
53 int run_directory(const char *dir, const char *suffix, const char *subsystem)
55 struct name_entry *name_loop, *name_tmp;
59 dbg("looking at '%s'", dir);
61 if (stat(dir, &buf) != 0) {
62 dbg("directory '%s' not found", dir);
66 add_matching_files(&name_list, dir, suffix);
68 list_for_each_entry_safe(name_loop, name_tmp, &name_list, node) {
69 exec_program(name_loop->name, subsystem);
70 list_del(&name_loop->node);