General Public License for more details.
*/
-#include "includes.h"
-#include <errno.h>
-#include <dirent.h>
-#include <glob.h>
+#include "config.h"
+
+#include <stdio.h>
#include <time.h>
#include <signal.h>
+#include <unistd.h>
#include "pkg.h"
#include "pkg_hash.h"
unresolved++;
}
free(tmp);
- opkg_msg(ERROR, "\n");
+ opkg_message(ERROR, "\n");
if (! conf->force_depends) {
opkg_msg(INFO,
"This could mean that your package list is out of date or that the packages\n"
static int
pkg_remove_orphan_dependent(pkg_t *pkg, pkg_t *old_pkg)
{
- int i, j, k, l, found;
+ int i, j, k, l, found,r, err = 0;
int n_deps;
pkg_t *p;
struct compound_depend *cd0, *cd1;
* which we need to ignore during removal. */
p->state_flag |= SF_REPLACE;
- opkg_remove_pkg(p, 0);
+ r = opkg_remove_pkg(p, 0);
+ if (!err)
+ err = r;
} else
opkg_msg(INFO, "%s was autoinstalled and is "
"still required by %d "
}
}
- return 0;
+ return err;
}
/* returns number of installed replacees */
}
if (cmp > 0) {
- opkg_msg(NOTICE,
- "Not downgrading package %s on %s from %s to %s.\n",
- old_pkg->name, old_pkg->dest->name, old_version, new_version);
+ if(!conf->download_only)
+ opkg_msg(NOTICE,
+ "Not downgrading package %s on %s from %s to %s.\n",
+ old_pkg->name, old_pkg->dest->name, old_version, new_version);
rc = 1;
} else if (cmp < 0) {
- opkg_msg(NOTICE, "%s%s on %s from %s to %s...\n",
- message_out, pkg->name, old_pkg->dest->name, old_version, new_version);
+ if(!conf->download_only)
+ opkg_msg(NOTICE, "%s%s on %s from %s to %s...\n",
+ message_out, pkg->name, old_pkg->dest->name, old_version, new_version);
pkg->dest = old_pkg->dest;
rc = 0;
} else /* cmp == 0 */ {
if (conf->force_reinstall) {
- opkg_msg(NOTICE, "Reinstalling %s (%s) on %s...\n",
- pkg->name, new_version, old_pkg->dest->name);
+ if(!conf->download_only)
+ opkg_msg(NOTICE, "Reinstalling %s (%s) on %s...\n",
+ pkg->name, new_version, old_pkg->dest->name);
pkg->dest = old_pkg->dest;
rc = 0;
} else {
- opkg_msg(NOTICE, "%s (%s) already install on %s."
- " Not reinstalling.\n",
- pkg->name, new_version, old_pkg->dest->name);
+ if(!conf->download_only)
+ opkg_msg(NOTICE, "%s (%s) already install on %s."
+ " Not reinstalling.\n",
+ pkg->name, new_version, old_pkg->dest->name);
rc = 1;
}
}
free(new_version);
return rc;
} else {
- char message_out[15] ;
- memset(message_out,'\x0',15);
- if ( message )
- strncpy( message_out,"Upgrading ",strlen("Upgrading ") );
- else
- strncpy( message_out,"Installing ",strlen("Installing ") );
- char *version = pkg_version_str_alloc(pkg);
-
- opkg_msg(NOTICE, "%s%s (%s) to %s...\n", message_out,
- pkg->name, version, pkg->dest->name);
- free(version);
- return 0;
+ char message_out[15] ;
+ memset(message_out,'\x0',15);
+ if ( message )
+ strncpy( message_out,"Upgrading ",strlen("Upgrading ") );
+ else
+ strncpy( message_out,"Installing ",strlen("Installing ") );
+ char *version = pkg_version_str_alloc(pkg);
+
+ if(!conf->download_only)
+ opkg_msg(NOTICE, "%s%s (%s) to %s...\n", message_out,
+ pkg->name, version, pkg->dest->name);
+ free(version);
}
+ return 0;
}
static int
remove_obsolesced_files(pkg_t *pkg, pkg_t *old_pkg)
{
- int err;
+ int err = 0;
str_list_t *old_files;
str_list_elt_t *of;
str_list_t *new_files;
pkg_free_installed_files(old_pkg);
pkg_free_installed_files(pkg);
- return 0;
+ return err;
}
static int
pkg->state_want = SW_INSTALL;
if (old_pkg){
- old_pkg->state_want = SW_DEINSTALL; /* needed for check_data_file_clashes of dependences */
+ old_pkg->state_want = SW_DEINSTALL; /* needed for check_data_file_clashes of dependencies */
}
err = check_conflicts_for(pkg);
return -1;
if (pkg->local_filename == NULL) {
- err = opkg_download_pkg(pkg, conf->tmp_dir);
+ if(!conf->cache && conf->download_only){
+ char cwd[4096];
+ if(getcwd(cwd, sizeof(cwd)) != NULL)
+ err = opkg_download_pkg(pkg, cwd);
+ else
+ return -1;
+ } else {
+ err = opkg_download_pkg(pkg, conf->tmp_dir);
+ }
if (err) {
opkg_msg(ERROR, "Failed to download %s. "
"Perhaps you need to run 'opkg update'?\n",
free(file_sha256);
}
#endif
+ if(conf->download_only) {
+ if (conf->nodeps == 0) {
+ err = satisfy_dependencies_for(pkg);
+ if (err)
+ return -1;
+ }
+ return 0;
+ }
if (pkg->tmp_unpack_dir == NULL) {
if (unpack_pkg_control_files(pkg) == -1) {