summaryrefslogtreecommitdiff
path: root/attrib
diff options
context:
space:
mode:
authorEder Ruiz Maria <eder.ruiz@openbossa.org>2013-04-02 19:31:27 -0400
committerJohan Hedberg <johan.hedberg@intel.com>2013-04-17 11:23:07 +0300
commit46b9b1345e121389201355e094bb48124463fef3 (patch)
tree736bbc8b85a8ee5d2a1d031ba84e0a27f536bac9 /attrib
parent4fe74261765b633a737299ee4782694e12ef7f99 (diff)
gatttool: Use bluetoothctl strategy to handle standard input
Use GSource id returned by g_io_add_watch() instead of raw GIOChannel to handle stdin and glib main loop.
Diffstat (limited to 'attrib')
-rw-r--r--attrib/interactive.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/attrib/interactive.c b/attrib/interactive.c
index 75203242a..fa3f82a7e 100644
--- a/attrib/interactive.c
+++ b/attrib/interactive.c
@@ -906,11 +906,26 @@ static char **commands_completion(const char *text, int start, int end)
return NULL;
}
+static guint setup_standard_input(void)
+{
+ GIOChannel *channel;
+ guint source;
+
+ channel = g_io_channel_unix_new(fileno(stdin));
+
+ source = g_io_add_watch(channel,
+ G_IO_IN | G_IO_HUP | G_IO_ERR | G_IO_NVAL,
+ prompt_read, NULL);
+
+ g_io_channel_unref(channel);
+
+ return source;
+}
+
int interactive(const gchar *src, const gchar *dst,
const gchar *dst_type, int psm)
{
- GIOChannel *pchan;
- gint events;
+ guint input;
opt_sec_level = g_strdup("low");
@@ -923,10 +938,7 @@ int interactive(const gchar *src, const gchar *dst,
event_loop = g_main_loop_new(NULL, FALSE);
- pchan = g_io_channel_unix_new(fileno(stdin));
- g_io_channel_set_close_on_unref(pchan, TRUE);
- events = G_IO_IN | G_IO_ERR | G_IO_HUP | G_IO_NVAL;
- g_io_add_watch(pchan, events, prompt_read, NULL);
+ input = setup_standard_input();
rl_attempted_completion_function = commands_completion;
rl_erase_empty_line = 1;
@@ -936,7 +948,7 @@ int interactive(const gchar *src, const gchar *dst,
rl_callback_handler_remove();
cmd_disconnect(0, NULL);
- g_io_channel_unref(pchan);
+ g_source_remove(input);
g_main_loop_unref(event_loop);
g_string_free(prompt, TRUE);