chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] udevd - next round of fixes
[elogind.git]
/
udevsend.c
diff --git
a/udevsend.c
b/udevsend.c
index 3f3bbacbc2eb89712ca41d834943372c279a1ddd..f92ee2b5d8286aa539c575355ee76368b2d43ee6 100644
(file)
--- a/
udevsend.c
+++ b/
udevsend.c
@@
-34,6
+34,7
@@
#include <wait.h>
#include "udev.h"
#include <wait.h>
#include "udev.h"
+#include "udev_version.h"
#include "udevd.h"
#include "logging.h"
#include "udevd.h"
#include "logging.h"
@@
-64,7
+65,7
@@
static inline char *get_seqnum(void)
static int build_hotplugmsg(struct hotplug_msg *msg, char *action,
char *devpath, char *subsystem, int seqnum)
{
static int build_hotplugmsg(struct hotplug_msg *msg, char *action,
char *devpath, char *subsystem, int seqnum)
{
- memset(msg, 0x00, sizeof(msg));
+ memset(msg, 0x00, sizeof(
*
msg));
msg->mtype = HOTPLUGMSGTYPE;
msg->seqnum = seqnum;
strncpy(msg->action, action, 8);
msg->mtype = HOTPLUGMSGTYPE;
msg->seqnum = seqnum;
strncpy(msg->action, action, 8);
@@
-87,7
+88,8
@@
static int start_daemon(void)
case 0:
/* daemon */
setsid();
case 0:
/* daemon */
setsid();
- execl(UDEVD_EXEC, "udevd", NULL);
+ chdir("/");
+ execl(UDEVD_BIN, "udevd", NULL);
dbg("exec of daemon failed");
exit(1);
case -1:
dbg("exec of daemon failed");
exit(1);
case -1:
@@
-149,7
+151,8
@@
int main(int argc, char* argv[])
seq = atoi(seqnum);
/* create ipc message queue or get id of our existing one */
seq = atoi(seqnum);
/* create ipc message queue or get id of our existing one */
- key = ftok(UDEVD_EXEC, IPC_KEY_ID);
+ key = ftok(UDEVD_BIN, IPC_KEY_ID);
+ dbg("using ipc queue 0x%0x", key);
size = build_hotplugmsg(&message, action, devpath, subsystem, seq);
msgid = msgget(key, IPC_CREAT);
if (msgid == -1) {
size = build_hotplugmsg(&message, action, devpath, subsystem, seq);
msgid = msgget(key, IPC_CREAT);
if (msgid == -1) {
@@
-167,7
+170,7
@@
int main(int argc, char* argv[])
/* get state of ipc queue */
tspec.tv_sec = 0;
tspec.tv_nsec = 10000000; /* 10 millisec */
/* get state of ipc queue */
tspec.tv_sec = 0;
tspec.tv_nsec = 10000000; /* 10 millisec */
- loop =
30
;
+ loop =
UDEVSEND_RETRY_COUNT
;
while (loop--) {
retval = msgctl(msgid, IPC_STAT, &msg_queue);
if (retval == -1) {
while (loop--) {
retval = msgctl(msgid, IPC_STAT, &msg_queue);
if (retval == -1) {