projects
/
platform
/
upstream
/
connman.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Imported Upstream version 1.24
[platform/upstream/connman.git]
/
client
/
input.c
diff --git
a/client/input.c
b/client/input.c
index
8d6ecca
..
9705871
100644
(file)
--- a/
client/input.c
+++ b/
client/input.c
@@
-2,7
+2,7
@@
*
* Connection Manager
*
*
* Connection Manager
*
- * Copyright (C) 2012-201
3
Intel Corporation. All rights reserved.
+ * Copyright (C) 2012-201
4
Intel Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@
-45,7
+45,7
@@
static int saved_point;
void __connmanctl_quit(void)
{
void __connmanctl_quit(void)
{
- if (main_loop
!= NULL
)
+ if (main_loop)
g_main_loop_quit(main_loop);
}
g_main_loop_quit(main_loop);
}
@@
-85,7
+85,7
@@
static void rl_handler(char *input)
char **args, **trim_args;
int num, len, err, i;
char **args, **trim_args;
int num, len, err, i;
- if (
input == NULL
) {
+ if (
!input
) {
rl_newline(1, '\n');
g_main_loop_quit(main_loop);
return;
rl_newline(1, '\n');
g_main_loop_quit(main_loop);
return;
@@
-135,17
+135,51
@@
static char **complete_agent(const char *text, int start, int end)
return NULL;
}
return NULL;
}
-static char **complete_command(const char *text, int start, int end)
+/* Return how many parameters we have typed */
+int __connmanctl_input_calc_level(void)
{
{
- char **command = NULL;
+ int count = 0;
+ char *ptr;
+
+ ptr = rl_line_buffer;
+
+ while (*ptr) {
+ if (*ptr == ' ') {
+ if (*(ptr + 1) == ' ') {
+ ptr++;
+ continue;
+ } else
+ count++;
+ }
+ ptr++;
+ }
+
+ return count;
+}
+void __connmanctl_input_lookup_end(void)
+{
rl_attempted_completion_over = 1;
rl_attempted_completion_over = 1;
+}
- if (start == 0)
- command = rl_completion_matches(text,
+static char **complete_command(const char *text, int start, int end)
+{
+ if (start == 0) {
+ return rl_completion_matches(text,
__connmanctl_lookup_command);
__connmanctl_lookup_command);
- return command;
+ } else {
+ __connmanctl_lookup_cb cb;
+ char **str = NULL;
+
+ cb = __connmanctl_get_lookup_func(rl_line_buffer);
+ if (cb)
+ str = rl_completion_matches(text, cb);
+ else
+ rl_attempted_completion_over = 1;
+
+ return str;
+ }
}
static struct {
}
static struct {
@@
-164,7
+198,7
@@
void __connmanctl_agent_mode(const char *prompt,
agent_handler.cb = input_handler;
agent_handler.user_data = user_data;
agent_handler.cb = input_handler;
agent_handler.user_data = user_data;
- if (input_handler
!= NULL
)
+ if (input_handler)
rl_callback_handler_install(prompt, rl_agent_handler);
else {
rl_set_prompt(prompt);
rl_callback_handler_install(prompt, rl_agent_handler);
else {
rl_set_prompt(prompt);
@@
-200,17
+234,20
@@
int __connmanctl_input_init(int argc, char *argv[])
return 1;
}
return 1;
}
- channel = g_io_channel_unix_new(fileno(stdin));
- source = g_io_add_watch(channel, G_IO_IN|G_IO_ERR|G_IO_HUP|G_IO_NVAL,
- input_handler, NULL);
- g_io_channel_unref(channel);
-
if (argc < 2) {
interactive = true;
if (argc < 2) {
interactive = true;
+ channel = g_io_channel_unix_new(fileno(stdin));
+ source = g_io_add_watch(channel,
+ G_IO_IN|G_IO_ERR|G_IO_HUP|G_IO_NVAL,
+ input_handler, NULL);
+ g_io_channel_unref(channel);
+
+ __connmanctl_monitor_completions(connection);
+
__connmanctl_command_mode();
__connmanctl_command_mode();
- err = -EINPROGRESS;
+ err = -EINPROGRESS;
} else {
interactive = false;
} else {
interactive = false;
@@
-219,7
+256,7
@@
int __connmanctl_input_init(int argc, char *argv[])
err = __connmanctl_commands(connection, help, 1);
else
err = __connmanctl_commands(connection, argv + 1,
err = __connmanctl_commands(connection, help, 1);
else
err = __connmanctl_commands(connection, argv + 1,
- argc -1);
+ argc -
1);
}
if (err == -EINPROGRESS) {
}
if (err == -EINPROGRESS) {
@@
-229,15
+266,16
@@
int __connmanctl_input_init(int argc, char *argv[])
err = 0;
}
err = 0;
}
- g_source_remove(source);
+ if (interactive) {
+ g_source_remove(source);
+ __connmanctl_monitor_completions(NULL);
- if (interactive == true) {
rl_callback_handler_remove();
rl_message("");
}
dbus_connection_unref(connection);
rl_callback_handler_remove();
rl_message("");
}
dbus_connection_unref(connection);
- if (main_loop
!= NULL
)
+ if (main_loop)
g_main_loop_unref(main_loop);
if (err < 0)
g_main_loop_unref(main_loop);
if (err < 0)