File iproute2-correct-error-code.patch of Package iproute2.import4923

Index: iproute2-2.6.37/ip/ip.c
===================================================================
--- iproute2-2.6.37.orig/ip/ip.c
+++ iproute2-2.6.37/ip/ip.c
@@ -143,6 +143,7 @@ static int batch(const char *name)
 int main(int argc, char **argv)
 {
 	char *basename;
+	int ret = 0;
 
 	basename = strrchr(argv[0], '/');
 	if (basename == NULL)
@@ -245,17 +246,29 @@ int main(int argc, char **argv)
 
 	_SL_ = oneline ? "\\" : "\n" ;
 
-	if (batch_file)
-		return batch(batch_file);
+	if (batch_file) {
+		ret = batch(batch_file);
+		if(ret < 0)
+			ret = -ret;
+		exit(ret);
+	}
 
 	if (rtnl_open(&rth, 0) < 0)
 		exit(1);
 
-	if (strlen(basename) > 2)
-		return do_cmd(basename+2, argc, argv);
+	if (strlen(basename) > 2) {
+		ret = do_cmd(basename+2, argc, argv);
+		if(ret < 0)
+			ret = -ret;
+		exit(ret);
+	}
 
-	if (argc > 1)
-		return do_cmd(argv[1], argc-1, argv+1);
+	if (argc > 1) {
+		ret = do_cmd(argv[1], argc-1, argv+1);
+		if(ret < 0)
+			ret = -ret;
+		exit(ret);
+	}
 
 	rtnl_close(&rth);
 	usage();
openSUSE Build Service is sponsored by