r8342: allow ldb_ldif_read_string() to continue in the string, so you can
authorAndrew Tridgell <tridge@samba.org>
Tue, 12 Jul 2005 05:56:06 +0000 (05:56 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:20:08 +0000 (13:20 -0500)
read multiple records
(This used to be commit 4b11c00421b5152fd7d4be0be0db983bb310021d)

source4/lib/gendb.c
source4/lib/ldb/common/ldb_ldif.c
source4/lib/ldb/include/ldb.h

index de3e49e652b7aa249d106d0692e17fb36be69153..92bbd8155ca0e93ec808fd5dbeff96071ccfd2a1 100644 (file)
@@ -99,7 +99,7 @@ int gendb_add_ldif(struct ldb_context *ldb, const char *ldif_string)
 {
        struct ldb_ldif *ldif;
        int ret;
-       ldif = ldb_ldif_read_string(ldb, ldif_string);
+       ldif = ldb_ldif_read_string(ldb, &ldif_string);
        if (ldif == NULL) return -1;
        ret = ldb_add(ldb, ldif->msg);
        talloc_free(ldif);
index 79ec857cbdb917f16b42444fcf3fb60e1581a24f..463bae483b8551d7a7ac3550660cf6b92f2dea7e 100644 (file)
@@ -728,11 +728,14 @@ static int fgetc_string(void *private_data)
        return EOF;
 }
 
-struct ldb_ldif *ldb_ldif_read_string(struct ldb_context *ldb, const char *s)
+struct ldb_ldif *ldb_ldif_read_string(struct ldb_context *ldb, const char **s)
 {
        struct ldif_read_string_state state;
-       state.s = s;
-       return ldb_ldif_read(ldb, fgetc_string, &state);
+       struct ldb_ldif *ldif;
+       state.s = *s;
+       ldif = ldb_ldif_read(ldb, fgetc_string, &state);
+       *s = state.s;
+       return ldif;
 }
 
 
index 1f642d3bffa18f632c84e7b1f3b7ffa201bf9327..b2468b6ecbf8be294aa5b61734219899719df246 100644 (file)
@@ -316,7 +316,7 @@ void ldb_ldif_read_free(struct ldb_context *ldb, struct ldb_ldif *);
 struct ldb_ldif *ldb_ldif_read(struct ldb_context *ldb, 
                               int (*fgetc_fn)(void *), void *private_data);
 struct ldb_ldif *ldb_ldif_read_file(struct ldb_context *ldb, FILE *f);
-struct ldb_ldif *ldb_ldif_read_string(struct ldb_context *ldb, const char *s);
+struct ldb_ldif *ldb_ldif_read_string(struct ldb_context *ldb, const char **s);
 int ldb_ldif_write_file(struct ldb_context *ldb, FILE *f, const struct ldb_ldif *msg);
 char *ldb_base64_encode(void *mem_ctx, const char *buf, int len);
 int ldb_base64_decode(char *s);