summaryrefslogtreecommitdiffstats
path: root/libopkg
diff options
context:
space:
mode:
Diffstat (limited to 'libopkg')
-rw-r--r--libopkg/opkg.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/libopkg/opkg.c b/libopkg/opkg.c
index 60475f3..a4fefa0 100644
--- a/libopkg/opkg.c
+++ b/libopkg/opkg.c
@@ -52,8 +52,11 @@ struct _opkg_t
/** Private Functions ***/
+/**
+ * Clone a pkg_t
+ */
static opkg_package_t*
-old_pkg_to_new (pkg_t *old)
+pkg_clone (pkg_t *old)
{
opkg_package_t *new;
@@ -70,6 +73,8 @@ old_pkg_to_new (pkg_t *old)
new->tags = sstrdup (old->tags);
new->url = sstrdup (old->url);
+#undef sstrdup
+
new->size = (old->size) ? atoi (old->size) : 0;
new->installed = (old->state_status == SS_INSTALLED);
@@ -418,7 +423,7 @@ opkg_install_package (opkg_t *opkg, const char *package_name, opkg_progress_call
new->state_flag |= SF_USER;
pdata.action = OPKG_INSTALL;
- pdata.package = old_pkg_to_new (new);
+ pdata.package = pkg_clone (new);
progress (pdata, 0);
@@ -448,7 +453,7 @@ opkg_install_package (opkg_t *opkg, const char *package_name, opkg_progress_call
continue;
opkg_package_free (pdata.package);
- pdata.package = old_pkg_to_new (pkg);
+ pdata.package = pkg_clone (pkg);
pdata.action = OPKG_DOWNLOAD;
if (pkg->src == NULL)
@@ -500,7 +505,7 @@ opkg_install_package (opkg_t *opkg, const char *package_name, opkg_progress_call
/* 75% of "install" progress is for downloading */
opkg_package_free (pdata.package);
- pdata.package = old_pkg_to_new (new);
+ pdata.package = pkg_clone (new);
pdata.action = OPKG_INSTALL;
progress (pdata, 75);
@@ -564,7 +569,7 @@ opkg_remove_package (opkg_t *opkg, const char *package_name, opkg_progress_callb
}
pdata.action = OPKG_REMOVE;
- pdata.package = old_pkg_to_new (pkg);
+ pdata.package = pkg_clone (pkg);
progress (pdata, 0);
@@ -640,7 +645,7 @@ opkg_upgrade_package (opkg_t *opkg, const char *package_name, opkg_progress_call
}
pdata.action = OPKG_INSTALL;
- pdata.package = old_pkg_to_new (pkg);
+ pdata.package = pkg_clone (pkg);
progress (pdata, 0);
err = opkg_upgrade_pkg (opkg->conf, pkg);
@@ -701,7 +706,7 @@ opkg_upgrade_all (opkg_t *opkg, opkg_progress_callback_t progress_callback, void
{
pkg = installed->pkgs[i];
- pdata.package = old_pkg_to_new (pkg);
+ pdata.package = pkg_clone (pkg);
progress (pdata, 99 * i / installed->len);
opkg_package_free (pdata.package);
@@ -916,7 +921,7 @@ opkg_list_packages (opkg_t *opkg, opkg_package_callback_t callback, void *user_d
pkg = all->pkgs[i];
- package = old_pkg_to_new (pkg);
+ package = pkg_clone (pkg);
callback (opkg, package, user_data);
opkg_package_free (package);
}
@@ -948,7 +953,7 @@ opkg_list_upgradable_packages (opkg_t *opkg, opkg_package_callback_t callback, v
new = pkg_hash_fetch_best_installation_candidate_by_name(opkg->conf, old->name, NULL);
- package = old_pkg_to_new (new);
+ package = pkg_clone (new);
callback (opkg, package, user_data);
opkg_package_free (package);
}
@@ -1005,7 +1010,7 @@ opkg_find_package (opkg_t *opkg, const char *name, const char *ver, const char *
}
/* match found */
- package = old_pkg_to_new (pkg);
+ package = pkg_clone (pkg);
break;
}