]> git.sur5r.net Git - i3/i3/commitdiff
Fix compiler-warnings from libev
authorAxel Wagner <mail@merovius.de>
Thu, 28 Apr 2011 17:54:31 +0000 (19:54 +0200)
committerAxel Wagner <mail@merovius.de>
Thu, 28 Apr 2011 18:24:52 +0000 (20:24 +0200)
i3bar/src/ipc.c
i3bar/src/main.c

index d5c180338da038ae313e682ae355f81022d95ed6..e7303bf8f5402fef6bf519e504f57535eb2e3fcc 100644 (file)
@@ -20,8 +20,8 @@
 
 #include "common.h"
 
-ev_io      i3_connection;
-ev_timer   reconn;
+ev_io      *i3_connection;
+ev_timer   *reconn = NULL;
 
 const char *sock_path;
 
@@ -52,8 +52,14 @@ void retry_connection(struct ev_loop *loop, ev_timer *w, int events) {
  *
  */
 void reconnect() {
-    ev_timer_init(&reconn, retry_connection, 0.25, 0.25);
-    ev_timer_start(main_loop, &reconn);
+    if (reconn == NULL) {
+        if ((reconn = malloc(sizeof(ev_timer))) == NULL) {
+            ELOG("malloc() failed: %s\n", strerror(errno));
+            exit(EXIT_FAILURE);
+        }
+    }
+    ev_timer_init(reconn, retry_connection, 0.25, 0.25);
+    ev_timer_start(main_loop, reconn);
 }
 
 /*
@@ -255,7 +261,7 @@ int i3_send_msg(uint32_t type, const char *payload) {
     uint32_t written = 0;
 
     while (to_write > 0) {
-        int n = write(i3_connection.fd, buffer + written, to_write);
+        int n = write(i3_connection->fd, buffer + written, to_write);
         if (n == -1) {
             ELOG("write() failed: %s\n", strerror(errno));
             exit(EXIT_FAILURE);
@@ -293,8 +299,13 @@ int init_connection(const char *socket_path) {
         return 0;
     }
 
-    ev_io_init(&i3_connection, &got_data, sockfd, EV_READ);
-    ev_io_start(main_loop, &i3_connection);
+    i3_connection = malloc(sizeof(ev_io));
+    if (i3_connection == NULL) {
+        ELOG("malloc() failed: %s\n", strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+    ev_io_init(i3_connection, &got_data, sockfd, EV_READ);
+    ev_io_start(main_loop, i3_connection);
     return 1;
 }
 
@@ -302,8 +313,8 @@ int init_connection(const char *socket_path) {
  * Destroy the connection to i3.
  */
 void destroy_connection() {
-    close(i3_connection.fd);
-    ev_io_stop(main_loop, &i3_connection);
+    close(i3_connection->fd);
+    ev_io_stop(main_loop, i3_connection);
 }
 
 /*
index dd3b93150821fb19788254e11211a6656cde28bc..14bd917de8b18421e2dbdec23da21f5e71f8e683 100644 (file)
@@ -232,15 +232,22 @@ int main(int argc, char **argv) {
     /* We listen to SIGTERM/QUIT/INT and try to exit cleanly, by stopping the main-loop.
      * We only need those watchers on the stack, so putting them on the stack saves us
      * some calls to free() */
-    ev_signal sig_term, sig_int, sig_hup;
+    ev_signal *sig_term = malloc(sizeof(ev_signal));
+    ev_signal *sig_int = malloc(sizeof(ev_signal));
+    ev_signal *sig_hup = malloc(sizeof(ev_signal));
 
-    ev_signal_init(&sig_term, &sig_cb, SIGTERM);
-    ev_signal_init(&sig_int, &sig_cb, SIGINT);
-    ev_signal_init(&sig_hup, &sig_cb, SIGHUP);
+    if (sig_term == NULL || sig_int == NULL || sig_hup == NULL) {
+        ELOG("malloc() failed: %s\n", strerror(errno));
+        exit(EXIT_FAILURE);
+    }
+
+    ev_signal_init(sig_term, &sig_cb, SIGTERM);
+    ev_signal_init(sig_int, &sig_cb, SIGINT);
+    ev_signal_init(sig_hup, &sig_cb, SIGHUP);
 
-    ev_signal_start(main_loop, &sig_term);
-    ev_signal_start(main_loop, &sig_int);
-    ev_signal_start(main_loop, &sig_hup);
+    ev_signal_start(main_loop, sig_term);
+    ev_signal_start(main_loop, sig_int);
+    ev_signal_start(main_loop, sig_hup);
 
     /* From here on everything should run smooth for itself, just start listening for
      * events. We stop simply stop the event-loop, when we are finished */