chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
reboot: handle -p switch properly
[elogind.git]
/
src
/
initctl.c
diff --git
a/src/initctl.c
b/src/initctl.c
index b6bcaf9fc6ecee159bd6818005167b67dfd0a766..83a560a14a538e305d16bb8f45d85cc633fa98f4 100644
(file)
--- a/
src/initctl.c
+++ b/
src/initctl.c
@@
-41,6
+41,7
@@
#include "initreq.h"
#include "special.h"
#include "sd-daemon.h"
#include "initreq.h"
#include "special.h"
#include "sd-daemon.h"
+#include "dbus-common.h"
#define SERVER_FD_MAX 16
#define TIMEOUT ((int) (10*MSEC_PER_SEC))
#define SERVER_FD_MAX 16
#define TIMEOUT ((int) (10*MSEC_PER_SEC))
@@
-231,7
+232,7
@@
static void server_done(Server *s) {
close_nointr_nofail(s->epoll_fd);
if (s->bus) {
close_nointr_nofail(s->epoll_fd);
if (s->bus) {
- dbus_connection_
set_exit_on_disconnect(s->bus, FALSE
);
+ dbus_connection_
close(s->bus
);
dbus_connection_unref(s->bus);
}
}
dbus_connection_unref(s->bus);
}
}
@@
-290,13
+291,13
@@
static int server_init(Server *s, unsigned n_sockets) {
goto fail;
}
goto fail;
}
- f->fd =
SD_LISTEN_FDS_START+i
;
+ f->fd =
fd
;
LIST_PREPEND(Fifo, fifo, s->fifos, f);
f->server = s;
s->n_fifos ++;
}
LIST_PREPEND(Fifo, fifo, s->fifos, f);
f->server = s;
s->n_fifos ++;
}
- if (
!(s->bus = dbus_connection_open("unix:abstract=/org/freedesktop/systemd1/private", &error))
) {
+ if (
bus_connect(DBUS_BUS_SYSTEM, &s->bus, NULL, &error) < 0
) {
log_error("Failed to get D-Bus connection: %s", error.message);
goto fail;
}
log_error("Failed to get D-Bus connection: %s", error.message);
goto fail;
}
@@
-336,6
+337,16
@@
int main(int argc, char *argv[]) {
Server server;
int r = 3, n;
Server server;
int r = 3, n;
+ if (getppid() != 1) {
+ log_error("This program should be invoked by init only.");
+ return 1;
+ }
+
+ if (argc > 1) {
+ log_error("This program does not take arguments.");
+ return 1;
+ }
+
log_set_target(LOG_TARGET_SYSLOG_OR_KMSG);
log_parse_environment();
log_set_target(LOG_TARGET_SYSLOG_OR_KMSG);
log_parse_environment();