summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libopkg/opkg_conf.c29
-rw-r--r--libopkg/pkg_dest.h1
2 files changed, 19 insertions, 11 deletions
diff --git a/libopkg/opkg_conf.c b/libopkg/opkg_conf.c
index 2a3ea0c..425c72b 100644
--- a/libopkg/opkg_conf.c
+++ b/libopkg/opkg_conf.c
@@ -687,22 +687,24 @@ static int opkg_conf_set_option(const opkg_option_t *options,
int opkg_conf_write_status_files(opkg_conf_t *conf)
{
+ pkg_dest_list_elt_t *iter;
pkg_dest_t *dest;
pkg_vec_t *all;
pkg_t *pkg;
- int i;
- FILE *fp;
+ int i, ret = 0;
if (conf->noaction)
return 0;
- dest = (pkg_dest_t *)void_list_first(&conf->pkg_dest_list)->data;
+ list_for_each_entry(iter, &conf->pkg_dest_list.head, node) {
+ dest = (pkg_dest_t *)iter->data;
- fp = fopen(dest->status_file_name, "w");
- if (fp == NULL) {
- fprintf(stderr, "%s: Can't open status file: %s for writing: %s\n",
- __FUNCTION__, dest->status_file_name, strerror(errno));
- return -1;
+ dest->status_fp = fopen(dest->status_file_name, "w");
+ if (dest->status_fp == NULL) {
+ fprintf(stderr, "%s: Can't open status file: %s: %s\n",
+ __FUNCTION__, dest->status_file_name, strerror(errno));
+ ret = -1;
+ }
}
all = pkg_vec_alloc();
@@ -723,13 +725,18 @@ int opkg_conf_write_status_files(opkg_conf_t *conf)
__FUNCTION__, pkg->name);
continue;
}
- pkg_print_status(pkg, fp);
+ if (pkg->dest->status_fp)
+ pkg_print_status(pkg, pkg->dest->status_fp);
}
pkg_vec_free(all);
- fclose(fp);
- return 0;
+ list_for_each_entry(iter, &conf->pkg_dest_list.head, node) {
+ dest = (pkg_dest_t *)iter->data;
+ fclose(dest->status_fp);
+ }
+
+ return ret;
}
diff --git a/libopkg/pkg_dest.h b/libopkg/pkg_dest.h
index b290664..e0840cc 100644
--- a/libopkg/pkg_dest.h
+++ b/libopkg/pkg_dest.h
@@ -29,6 +29,7 @@ struct pkg_dest
char *lists_dir;
char *info_dir;
char *status_file_name;
+ FILE *status_fp;
};
int pkg_dest_init(pkg_dest_t *dest, const char *name, const char *root_dir,const char *lists_dir);