Add support for getting current system hostname
authorMarcel Holtmann <marcel@holtmann.org>
Wed, 12 May 2010 17:14:46 +0000 (19:14 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 12 May 2010 17:14:46 +0000 (19:14 +0200)
include/utsname.h
src/utsname.c

index 6a1edc5..a358997 100644 (file)
@@ -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);
 };
index 4008f8f..aec8d78 100644 (file)
@@ -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;