#include <signal.h>
#include "audit.h"
-static int terminate = 0;
-
-int sigint_handler(sd_event_source *s,
- const struct signalfd_siginfo *si,
- void *userdata)
-{
- terminate = 1;
- return 0;
-}
#if 0
#include <stdbool.h>
};
};
#endif
+static int terminate = 0;
+
+int on_unit_properties_changed(sd_bus_message *m, void *userdata, sd_bus_error *ret_error);
int dbus_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata);
+int sigint_handler(sd_event_source *s, const struct signalfd_siginfo *si, void *userdata);
+
+int sigint_handler(sd_event_source *s,
+ const struct signalfd_siginfo *si,
+ void *userdata)
+{
+ sd_event* loop = userdata;
+ sd_event_exit(loop, 0);
+ terminate = 1;
+ return 0;
+}
+
+int on_unit_properties_changed(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
+ int rc = 1;
+ fprintf(stdout,"'");
+ fflush(stdout);
+ /* const char* path; */
+
+ /* path = NULL; */
+ return rc;
+}
int dbus_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
sd_bus* bus = userdata;
int aufd;
sigset_t ss;
+#if 1
+ rc = sd_bus_default_system(&bus);
+ if (rc < 0) {
+ fprintf(stderr, "Failed to acquire the defult system bus connection.\n");
+ return 1;
+ }
+#else
rc = sd_bus_new(&bus);
if (rc < 0) {
fprintf(stderr, "Failed to create a new bus.\n");
fprintf(stderr, "Failed to connect to the bus.\n");
return -1;
}
+#endif
+ rc = sd_bus_add_match(bus,
+ NULL,
+ "type='signal',sender='org.freedesktop.systemd1',"
+ "interface='org.freedesktop.DBus.Properties',"
+ "member='PropertiesChanged',"
+ "path_namespace='/org/freedesktop/systemd1/unit'",
+ on_unit_properties_changed,
+ NULL);
+ if (rc < 0) {
+ fprintf(stderr, "Failed to add match");
+ return -1;
+ }
rc = sd_bus_call_method(bus,
"org.freedesktop.systemd1",
return -1;
}
-#if 1
+#if 0
rc = sd_event_add_io(loop,
&source,
sd_bus_get_fd(bus),
sigemptyset(&ss);
sigaddset(&ss, SIGINT);
rc = sigprocmask(SIG_BLOCK, &ss, NULL);
- rc = sd_event_add_signal(loop, NULL, SIGINT, sigint_handler, NULL);
+ rc = sd_event_add_signal(loop, NULL, SIGINT, sigint_handler, loop);
// sd_event_add_io(loop, NULL, sd_bus_get_fd(bus), EPOLLIN | EPOLLOUT, dbus_handler, (void*)bus);