}
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;
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);
goto err0;
}
- control_file = fdopen(fd, "rw+");
+ control_file = fdopen(fd, "r+");
if (control_file == NULL) {
perror_msg("%s: fdopen", __FUNCTION__, control_path);
close(fd);
return 0;
}
+ if (!oldpkg->auto_installed)
+ oldpkg->auto_installed = newpkg->auto_installed;
+
if (!oldpkg->src)
oldpkg->src = newpkg->src;
if (!oldpkg->dest)
free(list_file_name);
return pkg->installed_files;
}
- list_file = fdopen(fd, "rw+");
+ list_file = fdopen(fd, "r+");
if (list_file == NULL) {
opkg_message(conf, OPKG_ERROR, "%s: fdopen: %s",
__FUNCTION__, strerror(errno));