From 290389440afaabe6c151481cd9e7a106a0dc3d92 Mon Sep 17 00:00:00 2001 From: ticktock35 Date: Mon, 15 Dec 2008 05:10:32 +0000 Subject: [PATCH] libopkg: add opkg_read_config_files() function git-svn-id: http://opkg.googlecode.com/svn/trunk@77 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358 --- libopkg/opkg.c | 43 +++++++++++++++++++++++++++++++++++++++++++ libopkg/opkg.h | 1 + 2 files changed, 44 insertions(+) diff --git a/libopkg/opkg.c b/libopkg/opkg.c index 54e1a69..f72bd78 100644 --- a/libopkg/opkg.c +++ b/libopkg/opkg.c @@ -107,6 +107,49 @@ opkg_free (opkg_t *opkg) args_deinit (opkg->args); } +int +opkg_read_config_files (opkg_t *opkg) +{ + args_t *a = opkg->args; + opkg_conf_t *c = opkg->conf; + + /* Unfortunatly, the easiest way to re-read the config files right now is to + * throw away opkg->conf and start again */ + + /* copy the settings we need to keep */ + a->autoremove = c->autoremove; + a->force_depends = c->force_depends; + a->force_defaults = c->force_defaults; + a->force_overwrite = c->force_overwrite; + a->force_downgrade = c->force_downgrade; + a->force_reinstall = c->force_reinstall; + a->force_removal_of_dependent_packages = c->force_removal_of_dependent_packages; + a->force_removal_of_essential_packages = c->force_removal_of_essential_packages; + a->nodeps = c->nodeps; + a->noaction = c->noaction; + a->query_all = c->query_all; + a->multiple_providers = c->multiple_providers; + a->verbosity = c->verbosity; + + if (a->offline_root) free (a->offline_root); + a->offline_root = strdup (c->offline_root); + + if (a->offline_root_pre_script_cmd) free (a->offline_root_pre_script_cmd); + a->offline_root_pre_script_cmd = strdup (c->offline_root_pre_script_cmd); + + if (a->offline_root_post_script_cmd) free (a->offline_root_post_script_cmd); + a->offline_root_post_script_cmd = strdup (c->offline_root_post_script_cmd); + + /* throw away old opkg_conf and start again */ + opkg_conf_deinit (opkg->conf); + opkg_conf_init (opkg->conf, opkg->args); + + free (opkg->options); + opkg_init_options_array (opkg->conf, &opkg->options); + + return 0; +} + void opkg_get_option (opkg_t *opkg, char *option, void **value) { diff --git a/libopkg/opkg.h b/libopkg/opkg.h index 029b20c..0ee1887 100644 --- a/libopkg/opkg.h +++ b/libopkg/opkg.h @@ -21,6 +21,7 @@ opkg_t* opkg_new (); void opkg_free (opkg_t *opkg); void opkg_get_option (opkg_t *opkg, char *option, void **value); void opkg_set_option (opkg_t *opkg, char *option, void *value); +int opkg_read_config_files (opkg_t *opkg); int opkg_install_package (opkg_t *opkg, char *package_name); int opkg_remove_package (opkg_t *opkg, char *package_name); -- 2.25.1