int i, err;
pkg_vec_t *depends = pkg_vec_alloc();
pkg_t *dep;
- char **tmp, **unresolved = NULL;
+ char **tmp, **unresolved = NULL, *prev = NULL;
int ndepends;
ndepends = pkg_hash_fetch_unsatisfied_dependencies(pkg, depends,
pkg->name);
tmp = unresolved;
while (*unresolved) {
- opkg_message(ERROR, "\t%s", *unresolved);
+ if (!prev || strcmp(*unresolved, prev))
+ opkg_message(ERROR, "\t%s\n", *unresolved);
+ prev = *unresolved;
+ unresolved++;
+ }
+ unresolved = tmp;
+ while (*unresolved) {
free(*unresolved);
unresolved++;
}
free(tmp);
- 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"
tmp_unpack_dir = mkdtemp(tmp_unpack_dir);
if (tmp_unpack_dir == NULL) {
- opkg_perror(ERROR, "Failed to create temporary directory '%s'",
- tmp_unpack_dir);
+ opkg_perror(ERROR, "Failed to create temporary directory");
return -1;
}
char *file_sha256, *pkg_sha256;
sigset_t newset, oldset;
const char *local_filename;
+ long long int pkg_expected_size;
+ struct stat pkg_stat;
time_t now;
if (from_upgrade)
}
#endif
+ /* Check file size */
+ err = lstat(local_filename, &pkg_stat);
+
+ if (err) {
+ opkg_msg(ERROR, "Failed to stat %s: %s\n",
+ local_filename, strerror(errno));
+ return -1;
+ }
+
+ pkg_expected_size = pkg_get_int(pkg, PKG_SIZE);
+
+ if (pkg_expected_size > 0 && pkg_stat.st_size != pkg_expected_size) {
+ if (!conf->force_checksum) {
+ opkg_msg(ERROR,
+ "Package size mismatch: %s is %lld bytes, expecting %lld bytes\n",
+ pkg->name, (long long int)pkg_stat.st_size, pkg_expected_size);
+ return -1;
+ } else {
+ opkg_msg(NOTICE,
+ "Ignored %s size mismatch.\n",
+ pkg->name);
+ }
+ }
+
/* Check for md5 values */
pkg_md5 = pkg_get_md5(pkg);
if (pkg_md5) {