chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Makefile: remove dynamic config file generation
[elogind.git]
/
udev_utils_run.c
diff --git
a/udev_utils_run.c
b/udev_utils_run.c
index 20aaa4ab05e386951a8d445d592553c5786f725e..31363588c86386da0302779575b879c38c7474dd 100644
(file)
--- a/
udev_utils_run.c
+++ b/
udev_utils_run.c
@@
-31,12
+31,9
@@
#include <sys/wait.h>
#include <sys/select.h>
#include <sys/wait.h>
#include <sys/select.h>
-#include "udev_libc_wrapper.h"
#include "udev.h"
#include "udev.h"
-#include "logging.h"
-#include "udev_utils.h"
-#include "list.h"
+extern char **environ;
int pass_env_to_socket(const char *sockname, const char *devpath, const char *action)
{
int pass_env_to_socket(const char *sockname, const char *devpath, const char *action)
{
@@
-53,7
+50,7
@@
int pass_env_to_socket(const char *sockname, const char *devpath, const char *ac
sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
memset(&saddr, 0x00, sizeof(struct sockaddr_un));
saddr.sun_family = AF_LOCAL;
sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
memset(&saddr, 0x00, sizeof(struct sockaddr_un));
saddr.sun_family = AF_LOCAL;
- /*
only abstract namespace is supported
*/
+ /*
abstract namespace only
*/
strcpy(&saddr.sun_path[1], sockname);
addrlen = offsetof(struct sockaddr_un, sun_path) + strlen(saddr.sun_path+1) + 1;
strcpy(&saddr.sun_path[1], sockname);
addrlen = offsetof(struct sockaddr_un, sun_path) + strlen(saddr.sun_path+1) + 1;
@@
-82,6
+79,7
@@
int run_program(const char *command, const char *subsystem,
int errpipe[2] = {-1, -1};
pid_t pid;
char arg[PATH_SIZE];
int errpipe[2] = {-1, -1};
pid_t pid;
char arg[PATH_SIZE];
+ char program[PATH_SIZE];
char *argv[(sizeof(arg) / 2) + 1];
int devnull;
int i;
char *argv[(sizeof(arg) / 2) + 1];
int devnull;
int i;
@@
-126,6
+124,13
@@
int run_program(const char *command, const char *subsystem,
}
}
}
}
+ /* allow programs in /lib/udev called without the path */
+ if (strchr(argv[0], '/') == NULL) {
+ strlcpy(program, "/lib/udev/", sizeof(program));
+ strlcat(program, argv[0], sizeof(program));
+ argv[0] = program;
+ }
+
pid = fork();
switch(pid) {
case 0:
pid = fork();
switch(pid) {
case 0: