Zbigniew Jędrzejewski-Szmek 62fe94
From f7f53e9e6ebb9f656d880f5e779fc174a1d983bf Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 62fe94
From: Tom Gundersen <teg@jklm.no>
Zbigniew Jędrzejewski-Szmek 62fe94
Date: Thu, 28 Aug 2014 15:47:39 +0200
Zbigniew Jędrzejewski-Szmek 62fe94
Subject: [PATCH] sd-event: allow naming event sources
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
---
Zbigniew Jędrzejewski-Szmek 62fe94
 src/libsystemd/libsystemd.sym.m4   |  2 ++
Zbigniew Jędrzejewski-Szmek 62fe94
 src/libsystemd/sd-event/sd-event.c | 29 +++++++++++++++++++++++++++++
Zbigniew Jędrzejewski-Szmek 62fe94
 src/systemd/sd-event.h             |  2 ++
Zbigniew Jędrzejewski-Szmek 62fe94
 3 files changed, 33 insertions(+)
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/libsystemd/libsystemd.sym.m4 b/src/libsystemd/libsystemd.sym.m4
Zbigniew Jędrzejewski-Szmek 62fe94
index 3fc9983f98..d1450fbb26 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/libsystemd/libsystemd.sym.m4
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/libsystemd/libsystemd.sym.m4
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -382,6 +382,8 @@ global:
Zbigniew Jędrzejewski-Szmek 62fe94
         sd_event_get_watchdog;
Zbigniew Jędrzejewski-Szmek 62fe94
         sd_event_source_ref;
Zbigniew Jędrzejewski-Szmek 62fe94
         sd_event_source_unref;
Zbigniew Jędrzejewski-Szmek 62fe94
+        sd_event_source_set_name;
Zbigniew Jędrzejewski-Szmek 62fe94
+        sd_event_source_get_name;
Zbigniew Jędrzejewski-Szmek 62fe94
         sd_event_source_set_prepare;
Zbigniew Jędrzejewski-Szmek 62fe94
         sd_event_source_get_pending;
Zbigniew Jędrzejewski-Szmek 62fe94
         sd_event_source_get_priority;
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
Zbigniew Jędrzejewski-Szmek 62fe94
index 32777e386b..a2935abd64 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/libsystemd/sd-event/sd-event.c
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/libsystemd/sd-event/sd-event.c
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -66,6 +66,8 @@ struct sd_event_source {
Zbigniew Jędrzejewski-Szmek 62fe94
         void *userdata;
Zbigniew Jędrzejewski-Szmek 62fe94
         sd_event_handler_t prepare;
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
+        char *name;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
         EventSourceType type:5;
Zbigniew Jędrzejewski-Szmek 62fe94
         int enabled:3;
Zbigniew Jędrzejewski-Szmek 62fe94
         bool pending:1;
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -685,6 +687,7 @@ static void source_free(sd_event_source *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
         assert(s);
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
         source_disconnect(s);
Zbigniew Jędrzejewski-Szmek 62fe94
+        free(s->name);
Zbigniew Jędrzejewski-Szmek 62fe94
         free(s);
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -1223,6 +1226,32 @@ _public_ sd_event_source* sd_event_source_unref(sd_event_source *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
         return NULL;
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
+_public_ int sd_event_source_set_name(sd_event_source *s, const char *name) {
Zbigniew Jędrzejewski-Szmek 62fe94
+        char *new_name = NULL;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        assert_return(s, -EINVAL);
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        if (name) {
Zbigniew Jędrzejewski-Szmek 62fe94
+                new_name = strdup(name);
Zbigniew Jędrzejewski-Szmek 62fe94
+                if (!new_name)
Zbigniew Jędrzejewski-Szmek 62fe94
+                        return -ENOMEM;
Zbigniew Jędrzejewski-Szmek 62fe94
+        }
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        free(s->name);
Zbigniew Jędrzejewski-Szmek 62fe94
+        s->name = new_name;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        return 0;
Zbigniew Jędrzejewski-Szmek 62fe94
+}
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+_public_ int sd_event_source_get_name(sd_event_source *s, const char **name) {
Zbigniew Jędrzejewski-Szmek 62fe94
+        assert_return(s, -EINVAL);
Zbigniew Jędrzejewski-Szmek 62fe94
+        assert_return(name, -EINVAL);
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        *name = s->name;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        return 0;
Zbigniew Jędrzejewski-Szmek 62fe94
+}
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
 _public_ sd_event *sd_event_source_get_event(sd_event_source *s) {
Zbigniew Jędrzejewski-Szmek 62fe94
         assert_return(s, NULL);
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/systemd/sd-event.h b/src/systemd/sd-event.h
Zbigniew Jędrzejewski-Szmek 62fe94
index 8e013b33f6..0dbdcdf2a5 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/systemd/sd-event.h
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/systemd/sd-event.h
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -109,6 +109,8 @@ sd_event *sd_event_source_get_event(sd_event_source *s);
Zbigniew Jędrzejewski-Szmek 62fe94
 void* sd_event_source_get_userdata(sd_event_source *s);
Zbigniew Jędrzejewski-Szmek 62fe94
 void* sd_event_source_set_userdata(sd_event_source *s, void *userdata);
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
+int sd_event_source_set_name(sd_event_source *s, const char *name);
Zbigniew Jędrzejewski-Szmek 62fe94
+int sd_event_source_get_name(sd_event_source *s, const char **name);
Zbigniew Jędrzejewski-Szmek 62fe94
 int sd_event_source_set_prepare(sd_event_source *s, sd_event_handler_t callback);
Zbigniew Jędrzejewski-Szmek 62fe94
 int sd_event_source_get_pending(sd_event_source *s);
Zbigniew Jędrzejewski-Szmek 62fe94
 int sd_event_source_get_priority(sd_event_source *s, int64_t *priority);