summaryrefslogtreecommitdiff
path: root/lang/tcl/tcl_seq.c
diff options
context:
space:
mode:
Diffstat (limited to 'lang/tcl/tcl_seq.c')
-rw-r--r--lang/tcl/tcl_seq.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/lang/tcl/tcl_seq.c b/lang/tcl/tcl_seq.c
index 75f59fee..c84123ce 100644
--- a/lang/tcl/tcl_seq.c
+++ b/lang/tcl/tcl_seq.c
@@ -1,7 +1,7 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 2004, 2012 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2015 Oracle and/or its affiliates. All rights reserved.
*
* $Id$
*/
@@ -77,7 +77,8 @@ seq_Cmd(clientData, interp, objc, objv)
DB_SEQUENCE *seq;
Tcl_Obj *myobjv[2], *res;
db_seq_t min, max;
- int cmdindex, ncache, result, ret;
+ int cmdindex, result, ret;
+ u_int32_t ncache;
Tcl_ResetResult(interp);
seq = (DB_SEQUENCE *)clientData;
@@ -140,7 +141,7 @@ seq_Cmd(clientData, interp, objc, objv)
ret = seq->get_cachesize(seq, &ncache);
if ((result = _ReturnSetup(interp, ret,
DB_RETOK_STD(ret), "sequence get_cachesize")) == TCL_OK)
- res = Tcl_NewIntObj(ncache);
+ res = Tcl_NewIntObj((int)ncache);
break;
case SEQGETDB:
if (objc != 2) {
@@ -203,14 +204,18 @@ tcl_SeqStat(interp, objc, objv, seq)
flag = 0;
if (objc > 3) {
- Tcl_WrongNumArgs(interp, 2, objv, "?-clear?");
+ Tcl_WrongNumArgs(interp, 2, objv, "?-all? ?-clear?");
return (TCL_ERROR);
}
if (objc == 3) {
arg = Tcl_GetStringFromObj(objv[2], NULL);
- if (strcmp(arg, "-clear") == 0)
+ if (strcmp(arg, "-all") == 0) {
+ flag = DB_STAT_ALL;
+ }
+ else if (strcmp(arg, "-clear") == 0) {
flag = DB_STAT_CLEAR;
+ }
else {
Tcl_SetResult(interp,
"db stat: unknown arg", TCL_STATIC);
@@ -266,10 +271,12 @@ tcl_SeqStatPrint(interp, objc, objv, seq)
DB_SEQUENCE *seq; /* Environment pointer */
{
static const char *seqstatprtopts[] = {
+ "-all",
"-clear",
NULL
};
enum seqstatprtopts {
+ SEQSTATPRTALL,
SEQSTATPRTCLEAR
};
u_int32_t flag;
@@ -287,6 +294,9 @@ tcl_SeqStatPrint(interp, objc, objv, seq)
}
i++;
switch ((enum seqstatprtopts)optindex) {
+ case SEQSTATPRTALL:
+ flag |= DB_STAT_ALL;
+ break;
case SEQSTATPRTCLEAR:
flag |= DB_STAT_CLEAR;
break;
@@ -422,7 +432,7 @@ tcl_SeqGet(interp, objc, objv, seq)
if ((result = _GetUInt32(interp, objv[objc - 1], &delta)) != TCL_OK)
goto out;
- ret = seq->get(seq, txn, (int32_t)delta, &value, aflag);
+ ret = seq->get(seq, txn, delta, &value, aflag);
result = _ReturnSetup(interp, ret, DB_RETOK_DBGET(ret), "sequence get");
if (ret == 0) {
res = Tcl_NewWideIntObj((Tcl_WideInt)value);
@@ -459,8 +469,6 @@ tcl_SeqRemove(interp, objc, objv, seq, ip)
txn = NULL;
aflag = 0;
- _DeleteInfo(ip);
-
if (objc < 2) {
Tcl_WrongNumArgs(interp, 2, objv, "?-args?");
return (TCL_ERROR);
@@ -510,6 +518,7 @@ tcl_SeqRemove(interp, objc, objv, seq, ip)
if (result != TCL_OK)
goto out;
+ _DeleteInfo(ip);
ret = seq->remove(seq, txn, aflag);
result = _ReturnSetup(interp,
ret, DB_RETOK_DBGET(ret), "sequence remove");
@@ -557,7 +566,7 @@ tcl_SeqGetFlags(interp, objc, objv, seq)
if (strlen(buf) > 0)
(void)strncat(buf, " ", sizeof(buf));
(void)strncat(
- buf, seq_flags[i].arg, sizeof(buf));
+ buf, seq_flags[i].arg, sizeof(buf) - 1);
}
res = NewStringObj(buf, strlen(buf));