From 92fcf25b006be340a57d75882365f1a6747dc668 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sun, 4 Jan 2009 19:25:07 +0100 Subject: [PATCH] Add functions for loading and saving information --- src/connman.h | 5 ++++ src/storage.c | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) diff --git a/src/connman.h b/src/connman.h index a87c49f..e803ddc 100644 --- a/src/connman.h +++ b/src/connman.h @@ -86,6 +86,11 @@ int __connman_resolver_selftest(void); int __connman_storage_init(void); void __connman_storage_cleanup(void); +int __connman_storage_load_device(struct connman_device *device); +int __connman_storage_save_device(struct connman_device *device); +int __connman_storage_load_network(struct connman_network *network); +int __connman_storage_save_network(struct connman_network *network); + #include void __connman_driver_rescan(struct connman_driver *driver); diff --git a/src/storage.c b/src/storage.c index 1266fc2..5bf3f3f 100644 --- a/src/storage.c +++ b/src/storage.c @@ -66,6 +66,86 @@ void connman_storage_unregister(struct connman_storage *storage) storage_list = g_slist_remove(storage_list, storage); } +int __connman_storage_load_device(struct connman_device *device) +{ + GSList *list; + + DBG("device %p", device); + + for (list = storage_list; list; list = list->next) { + struct connman_storage *storage = list->data; + + if (storage->device_load) { + DBG("%s", storage->name); + + if (storage->device_load(device) == 0) + return 0; + } + } + + return -ENOENT; +} + +int __connman_storage_save_device(struct connman_device *device) +{ + GSList *list; + + DBG("device %p", device); + + for (list = storage_list; list; list = list->next) { + struct connman_storage *storage = list->data; + + if (storage->device_save) { + DBG("%s", storage->name); + + if (storage->device_save(device) == 0) + return 0; + } + } + + return -ENOENT; +} + +int __connman_storage_load_network(struct connman_network *network) +{ + GSList *list; + + DBG("network %p", network); + + for (list = storage_list; list; list = list->next) { + struct connman_storage *storage = list->data; + + if (storage->network_load) { + DBG("%s", storage->name); + + if (storage->network_load(network) == 0) + return 0; + } + } + + return -ENOENT; +} + +int __connman_storage_save_network(struct connman_network *network) +{ + GSList *list; + + DBG("network %p", network); + + for (list = storage_list; list; list = list->next) { + struct connman_storage *storage = list->data; + + if (storage->network_save) { + DBG("%s", storage->name); + + if (storage->network_save(network) == 0) + return 0; + } + } + + return -ENOENT; +} + int __connman_storage_init(void) { DBG(""); -- 1.7.9.5