From 13c2b4b36ee970e01db734c4b0693189c39a7a3d Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 12 May 2010 19:14:46 +0200 Subject: [PATCH] Add support for getting current system hostname --- include/utsname.h | 3 +++ src/utsname.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/include/utsname.h b/include/utsname.h index 6a1edc5..a358997 100644 --- a/include/utsname.h +++ b/include/utsname.h @@ -32,9 +32,12 @@ extern "C" { * @short_description: Functions for handling utsname */ +const char *connman_utsname_get_hostname(void); + struct connman_utsname_driver { const char *name; int priority; + const char * (*get_hostname) (void); int (*set_hostname) (const char *hostname); int (*set_domainname) (const char *domainname); }; diff --git a/src/utsname.c b/src/utsname.c index 4008f8f..aec8d78 100644 --- a/src/utsname.c +++ b/src/utsname.c @@ -68,6 +68,34 @@ void connman_utsname_driver_unregister(struct connman_utsname_driver *driver) driver_list = g_slist_remove(driver_list, driver); } +/** + * connman_utsname_get_hostname: + * + * Returns current hostname + */ +const char *connman_utsname_get_hostname(void) +{ + GSList *list; + + DBG(""); + + for (list = driver_list; list; list = list->next) { + struct connman_utsname_driver *driver = list->data; + const char *hostname; + + DBG("driver %p name %s", driver, driver->name); + + if (driver->get_hostname == NULL) + continue; + + hostname = driver->get_hostname(); + if (hostname != NULL) + return hostname; + } + + return NULL; +} + int __connman_utsname_set_hostname(const char *hostname) { GSList *list; -- 2.7.4