Propagate errors up the call stack. Patch by Jens Erdmann <j.erdmann@road.de>.
[oweals/opkg-lede.git] / libopkg / opkg_cmd.c
index 4d2eb383026c430a978b32e0b22d96a452ed553e..0fa471e3b43f3a7f2429d99bbb7752b62af7961c 100644 (file)
@@ -15,6 +15,8 @@
    General Public License for more details.
 */
 
+#include "config.h"
+
 #include <stdio.h>
 #include <dirent.h>
 #include <glob.h>
@@ -424,7 +426,7 @@ error:
 static int
 opkg_install_cmd(int argc, char **argv)
 {
-     int i;
+     int i, r;
      char *arg;
      int err=0;
 
@@ -451,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();
 
@@ -461,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;
 
@@ -509,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();
 
@@ -519,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;
 
@@ -543,7 +549,7 @@ opkg_download_cmd(int argc, char **argv)
          }
      }
 
-     return 0;
+     return err;
 }
 
 
@@ -696,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;
@@ -732,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;
         }
      }
@@ -743,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