summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Bostic <keith@wiredtiger.com>2012-05-29 15:16:15 +0000
committerKeith Bostic <keith@wiredtiger.com>2012-05-29 15:16:15 +0000
commit4a21af2db5573c4f84209cbd1ed140dd23d20297 (patch)
tree55bbe3178c291b1623c55982b259236c9c3b7443
parent254465c2b2231a82c87dd27bed2ea2c9ed749abe (diff)
downloadmongo-4a21af2db5573c4f84209cbd1ed140dd23d20297.tar.gz
Add WT_TRK_JUST_ADDED to the list of track flags we display.
-rw-r--r--src/btree/rec_track.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/btree/rec_track.c b/src/btree/rec_track.c
index 730cc26ba38..621d711d0a2 100644
--- a/src/btree/rec_track.c
+++ b/src/btree/rec_track.c
@@ -487,15 +487,27 @@ err: __wt_scr_free(&buf);
char *
__wt_track_string(WT_PAGE_TRACK *track, char *buf, size_t len)
{
- (void)snprintf(buf, len,
- "%s%s%s%s%s",
- F_ISSET(track, WT_TRK_DISCARD) ? "discard" : "",
- F_ISSET(track, WT_TRK_DISCARD) &&
- F_ISSET(track, WT_TRK_INUSE | WT_TRK_ONPAGE) ? ", " : "",
- F_ISSET(track, WT_TRK_INUSE) ? "inuse" : "",
- F_ISSET(track, WT_TRK_INUSE) &&
- F_ISSET(track, WT_TRK_ONPAGE) ? ", " : "",
- F_ISSET(track, WT_TRK_ONPAGE) ? "onpage" : "");
+ size_t remain, wlen;
+ char *p, *end;
+ const char *sep;
+
+ p = buf;
+ end = buf + len;
+
+#define WT_APPEND_FLAG(f, name) \
+ if (F_ISSET(track, f)) { \
+ remain = WT_PTRDIFF(end, p); \
+ wlen = (size_t)snprintf(p, remain, "%s%s", sep, name); \
+ p = wlen >= remain ? end : p + wlen; \
+ sep = ", "; \
+ }
+
+ sep = NULL;
+ WT_APPEND_FLAG(WT_TRK_DISCARD, "discard");
+ WT_APPEND_FLAG(WT_TRK_INUSE, "inuse");
+ WT_APPEND_FLAG(WT_TRK_JUST_ADDED, "just-added");
+ WT_APPEND_FLAG(WT_TRK_ONPAGE, "onpage");
+
return (buf);
}
#endif