summaryrefslogtreecommitdiffstats
path: root/libopkg
diff options
context:
space:
mode:
authorgraham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2010-01-27 18:11:41 (EST)
committer graham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2010-01-27 18:11:41 (EST)
commit2b9b8fa95e3cce41b718ee205d34105a46e4b695 (patch)
treee47f7c2e6cf09c1189760edbd447bec17ed2bbc4 /libopkg
parentfc9af348b882e9758bcfbddde05e2733eddb794a (diff)
Propagate errors up the call stack. Patch by Jens Erdmann <j.erdmann@road.de>.
git-svn-id: http://opkg.googlecode.com/svn/trunk@519 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
Diffstat (limited to 'libopkg')
-rw-r--r--libopkg/opkg_cmd.c25
-rw-r--r--libopkg/opkg_install.c36
2 files changed, 35 insertions, 26 deletions
diff --git a/libopkg/opkg_cmd.c b/libopkg/opkg_cmd.c
index fceffdd..0fa471e 100644
--- a/libopkg/opkg_cmd.c
+++ b/libopkg/opkg_cmd.c
@@ -426,7 +426,7 @@ error:
static int
opkg_install_cmd(int argc, char **argv)
{
- int i;
+ int i, r;
char *arg;
int err=0;
@@ -453,7 +453,9 @@ opkg_install_cmd(int argc, char **argv)
}
}
- opkg_configure_packages(NULL);
+ r = opkg_configure_packages(NULL);
+ if (!err)
+ err = r;
write_status_files_if_changed();
@@ -463,7 +465,7 @@ opkg_install_cmd(int argc, char **argv)
static int
opkg_upgrade_cmd(int argc, char **argv)
{
- int i;
+ int i, r;
pkg_t *pkg;
int err;
@@ -511,7 +513,9 @@ opkg_upgrade_cmd(int argc, char **argv)
pkg_vec_free(installed);
}
- opkg_configure_packages(NULL);
+ r = opkg_configure_packages(NULL);
+ if (!err)
+ err = r;
write_status_files_if_changed();
@@ -521,7 +525,7 @@ opkg_upgrade_cmd(int argc, char **argv)
static int
opkg_download_cmd(int argc, char **argv)
{
- int i, err;
+ int i, err = 0;
char *arg;
pkg_t *pkg;
@@ -545,7 +549,7 @@ opkg_download_cmd(int argc, char **argv)
}
}
- return 0;
+ return err;
}
@@ -698,7 +702,7 @@ opkg_configure_cmd(int argc, char **argv)
static int
opkg_remove_cmd(int argc, char **argv)
{
- int i, a, done;
+ int i, a, done, r, err = 0;
pkg_t *pkg;
pkg_t *pkg_to_remove;
pkg_vec_t *available;
@@ -734,7 +738,10 @@ opkg_remove_cmd(int argc, char **argv)
opkg_msg(ERROR, "Package %s not installed.\n", pkg->name);
continue;
}
- opkg_remove_pkg(pkg_to_remove, 0);
+ r = opkg_remove_pkg(pkg_to_remove, 0);
+ if (!err)
+ err = r;
+
done = 1;
}
}
@@ -745,7 +752,7 @@ opkg_remove_cmd(int argc, char **argv)
opkg_msg(NOTICE, "No packages removed.\n");
write_status_files_if_changed();
- return 0;
+ return err;
}
static int
diff --git a/libopkg/opkg_install.c b/libopkg/opkg_install.c
index 72c63ab..779950e 100644
--- a/libopkg/opkg_install.c
+++ b/libopkg/opkg_install.c
@@ -297,7 +297,7 @@ unpack_pkg_control_files(pkg_t *pkg)
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;
@@ -362,7 +362,9 @@ pkg_remove_orphan_dependent(pkg_t *pkg, pkg_t *old_pkg)
* 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 "
@@ -372,7 +374,7 @@ pkg_remove_orphan_dependent(pkg_t *pkg, pkg_t *old_pkg)
}
}
- return 0;
+ return err;
}
/* returns number of installed replacees */
@@ -483,20 +485,20 @@ opkg_install_check_downgrade(pkg_t *pkg, pkg_t *old_pkg, int message)
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);
-
- if(!conf->download_only)
- opkg_msg(NOTICE, "%s%s (%s) to %s...\n", message_out,
+ 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;
+ free(version);
}
+ return 0;
}
@@ -929,7 +931,7 @@ postrm_upgrade_old_pkg_unwind(pkg_t *pkg, pkg_t *old_pkg)
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;
@@ -984,7 +986,7 @@ remove_obsolesced_files(pkg_t *pkg, pkg_t *old_pkg)
pkg_free_installed_files(old_pkg);
pkg_free_installed_files(pkg);
- return 0;
+ return err;
}
static int