summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libopkg/opkg_download.c4
-rw-r--r--libopkg/opkg_install.c2
-rw-r--r--libopkg/pkg.c6
-rw-r--r--libopkg/pkg.h2
4 files changed, 8 insertions, 6 deletions
diff --git a/libopkg/opkg_download.c b/libopkg/opkg_download.c
index 953627b..4789249 100644
--- a/libopkg/opkg_download.c
+++ b/libopkg/opkg_download.c
@@ -276,7 +276,7 @@ int opkg_prepare_url_for_install(opkg_conf_t *conf, const char *url, char **name
if (err)
return err;
- err = pkg_init_from_file(pkg, tmp_file);
+ err = pkg_init_from_file(conf, pkg, tmp_file);
if (err)
return err;
@@ -287,7 +287,7 @@ int opkg_prepare_url_for_install(opkg_conf_t *conf, const char *url, char **name
|| strcmp(&url[strlen(url) - 4], IPKG_PKG_EXTENSION) == 0
|| strcmp(&url[strlen(url) - 4], DPKG_PKG_EXTENSION) == 0) {
- err = pkg_init_from_file(pkg, url);
+ err = pkg_init_from_file(conf, pkg, url);
if (err)
return err;
opkg_message(conf, OPKG_DEBUG2, "Package %s provided by hand (%s).\n", pkg->name,pkg->local_filename);
diff --git a/libopkg/opkg_install.c b/libopkg/opkg_install.c
index f9245ca..96e6080 100644
--- a/libopkg/opkg_install.c
+++ b/libopkg/opkg_install.c
@@ -85,7 +85,7 @@ int opkg_install_from_file(opkg_conf_t *conf, const char *filename)
pkg = pkg_new();
- err = pkg_init_from_file(pkg, filename);
+ err = pkg_init_from_file(conf, pkg, filename);
if (err) {
return err;
}
diff --git a/libopkg/pkg.c b/libopkg/pkg.c
index 75e9572..89f47a9 100644
--- a/libopkg/pkg.c
+++ b/libopkg/pkg.c
@@ -301,7 +301,7 @@ void pkg_deinit(pkg_t *pkg)
}
int
-pkg_init_from_file(pkg_t *pkg, const char *filename)
+pkg_init_from_file(opkg_conf_t *conf, pkg_t *pkg, const char *filename)
{
int fd, err = 0;
FILE *control_file;
@@ -311,7 +311,9 @@ pkg_init_from_file(pkg_t *pkg, const char *filename)
pkg->local_filename = xstrdup(filename);
- sprintf_alloc(&control_path, "%s.control.XXXXXX", filename);
+ sprintf_alloc(&control_path, "%s/%s.control.XXXXXX",
+ conf->tmp_dir,
+ basename(filename));
fd = mkstemp(control_path);
if (fd == -1) {
perror_msg("%s: mkstemp(%s)", __FUNCTION__, control_path);
diff --git a/libopkg/pkg.h b/libopkg/pkg.h
index 2e25443..694bda9 100644
--- a/libopkg/pkg.h
+++ b/libopkg/pkg.h
@@ -190,7 +190,7 @@ struct pkg
pkg_t *pkg_new(void);
int pkg_init(pkg_t *pkg);
void pkg_deinit(pkg_t *pkg);
-int pkg_init_from_file(pkg_t *pkg, const char *filename);
+int pkg_init_from_file(opkg_conf_t *conf, pkg_t *pkg, const char *filename);
abstract_pkg_t *abstract_pkg_new(void);
int abstract_pkg_init(abstract_pkg_t *ab_pkg);