]> git.sur5r.net Git - openldap/blobdiff - libraries/liblmdb/mdb_load.c
Happy New Year
[openldap] / libraries / liblmdb / mdb_load.c
index 5373a9d5d6d164d22c7306f8591c9476c43d0ad5..417fad2e3a325b9cb3f18fccb62601597f119d1b 100644 (file)
@@ -1,6 +1,6 @@
 /* mdb_load.c - memory-mapped database load tool */
 /*
- * Copyright 2011-2015 Howard Chu, Symas Corp.
+ * Copyright 2011-2017 Howard Chu, Symas Corp.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -25,7 +25,7 @@ static int mode;
 
 static char *subname = NULL;
 
-static size_t lineno;
+static mdb_size_t lineno;
 static int version;
 
 static int flags;
@@ -38,11 +38,7 @@ static MDB_envinfo info;
 
 static MDB_val kbuf, dbuf;
 
-#ifdef _WIN32
-#define Z      "I"
-#else
-#define Z      "z"
-#endif
+#define Yu     MDB_PRIy(u)
 
 #define STRLENOF(s)    (sizeof(s)-1)
 
@@ -73,7 +69,7 @@ static void readhdr(void)
                if (!strncmp(dbuf.mv_data, "VERSION=", STRLENOF("VERSION="))) {
                        version=atoi((char *)dbuf.mv_data+STRLENOF("VERSION="));
                        if (version > 3) {
-                               fprintf(stderr, "%s: line %" Z "d: unsupported VERSION %d\n",
+                               fprintf(stderr, "%s: line %"Yu": unsupported VERSION %d\n",
                                        prog, lineno, version);
                                exit(EXIT_FAILURE);
                        }
@@ -83,7 +79,7 @@ static void readhdr(void)
                        if (!strncmp((char *)dbuf.mv_data+STRLENOF("FORMAT="), "print", STRLENOF("print")))
                                mode |= PRINT;
                        else if (strncmp((char *)dbuf.mv_data+STRLENOF("FORMAT="), "bytevalue", STRLENOF("bytevalue"))) {
-                               fprintf(stderr, "%s: line %" Z "d: unsupported FORMAT %s\n",
+                               fprintf(stderr, "%s: line %"Yu": unsupported FORMAT %s\n",
                                        prog, lineno, (char *)dbuf.mv_data+STRLENOF("FORMAT="));
                                exit(EXIT_FAILURE);
                        }
@@ -94,7 +90,7 @@ static void readhdr(void)
                        subname = strdup((char *)dbuf.mv_data+STRLENOF("database="));
                } else if (!strncmp(dbuf.mv_data, "type=", STRLENOF("type="))) {
                        if (strncmp((char *)dbuf.mv_data+STRLENOF("type="), "btree", STRLENOF("btree")))  {
-                               fprintf(stderr, "%s: line %" Z "d: unsupported type %s\n",
+                               fprintf(stderr, "%s: line %"Yu": unsupported type %s\n",
                                        prog, lineno, (char *)dbuf.mv_data+STRLENOF("type="));
                                exit(EXIT_FAILURE);
                        }
@@ -104,7 +100,7 @@ static void readhdr(void)
                        if (ptr) *ptr = '\0';
                        i = sscanf((char *)dbuf.mv_data+STRLENOF("mapaddr="), "%p", &info.me_mapaddr);
                        if (i != 1) {
-                               fprintf(stderr, "%s: line %" Z "d: invalid mapaddr %s\n",
+                               fprintf(stderr, "%s: line %"Yu": invalid mapaddr %s\n",
                                        prog, lineno, (char *)dbuf.mv_data+STRLENOF("mapaddr="));
                                exit(EXIT_FAILURE);
                        }
@@ -112,9 +108,10 @@ static void readhdr(void)
                        int i;
                        ptr = memchr(dbuf.mv_data, '\n', dbuf.mv_size);
                        if (ptr) *ptr = '\0';
-                       i = sscanf((char *)dbuf.mv_data+STRLENOF("mapsize="), "%" Z "u", &info.me_mapsize);
+                       i = sscanf((char *)dbuf.mv_data+STRLENOF("mapsize="),
+                               "%" MDB_SCNy(u), &info.me_mapsize);
                        if (i != 1) {
-                               fprintf(stderr, "%s: line %" Z "d: invalid mapsize %s\n",
+                               fprintf(stderr, "%s: line %"Yu": invalid mapsize %s\n",
                                        prog, lineno, (char *)dbuf.mv_data+STRLENOF("mapsize="));
                                exit(EXIT_FAILURE);
                        }
@@ -124,7 +121,7 @@ static void readhdr(void)
                        if (ptr) *ptr = '\0';
                        i = sscanf((char *)dbuf.mv_data+STRLENOF("maxreaders="), "%u", &info.me_maxreaders);
                        if (i != 1) {
-                               fprintf(stderr, "%s: line %" Z "d: invalid maxreaders %s\n",
+                               fprintf(stderr, "%s: line %"Yu": invalid maxreaders %s\n",
                                        prog, lineno, (char *)dbuf.mv_data+STRLENOF("maxreaders="));
                                exit(EXIT_FAILURE);
                        }
@@ -140,12 +137,12 @@ static void readhdr(void)
                        if (!dbflags[i].bit) {
                                ptr = memchr(dbuf.mv_data, '=', dbuf.mv_size);
                                if (!ptr) {
-                                       fprintf(stderr, "%s: line %" Z "d: unexpected format\n",
+                                       fprintf(stderr, "%s: line %"Yu": unexpected format\n",
                                                prog, lineno);
                                        exit(EXIT_FAILURE);
                                } else {
                                        *ptr = '\0';
-                                       fprintf(stderr, "%s: line %" Z "d: unrecognized keyword ignored: %s\n",
+                                       fprintf(stderr, "%s: line %"Yu": unrecognized keyword ignored: %s\n",
                                                prog, lineno, (char *)dbuf.mv_data);
                                }
                        }
@@ -155,7 +152,7 @@ static void readhdr(void)
 
 static void badend(void)
 {
-       fprintf(stderr, "%s: line %" Z "d: unexpected end of input\n",
+       fprintf(stderr, "%s: line %"Yu": unexpected end of input\n",
                prog, lineno);
 }
 
@@ -213,7 +210,7 @@ badend:
                buf->mv_data = realloc(buf->mv_data, buf->mv_size*2);
                if (!buf->mv_data) {
                        Eof = 1;
-                       fprintf(stderr, "%s: line %" Z "d: out of memory, line too long\n",
+                       fprintf(stderr, "%s: line %"Yu": out of memory, line too long\n",
                                prog, lineno);
                        return EOF;
                }
@@ -248,7 +245,8 @@ badend:
                                        c2 += 2;
                                }
                        } else {
-                               c1++; c2++;
+                               /* copies are redundant when no escapes were used */
+                               *c1++ = *c2++;
                        }
                }
        } else {
@@ -327,7 +325,7 @@ int main(int argc, char *argv[])
                        putflags = MDB_NOOVERWRITE|MDB_NODUPDATA;
                        break;
                case 'T':
-                       mode |= NOHDR;
+                       mode |= NOHDR | PRINT;
                        break;
                default:
                        usage();
@@ -405,7 +403,7 @@ int main(int argc, char *argv[])
 
                        rc = readline(&data, &dbuf);
                        if (rc) {
-                               fprintf(stderr, "%s: line %" Z "d: failed to read key value\n", prog, lineno);
+                               fprintf(stderr, "%s: line %"Yu": failed to read key value\n", prog, lineno);
                                goto txn_abort;
                        }
 
@@ -420,7 +418,7 @@ int main(int argc, char *argv[])
                        if (batch == 100) {
                                rc = mdb_txn_commit(txn);
                                if (rc) {
-                                       fprintf(stderr, "%s: line %" Z "d: txn_commit: %s\n",
+                                       fprintf(stderr, "%s: line %"Yu": txn_commit: %s\n",
                                                prog, lineno, mdb_strerror(rc));
                                        goto env_close;
                                }
@@ -440,7 +438,7 @@ int main(int argc, char *argv[])
                rc = mdb_txn_commit(txn);
                txn = NULL;
                if (rc) {
-                       fprintf(stderr, "%s: line %" Z "d: txn_commit: %s\n",
+                       fprintf(stderr, "%s: line %"Yu": txn_commit: %s\n",
                                prog, lineno, mdb_strerror(rc));
                        goto env_close;
                }