This email list is read-only. Emails sent to this list will be discarded ---------------------------------- .gitignore | 1 + bootstrap-configure | 2 +- client/Makefile.am | 10 ++++ client/main.c | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 4 ++ 5 files changed, 145 insertions(+), 1 deletions(-)
New commits: commit ee6687c3d473d45ecb77bd221f4b4dcb7172117a Author: Marcel Holtmann <[email protected]> Date: Mon Dec 22 13:18:53 2008 +0100 Make the client application optional commit a9933b375fdf3a07a07d260b68200f0c2fda9331 Author: Marcel Holtmann <[email protected]> Date: Mon Dec 22 13:11:23 2008 +0100 Add really simple client application Diff in this email is a maximum of 400 lines. diff --git a/.gitignore b/.gitignore index f4b0834..40db380 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,7 @@ src/connman.ver src/connman.service scripts/connman scripts/dhclient-script +client/cm doc/*.bak doc/*.stamp doc/connman.* diff --git a/bootstrap-configure b/bootstrap-configure index 0714169..5a7e4dc 100755 --- a/bootstrap-configure +++ b/bootstrap-configure @@ -16,4 +16,4 @@ fi --mandir=/usr/share/man \ --localstatedir=/var \ --sysconfdir=/etc \ - --disable-fake $* + --enable-client $* diff --git a/client/Makefile.am b/client/Makefile.am index 0274292..4dc1608 100644 --- a/client/Makefile.am +++ b/client/Makefile.am @@ -1,2 +1,12 @@ +if CLIENT +noinst_PROGRAMS = cm + +cm_SOURCES = main.c + +cm_LDADD = @DBUS_LIBS@ +endif + +AM_CFLAGS = @DBUS_CFLAGS@ + MAINTAINERCLEANFILES = Makefile.in diff --git a/client/main.c b/client/main.c new file mode 100644 index 0000000..cb28257 --- /dev/null +++ b/client/main.c @@ -0,0 +1,129 @@ +/* + * + * Connection Manager + * + * Copyright (C) 2007-2008 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 version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdio.h> +#include <errno.h> +#include <stdlib.h> +#include <string.h> + +#include <dbus/dbus.h> + +#define CONNMAN_SERVICE "org.moblin.connman" + +#define CONNMAN_MANAGER_INTERFACE CONNMAN_SERVICE ".Manager" +#define CONNMAN_MANAGER_PATH "/" + +static const char *extract_state(DBusMessage *message) +{ + DBusMessageIter array, dict; + + dbus_message_iter_init(message, &array); + dbus_message_iter_recurse(&array, &dict); + + while (dbus_message_iter_get_arg_type(&dict) == DBUS_TYPE_DICT_ENTRY) { + DBusMessageIter entry, value; + const char *key; + + dbus_message_iter_recurse(&dict, &entry); + dbus_message_iter_get_basic(&entry, &key); + + dbus_message_iter_next(&entry); + + dbus_message_iter_recurse(&entry, &value); + + //type = dbus_message_iter_get_arg_type(&value); + //dbus_message_iter_get_basic(&value, &val); + + if (strcmp(key, "State") == 0) { + const char *val; + dbus_message_iter_get_basic(&value, &val); + return val; + } + + dbus_message_iter_next(&dict); + } + + return NULL; +} + +static int cmd_status(DBusConnection *connection) +{ + DBusMessage *message, *reply; + DBusError error; + const char *state; + + message = dbus_message_new_method_call(CONNMAN_SERVICE, + CONNMAN_MANAGER_PATH, + CONNMAN_MANAGER_INTERFACE, + "GetProperties"); + if (message == NULL) + return -ENOMEM; + + dbus_error_init(&error); + + reply = dbus_connection_send_with_reply_and_block(connection, + message, -1, &error); + if (reply == NULL) { + if (dbus_error_is_set(&error) == TRUE) { + fprintf(stderr, "%s\n", error.message); + dbus_error_free(&error); + } else + fprintf(stderr, "Failed to get properties\n"); + dbus_message_unref(message); + return -EIO; + } + + dbus_message_unref(message); + + dbus_error_init(&error); + + state = extract_state(reply); + + dbus_message_unref(reply); + + if (state == NULL) + return -EINVAL; + + printf("System is %s\n", state); + + return 0; +} + +int main(int argc, char *argv[]) +{ + DBusConnection *conn; + + conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL); + if (!conn) { + fprintf(stderr, "Can't get on system bus\n"); + exit(1); + } + + cmd_status(conn); + + dbus_connection_unref(conn); + + return 0; +} diff --git a/configure.ac b/configure.ac index fea1130..15acdbc 100644 --- a/configure.ac +++ b/configure.ac @@ -86,6 +86,10 @@ AC_SUBST(POLKIT_CFLAGS) AC_SUBST(POLKIT_LIBS) AM_CONDITIONAL(POLKIT, test "${polkit_found}" = "yes") +AC_ARG_ENABLE(client, AC_HELP_STRING([--enable-client], + [enable command line client]), [enable_client=${enableval}]) +AM_CONDITIONAL(CLIENT, test "${enable_client}" = "yes") + AC_ARG_ENABLE(fake, AC_HELP_STRING([--enable-fake], [enable fake plugin]), [enable_fake=${enableval}]) AM_CONDITIONAL(FAKE, test "${enable_fake}" = "yes") _______________________________________________ Commits mailing list [email protected] https://lists.moblin.org/mailman/listinfo/commits
