r19274: fix ldbdel and ldbmodify to return an error if the underlying ldb call
authorAndrew Tridgell <tridge@samba.org>
Sat, 14 Oct 2006 08:26:10 +0000 (08:26 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:21:00 +0000 (14:21 -0500)
fails
(This used to be commit 330a722f1330059cbba19f99210a1a5a7c773a36)

source4/lib/ldb/tools/ldbdel.c
source4/lib/ldb/tools/ldbmodify.c

index aee911efaf749edc1b9d88e83349500bf84b8f23..94f1da9903743f37a45e05db86a2242dc391a14a 100644 (file)
@@ -76,7 +76,7 @@ static void usage(void)
 int main(int argc, const char **argv)
 {
        struct ldb_context *ldb;
-       int ret, i;
+       int ret = 0, i;
        struct ldb_cmdline *options;
 
        ldb_global_init();
@@ -115,5 +115,5 @@ int main(int argc, const char **argv)
 
        talloc_free(ldb);
 
-       return 0;
+       return ret;
 }
index 24f9386266307ccaedfafe15e2ad68fb12491f4b..962045ef7d79d3d9228b046e0ce6f323ec4e994b 100644 (file)
@@ -53,10 +53,10 @@ static void usage(void)
 /*
   process modifies for one file
 */
-static int process_file(struct ldb_context *ldb, FILE *f)
+static int process_file(struct ldb_context *ldb, FILE *f, int *count)
 {
        struct ldb_ldif *ldif;
-       int ret = -1, count = 0;
+       int ret = LDB_SUCCESS;
        
        while ((ldif = ldb_ldif_read_file(ldb, f))) {
                switch (ldif->changetype) {
@@ -71,24 +71,24 @@ static int process_file(struct ldb_context *ldb, FILE *f)
                        ret = ldb_modify(ldb, ldif->msg);
                        break;
                }
-               if (ret != 0) {
+               if (ret != LDB_SUCCESS) {
                        fprintf(stderr, "ERR: \"%s\" on DN %s\n", 
                                ldb_errstring(ldb), ldb_dn_linearize(ldb, ldif->msg->dn));
                        failures++;
                } else {
-                       count++;
+                       (*count)++;
                }
                ldb_ldif_read_free(ldb, ldif);
        }
 
-       return count;
+       return ret;
 }
 
 int main(int argc, const char **argv)
 {
        struct ldb_context *ldb;
        int count=0;
-       int i;
+       int i, ret=LDB_SUCCESS;
        struct ldb_cmdline *options;
 
        ldb_global_init();
@@ -98,7 +98,7 @@ int main(int argc, const char **argv)
        options = ldb_cmdline_process(ldb, argc, argv, usage);
 
        if (options->argc == 0) {
-               count += process_file(ldb, stdin);
+               ret = process_file(ldb, stdin, &count);
        } else {
                for (i=0;i<options->argc;i++) {
                        const char *fname = options->argv[i];
@@ -108,7 +108,7 @@ int main(int argc, const char **argv)
                                perror(fname);
                                exit(1);
                        }
-                       count += process_file(ldb, f);
+                       ret = process_file(ldb, f, &count);
                }
        }
 
@@ -116,9 +116,5 @@ int main(int argc, const char **argv)
 
        printf("Modified %d records with %d failures\n", count, failures);
 
-       if (failures != 0) {
-               return -1;
-       }
-       
-       return 0;
+       return ret;
 }