summaryrefslogtreecommitdiffstats
path: root/generic/tclTest.c
diff options
context:
space:
mode:
authorapnadkarni <apnmbx-wits@yahoo.com>2022-10-09 18:11:44 (GMT)
committerapnadkarni <apnmbx-wits@yahoo.com>2022-10-09 18:11:44 (GMT)
commit6def8b0f5838db2823d34a3210e018e1a59faee7 (patch)
treeca35065b368092b5e5fb50a9a13ec59a864a7c31 /generic/tclTest.c
parentbff6ed619c256ef90256f67fc53f7b566b58c368 (diff)
downloadtcl-6def8b0f5838db2823d34a3210e018e1a59faee7.zip
tcl-6def8b0f5838db2823d34a3210e018e1a59faee7.tar.gz
tcl-6def8b0f5838db2823d34a3210e018e1a59faee7.tar.bz2
TIP 643 code. Docs, tests pending
Diffstat (limited to 'generic/tclTest.c')
-rw-r--r--generic/tclTest.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/generic/tclTest.c b/generic/tclTest.c
index 95f4d2f..ae765aa 100644
--- a/generic/tclTest.c
+++ b/generic/tclTest.c
@@ -1996,12 +1996,17 @@ TestencodingObjCmd(
const char *string;
TclEncoding *encodingPtr;
static const char *const optionStrings[] = {
- "create", "delete", NULL
+ "create", "delete", "nullength", NULL
};
enum options {
- ENC_CREATE, ENC_DELETE
+ ENC_CREATE, ENC_DELETE, ENC_NULLENGTH
};
+ if (objc < 2) {
+ Tcl_WrongNumArgs(interp, 2, objv, "?encoding?");
+ return TCL_ERROR;
+ }
+
if (Tcl_GetIndexFromObj(interp, objv[1], optionStrings, "option", 0,
&index) != TCL_OK) {
return TCL_ERROR;
@@ -2012,6 +2017,7 @@ TestencodingObjCmd(
Tcl_EncodingType type;
if (objc != 5) {
+ Tcl_WrongNumArgs(interp, 2, objv, "name toutfcmd fromutfcmd");
return TCL_ERROR;
}
encodingPtr = (TclEncoding*)ckalloc(sizeof(TclEncoding));
@@ -2048,6 +2054,20 @@ TestencodingObjCmd(
Tcl_FreeEncoding(encoding); /* Free to match CREATE */
TclFreeInternalRep(objv[2]); /* Free the cached ref */
break;
+
+ case ENC_NULLENGTH:
+ if (objc > 3) {
+ Tcl_WrongNumArgs(interp, 2, objv, "?encoding?");
+ return TCL_ERROR;
+ }
+ encoding =
+ Tcl_GetEncoding(interp, objc == 2 ? NULL : Tcl_GetString(objv[2]));
+ if (encoding == NULL) {
+ return TCL_ERROR;
+ }
+ Tcl_SetObjResult(interp,
+ Tcl_NewIntObj(Tcl_GetEncodingNulLength(encoding)));
+ Tcl_FreeEncoding(encoding);
}
return TCL_OK;
}