tFix argument handling in nltrigger. - nldev - NetLink DEVice manager; a lightweight netlink frontend for mdev. (HTM) git clone git://r-36.net/nldev (DIR) Log (DIR) Files (DIR) Refs (DIR) LICENSE --- (DIR) commit b495d15669bc4727054c935d1b938355a5100394 (DIR) parent 1953099f5f153e6e6bb19db54bd334bc25e6f655 (HTM) Author: Christoph Lohmann <20h@r-36.net> Date: Sun, 12 Sep 2021 21:22:05 +0200 Fix argument handling in nltrigger. * Make arguments more flexible. Diffstat: nltrigger.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) --- (DIR) diff --git a/nltrigger.c b/nltrigger.c t@@ -15,8 +15,6 @@ #include "arg.h" char *argv0; -static char *action = "add"; -static useconds_t delay = 1000; static void venprintf(int, const char *, va_list); void t@@ -83,7 +81,8 @@ agetcwd(void) } void -recurse(const char *path, void (*fn)(const char *)) +recurse(char *path, char *action, useconds_t delay, + void (*fn)(char *, char *, useconds_t)) { char *cwd; struct dirent *d; t@@ -102,7 +101,7 @@ recurse(const char *path, void (*fn)(const char *)) while((d = readdir(dp))) { if(strcmp(d->d_name, ".") && strcmp(d->d_name, "..")) - fn(d->d_name); + fn(d->d_name, action, delay); } closedir(dp); t@@ -113,11 +112,11 @@ recurse(const char *path, void (*fn)(const char *)) } void -trigger(const char *path) +trigger(char *path, char *action, useconds_t delay) { int fd; - recurse(path, trigger); + recurse(path, action, delay, trigger); if (strstr(path, "uevent")) { if ((fd = open("uevent", O_WRONLY | O_CLOEXEC)) != -1) { dprintf(fd, "%s\n", action); t@@ -135,7 +134,8 @@ void usage(void) int main(int argc, char *argv[]) { - char *path = NULL; + char *path = NULL, *action = "add"; + static useconds_t delay = 1000; ARGBEGIN { default: t@@ -146,6 +146,7 @@ main(int argc, char *argv[]) usage(); path = argv[0]; + argc--; argv++; if (argc > 0) { action = argv[0]; argc--; argv++; t@@ -153,7 +154,7 @@ main(int argc, char *argv[]) if (argc > 0) delay = atol(argv[0]); - trigger(path); + trigger(path, action, delay); return 0; }