summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Cahill <michael.cahill@wiredtiger.com>2011-05-06 15:58:00 +1000
committerMichael Cahill <michael.cahill@wiredtiger.com>2011-05-06 15:58:00 +1000
commit7fde73aa31a1a68941fc56ab42f98a1879f2bd16 (patch)
treeef6709e99f67dfad1609b9929e71181b27f0de34 /src
parentfd23fdcc90a3272e0fc76328a9c149fa56cc19ee (diff)
downloadmongo-7fde73aa31a1a68941fc56ab42f98a1879f2bd16.tar.gz
Fix the handling of "printable" config for dump cursors: make it a separate flag rather than combining it with "dump".
refs #28
Diffstat (limited to 'src')
-rw-r--r--src/api/config_def.c3
-rw-r--r--src/api/cur_btree.c15
-rw-r--r--src/api/cur_dump.c4
-rw-r--r--src/api/cur_stat.c16
-rw-r--r--src/include/api.h7
-rw-r--r--src/include/extern.h2
-rw-r--r--src/include/wiredtiger.in4
7 files changed, 21 insertions, 30 deletions
diff --git a/src/api/config_def.c b/src/api/config_def.c
index 1c80102c2ed..32c2f45d592 100644
--- a/src/api/config_def.c
+++ b/src/api/config_def.c
@@ -64,7 +64,8 @@ __wt_confdfl_session_log_printf =
const char *
__wt_confdfl_session_open_cursor =
- "bulk=false,dump=false,isolation=read-committed,overwrite=false,raw=false";
+ "bulk=false,dump=false,isolation=read-committed,overwrite=false,"
+ "printable=false,raw=false";
const char *
__wt_confdfl_session_rename =
diff --git a/src/api/cur_btree.c b/src/api/cur_btree.c
index a9638901947..a5c52fcec43 100644
--- a/src/api/cur_btree.c
+++ b/src/api/cur_btree.c
@@ -243,8 +243,7 @@ __wt_cursor_open(SESSION *session,
WT_CONFIG_ITEM cval;
WT_CURSOR *cursor;
const char *key_format, *value_format;
- int bulk, raw, ret;
- uint32_t dump;
+ int bulk, dump, printable, raw, ret;
size_t csize;
API_CONF_INIT(session, open_cursor, config);
@@ -278,13 +277,9 @@ __wt_cursor_open(SESSION *session,
WT_ERR(__wt_config_gets(__cfg, "bulk", &cval));
bulk = (cval.val != 0);
WT_ERR(__wt_config_gets(__cfg, "dump", &cval));
- if ((cval.type == ITEM_STRING || cval.type == ITEM_ID) &&
- cval.len > 0) {
- if (strncasecmp("printable", cval.str, cval.len) == 0)
- dump = WT_DUMP_PRINT;
- else if (strncasecmp("raw", cval.str, cval.len) == 0)
- dump = WT_DUMP_RAW;
- }
+ dump = (cval.val != 0);
+ WT_ERR(__wt_config_gets(__cfg, "printable", &cval));
+ printable = (cval.val != 0);
WT_ERR(__wt_config_gets(__cfg, "raw", &cval));
raw = (cval.val != 0);
@@ -302,7 +297,7 @@ __wt_cursor_open(SESSION *session,
if (bulk)
WT_ERR(__wt_curbulk_init((CURSOR_BULK *)cbt));
if (dump != 0)
- __wt_curdump_init(cursor, dump);
+ __wt_curdump_init(cursor, printable);
if (raw)
F_SET(cursor, WT_CURSTD_RAW);
diff --git a/src/api/cur_dump.c b/src/api/cur_dump.c
index ff955a575ee..8f837462daf 100644
--- a/src/api/cur_dump.c
+++ b/src/api/cur_dump.c
@@ -154,13 +154,13 @@ __curdump_set_value(WT_CURSOR *cursor, ...)
* initialize a dump cursor.
*/
void
-__wt_curdump_init(WT_CURSOR *cursor, uint32_t flags)
+__wt_curdump_init(WT_CURSOR *cursor, int printable)
{
cursor->get_key = __curdump_get_key;
cursor->get_value = __curdump_get_value;
cursor->set_key = __curdump_set_key;
cursor->set_value = __curdump_set_value;
- if (LF_ISSET(WT_DUMP_PRINT))
+ if (printable)
F_SET(cursor, WT_CURSTD_PRINT);
}
diff --git a/src/api/cur_stat.c b/src/api/cur_stat.c
index d606a83cdee..2ef9b95ff49 100644
--- a/src/api/cur_stat.c
+++ b/src/api/cur_stat.c
@@ -200,23 +200,17 @@ __wt_curstat_open(SESSION *session,
WT_CONFIG_ITEM cval;
WT_CURSOR *cursor;
const char *key_format, *value_format;
- int raw, ret;
- uint32_t dump;
+ int dump, printable, raw, ret;
size_t csize;
API_CONF_INIT(session, open_cursor, config);
/* Skip "stat:". */
uri += 5;
- dump = 0;
WT_ERR(__wt_config_gets(__cfg, "dump", &cval));
- if ((cval.type == ITEM_STRING || cval.type == ITEM_ID) &&
- cval.len > 0) {
- if (strncasecmp("printable", cval.str, cval.len) == 0)
- dump = WT_DUMP_PRINT;
- else if (strncasecmp("raw", cval.str, cval.len) == 0)
- dump = WT_DUMP_RAW;
- }
+ dump = (cval.val != 0);
+ WT_ERR(__wt_config_gets(__cfg, "printable", &cval));
+ printable = (cval.val != 0);
WT_ERR(__wt_config_gets(__cfg, "raw", &cval));
raw = (cval.val != 0);
@@ -230,7 +224,7 @@ __wt_curstat_open(SESSION *session,
__wt_cursor_init(cursor, config);
if (dump)
- __wt_curdump_init(cursor, dump);
+ __wt_curdump_init(cursor, printable);
if (raw)
F_SET(cursor, WT_CURSTD_RAW);
diff --git a/src/include/api.h b/src/include/api.h
index 6f0241e8254..a17aa165815 100644
--- a/src/include/api.h
+++ b/src/include/api.h
@@ -349,9 +349,8 @@ extern WT_EVENT_HANDLER *__wt_event_handler_verbose;
#define WT_BUF_INUSE 0x00000001
#define WT_COLUMN 0x00000004
#define WT_CREATE 0x00000001
-#define WT_DEBUG 0x00000004
-#define WT_DUMP_PRINT 0x00000002
-#define WT_DUMP_RAW 0x00000001
+#define WT_DEBUG 0x00000002
+#define WT_DUMP_PRINT 0x00000001
#define WT_HUFFMAN_KEY 0x00000004
#define WT_HUFFMAN_VALUE 0x00000002
#define WT_RDONLY 0x00000002
@@ -368,7 +367,7 @@ extern WT_EVENT_HANDLER *__wt_event_handler_verbose;
#define WT_WORKQ_RUN 0x00000001
#define WT_WRITE 0x00000001
-#define WT_APIMASK_BT_DUMP 0x00000007
+#define WT_APIMASK_BT_DUMP 0x00000003
#define WT_APIMASK_BT_OPEN 0x00000001
#define WT_APIMASK_BT_SEARCH_COL 0x00000001
#define WT_APIMASK_BT_SEARCH_KEY_ROW 0x00000001
diff --git a/src/include/extern.h b/src/include/extern.h
index 86462c400e9..58b3db8111c 100644
--- a/src/include/extern.h
+++ b/src/include/extern.h
@@ -65,7 +65,7 @@ int __wt_curconfig_open(SESSION *session,
const char *uri,
const char *config,
WT_CURSOR **cursorp);
-void __wt_curdump_init(WT_CURSOR *cursor, uint32_t flags);
+void __wt_curdump_init(WT_CURSOR *cursor, int printable);
int __wt_curstat_open(SESSION *session,
const char *uri,
const char *config,
diff --git a/src/include/wiredtiger.in b/src/include/wiredtiger.in
index 8be45c98d00..95f91178aa6 100644
--- a/src/include/wiredtiger.in
+++ b/src/include/wiredtiger.in
@@ -459,12 +459,14 @@ struct wt_session {
* @configstart{session.open_cursor, see dist/api_data.py}
* @config{bulk, configure the cursor for bulk loads}
* @config{dump, configure the cursor for dump format inputs and
- * outputs. One of \c false\, \c "printable" or \c "raw"}
+ * outputs.}
* @config{isolation, the isolation level for this cursor\, one of \c
* "snapshot" or \c "read-committed" or \c "read-uncommitted". Ignored
* for transactional cursors}
* @config{overwrite, if an existing key is inserted\, overwrite the
* existing value}
+ * @config{printable, for dump cursors\, pass through printable bytes
+ * unmodified.}
* @config{raw, ignore the encodings for the key and value\, manage data
* as if the formats were \c "u"}
* @configend