/** 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;
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);
new->state_flag |= SF_USER;
pdata.action = OPKG_INSTALL;
- pdata.package = old_pkg_to_new (new);
+ pdata.package = pkg_clone (new);
progress (pdata, 0);
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)
/* 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);
}
pdata.action = OPKG_REMOVE;
- pdata.package = old_pkg_to_new (pkg);
+ pdata.package = pkg_clone (pkg);
progress (pdata, 0);
}
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);
{
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);
pkg = all->pkgs[i];
- package = old_pkg_to_new (pkg);
+ package = pkg_clone (pkg);
callback (opkg, package, user_data);
opkg_package_free (package);
}
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);
}
}
/* match found */
- package = old_pkg_to_new (pkg);
+ package = pkg_clone (pkg);
break;
}