diff options
author | ticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2008-12-15 00:10:32 (EST) |
---|---|---|
committer | ticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358> | 2008-12-15 00:10:32 (EST) |
commit | 290389440afaabe6c151481cd9e7a106a0dc3d92 (patch) | |
tree | cb55f09431d08a16b9ebf8df3233690e5e21335d | |
parent | c4e896ceda14cb1515625b020c705b521f0e306d (diff) |
libopkg: add opkg_read_config_files() function
git-svn-id: http://opkg.googlecode.com/svn/trunk@77 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
-rw-r--r-- | libopkg/opkg.c | 43 | ||||
-rw-r--r-- | libopkg/opkg.h | 1 |
2 files changed, 44 insertions, 0 deletions
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); |