summaryrefslogtreecommitdiff
path: root/src/interface.c
diff options
context:
space:
mode:
authorBenjamin Franzke <benjaminfranzke@googlemail.com>2011-12-13 17:56:40 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2011-12-13 17:56:40 +0100
commit5761d2c1bf8e9824a04883b42d2b6ee41da206ad (patch)
treebe7bfe1222aa1b3fd1044aec6f83a0958ebc5bc5 /src/interface.c
parentfcbb51df846c13ec2d1d3be04003a4bfee3b5db5 (diff)
downloadpa-sink-ctl-5761d2c1bf8e9824a04883b42d2b6ee41da206ad.tar.gz
pa-sink-ctl-5761d2c1bf8e9824a04883b42d2b6ee41da206ad.tar.bz2
pa-sink-ctl-5761d2c1bf8e9824a04883b42d2b6ee41da206ad.zip
Add goto based error-path cleanup to main
Diffstat (limited to 'src/interface.c')
-rw-r--r--src/interface.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/interface.c b/src/interface.c
index 43b38b8..905ffa3 100644
--- a/src/interface.c
+++ b/src/interface.c
@@ -241,7 +241,7 @@ resize_gio(GIOChannel *source, GIOCondition condition, gpointer data)
}
#endif
-void
+int
interface_init(struct context *ctx)
{
GIOChannel *input_channel;
@@ -279,7 +279,7 @@ interface_init(struct context *ctx)
sigaddset(&mask, SIGWINCH);
if (sigprocmask(SIG_BLOCK, &mask, NULL) == -1)
- exit(EXIT_FAILURE);
+ return -1;
ctx->signal_fd = signalfd(-1, &mask, 0);
channel = g_io_channel_unix_new(ctx->signal_fd);
ctx->resize_source_id =
@@ -293,10 +293,12 @@ interface_init(struct context *ctx)
#endif
input_channel = g_io_channel_unix_new(STDIN_FILENO);
if (!input_channel)
- exit(EXIT_FAILURE);
+ return -1;
ctx->input_source_id = g_io_add_watch(input_channel, G_IO_IN,
interface_get_input, ctx);
g_io_channel_unref(input_channel);
refresh();
+
+ return 0;
}