--- ../udev/namedev.c 2003-11-19 12:56:50.000000000 +0100 +++ namedev.c 2003-11-20 04:14:54.000000000 +0100 @@ -480,6 +480,9 @@ pid_t pid; int value_set = 0; char buffer[256]; + char *prog; + char *args[8]; + int i; dbg("callout to %s\n", dev->exec_program); retval = pipe(fds); @@ -499,7 +502,19 @@ */ close(STDOUT_FILENO); dup(fds[1]); /* dup write side of pipe to STDOUT */ - retval = execve(dev->exec_program, main_argv, main_envp); + if (strchr(dev->exec_program, ' ')) { + /* callout with arguments */ + strcpy(buffer, dev->exec_program); + prog = strtok(buffer, " "); + for(i=1; i<=8; i++) { + args[i] = strtok(NULL, " "); + if (args[i] == NULL) + break; + } + retval = execve(prog, args, main_envp); + } else { + retval = execve(dev->exec_program, main_argv, main_envp); + } if (retval != 0) { dbg("child execve failed"); exit(1); @@ -528,6 +543,7 @@ strncpy(value, buffer, len); } } + dbg("callout returned '%s'", value); close(fds[0]); res = wait(&status); if (res < 0) {