Fixed bug #68830, xmlcatalog now provides return codes in case of errors

* doc/xmlcatalog_man.xml xmlcatalog.c: Fixed bug #68830, xmlcatalog
  now provides return codes in case of errors
Daniel
diff --git a/xmlcatalog.c b/xmlcatalog.c
index e0828fa..37969f0 100644
--- a/xmlcatalog.c
+++ b/xmlcatalog.c
@@ -313,6 +313,7 @@
 int main(int argc, char **argv) {
     int i;
     int ret;
+    int exit_value = 0;
 
 
     if (argc <= 1) {
@@ -430,9 +431,11 @@
 			ret = xmlACatalogRemove(catal, BAD_CAST argv[i + 2]);
 		    else
 			ret = -1;
-		    if (ret < 0)
-			fprintf(stderr, "Failed to removed entry from %s\n",
+		    if (ret < 0) {
+			fprintf(stderr, "Failed to remove entry from %s\n",
 				argv[i + 1]);
+			exit_value = 1;
+		    }
 		    if ((noout) && (catal != NULL) &&
 			(xmlCatalogIsEmpty(catal))) {
 			super = xmlLoadSGMLSuperCatalog(
@@ -440,10 +443,12 @@
 			if (super != NULL) {
 			    ret = xmlACatalogRemove(super,
 				    BAD_CAST argv[i + 1]);
-			    if (ret < 0)
+			    if (ret < 0) {
 				fprintf(stderr,
-					"Failed to removed entry from %s\n",
+					"Failed to remove entry from %s\n",
 					XML_SGML_DEFAULT_CATALOG);
+				exit_value = 1;
+			    }
 			}
 		    }
 		}
@@ -457,6 +462,7 @@
 			if (out == NULL) {
 			    fprintf(stderr, "could not open %s for saving\n",
 				    argv[i + 1]);
+			    exit_value = 2;
 			    noout = 0;
 			} else {
 			    xmlACatalogDump(catal, out);
@@ -472,6 +478,7 @@
 				fprintf(stderr,
 					"could not open %s for saving\n",
 					XML_SGML_DEFAULT_CATALOG);
+				exit_value = 2;
 				noout = 0;
 			    } else {
 				
@@ -494,12 +501,19 @@
 			    ret = xmlCatalogAdd(BAD_CAST argv[i + 1],
 						BAD_CAST argv[i + 2],
 						BAD_CAST argv[i + 3]);
-			if (ret != 0)
+			if (ret != 0) {
 			    printf("add command failed\n");
+			    exit_value = 3;
+			}
 			i += 3;
 		} else if ((!strcmp(argv[i], "-del")) ||
 		    (!strcmp(argv[i], "--del"))) {
 		    ret = xmlCatalogRemove(BAD_CAST argv[i + 1]);
+		    if (ret < 0) {
+			fprintf(stderr, "Failed to remove entry %s\n",
+				argv[i + 1]);
+			exit_value = 1;
+		    }
 		    i += 1;
 		}
 	    }
@@ -517,6 +531,7 @@
 		ans = xmlCatalogResolvePublic((const xmlChar *) argv[i]);
 		if (ans == NULL) {
 		    printf("No entry for PUBLIC %s\n", argv[i]);
+		    exit_value = 4;
 		} else {
 		    printf("%s\n", ans);
 		    xmlFree(ans);
@@ -526,6 +541,7 @@
 		ans = xmlCatalogResolveSystem((const xmlChar *) argv[i]);
 		if (ans == NULL) {
 		    printf("No entry for SYSTEM %s\n", argv[i]);
+		    exit_value = 4;
 		} else {
 		    printf("%s\n", ans);
 		    xmlFree(ans);
@@ -540,6 +556,7 @@
 	    out = fopen(filename, "w");
 	    if (out == NULL) {
 		fprintf(stderr, "could not open %s for saving\n", filename);
+		exit_value = 2;
 		noout = 0;
 	    } else {
 		xmlCatalogDump(out);
@@ -554,7 +571,7 @@
      */
     xmlCleanupParser();
     xmlMemoryDump();
-    return(0);
+    return(exit_value);
 }
 #else
 int main(int argc, char **argv) {