Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch tip-643 Excluding Merge-Ins
This is equivalent to a diff from 4e9abffbc2 to 87ff3bbe46
2022-10-22
| ||
23:48 | TIP #643: Provide a public API to retrieve nul terminator length for an encoding check-in: 36f1c3b24e user: jan.nijtmans tags: core-8-branch | |
2022-10-21
| ||
08:25 | Merge 8.6 check-in: bbe81cdc01 user: jan.nijtmans tags: core-8-branch | |
2022-10-20
| ||
15:21 | Merge 8.7 check-in: 61e4fe2b4e user: jan.nijtmans tags: bug-6978c01b65 | |
15:18 | Merge 8.7 Closed-Leaf check-in: c5259a44e4 user: jan.nijtmans tags: tip-641 | |
15:16 | Merge 8.7 Closed-Leaf check-in: 87ff3bbe46 user: jan.nijtmans tags: tip-643 | |
15:15 | Merge 8.7 check-in: c778e9043a user: jan.nijtmans tags: tip-646 | |
2022-10-19
| ||
20:07 | Merge 8.7 check-in: a4e82b6a98 user: jan.nijtmans tags: trunk, main | |
20:05 | Re-build win64/zlib1.dll (with ucrt support) check-in: 4e9abffbc2 user: jan.nijtmans tags: core-8-branch | |
16:10 | Merge 8.6 check-in: e7c14e904d user: jan.nijtmans tags: core-8-branch | |
2022-10-10
| ||
13:52 | Tests and docs for Tcl_GetEncodingNulLength check-in: a08d9101b6 user: apnadkarni tags: tip-643 | |
Changes to doc/Encoding.3.
︙ | |||
47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | + + + | .sp TCHAR * \fBTcl_WinUtfToTChar\fR(\fIsrc, srcLen, dstPtr\fR) .sp const char * \fBTcl_GetEncodingName\fR(\fIencoding\fR) .sp int \fBTcl_GetEncodingNulLength\fR(\fIencoding\fR) .sp int \fBTcl_SetSystemEncoding\fR(\fIinterp, name\fR) .sp const char * \fBTcl_GetEncodingNameFromEnvironment\fR(\fIbufPtr\fR) .sp void |
︙ | |||
289 290 291 292 293 294 295 296 297 298 299 300 301 302 | 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 | + + + | doesn't accept -1 as length parameter. .PP \fBTcl_GetEncodingName\fR is roughly the inverse of \fBTcl_GetEncoding\fR. Given an \fIencoding\fR, the return value is the \fIname\fR argument that was used to create the encoding. The string returned by \fBTcl_GetEncodingName\fR is only guaranteed to persist until the \fIencoding\fR is deleted. The caller must not modify this string. .PP \fBTcl_GetEncodingNulLength\fR returns the length of the terminating nul byte sequence for strings in the specified encoding. .PP \fBTcl_SetSystemEncoding\fR sets the default encoding that should be used whenever the user passes a NULL value for the \fIencoding\fR argument to any of the other encoding functions. If \fIname\fR is NULL, the system encoding is reset to the default system encoding, \fBbinary\fR. If the name did not refer to any known or loadable encoding, \fBTCL_ERROR\fR is returned and an error message is left in \fIinterp\fR. Otherwise, this |
︙ |
Changes to generic/tcl.decls.
︙ | |||
2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 | 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 | + + + + + | # TIP #220. declare 682 { int Tcl_RemoveChannelMode(Tcl_Interp *interp, Tcl_Channel chan, int mode) } # ----- BASELINE -- FOR -- 8.7.0 ----- # # TIP 643 declare 683 { int Tcl_GetEncodingNulLength(Tcl_Encoding encoding) } ############################################################################## # Define the platform specific public Tcl interface. These functions are only # available on the designated platform. interface tclPlat |
︙ |
Changes to generic/tclDecls.h.
︙ | |||
2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 | 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 | + + | /* 681 */ EXTERN int Tcl_GetNumber(Tcl_Interp *interp, const char *bytes, size_t numBytes, void **clientDataPtr, int *typePtr); /* 682 */ EXTERN int Tcl_RemoveChannelMode(Tcl_Interp *interp, Tcl_Channel chan, int mode); /* 683 */ EXTERN int Tcl_GetEncodingNulLength(Tcl_Encoding encoding); typedef struct { const struct TclPlatStubs *tclPlatStubs; const struct TclIntStubs *tclIntStubs; const struct TclIntPlatStubs *tclIntPlatStubs; } TclStubHooks; |
︙ | |||
2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 | 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 | + | Tcl_Command (*tcl_CreateObjCommand2) (Tcl_Interp *interp, const char *cmdName, Tcl_ObjCmdProc2 *proc2, void *clientData, Tcl_CmdDeleteProc *deleteProc); /* 676 */ Tcl_Trace (*tcl_CreateObjTrace2) (Tcl_Interp *interp, int level, int flags, Tcl_CmdObjTraceProc2 *objProc2, void *clientData, Tcl_CmdObjTraceDeleteProc *delProc); /* 677 */ Tcl_Command (*tcl_NRCreateCommand2) (Tcl_Interp *interp, const char *cmdName, Tcl_ObjCmdProc2 *proc, Tcl_ObjCmdProc2 *nreProc2, void *clientData, Tcl_CmdDeleteProc *deleteProc); /* 678 */ int (*tcl_NRCallObjProc2) (Tcl_Interp *interp, Tcl_ObjCmdProc2 *objProc2, void *clientData, size_t objc, Tcl_Obj *const objv[]); /* 679 */ int (*tcl_GetNumberFromObj) (Tcl_Interp *interp, Tcl_Obj *objPtr, void **clientDataPtr, int *typePtr); /* 680 */ int (*tcl_GetNumber) (Tcl_Interp *interp, const char *bytes, size_t numBytes, void **clientDataPtr, int *typePtr); /* 681 */ int (*tcl_RemoveChannelMode) (Tcl_Interp *interp, Tcl_Channel chan, int mode); /* 682 */ int (*tcl_GetEncodingNulLength) (Tcl_Encoding encoding); /* 683 */ } TclStubs; extern const TclStubs *tclStubsPtr; #ifdef __cplusplus } #endif |
︙ | |||
4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 | 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 | + + | (tclStubsPtr->tcl_NRCallObjProc2) /* 679 */ #define Tcl_GetNumberFromObj \ (tclStubsPtr->tcl_GetNumberFromObj) /* 680 */ #define Tcl_GetNumber \ (tclStubsPtr->tcl_GetNumber) /* 681 */ #define Tcl_RemoveChannelMode \ (tclStubsPtr->tcl_RemoveChannelMode) /* 682 */ #define Tcl_GetEncodingNulLength \ (tclStubsPtr->tcl_GetEncodingNulLength) /* 683 */ #endif /* defined(USE_TCL_STUBS) */ /* !END!: Do not edit above this line. */ #undef TclUnusedStubEntry #if defined(USE_TCL_STUBS) |
︙ |
Changes to generic/tclEncoding.c.
︙ | |||
977 978 979 980 981 982 983 984 985 986 987 988 989 990 | 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 | + + + + + + + + + + + + + + + + + + + + + + + + + + + | hPtr = Tcl_NextHashEntry(&search)) { Tcl_ListObjAppendElement(NULL, result, (Tcl_Obj *) Tcl_GetHashKey(&table, hPtr)); } Tcl_SetObjResult(interp, result); Tcl_DeleteHashTable(&table); } /* *------------------------------------------------------------------------- * * Tcl_GetEncodingNulLength -- * * Given an encoding, return the number of nul bytes used for the * string termination. * * Results: * The name of the encoding. * * Side effects: * None. * *--------------------------------------------------------------------------- */ int Tcl_GetEncodingNulLength( Tcl_Encoding encoding) { if (encoding == NULL) { encoding = systemEncoding; } return ((Encoding *) encoding)->nullSize; } /* *------------------------------------------------------------------------ * * Tcl_SetSystemEncoding -- * * Sets the default encoding that should be used whenever the user passes |
︙ |
Changes to generic/tclStubInit.c.
︙ | |||
2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 | 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 | + | Tcl_CreateObjCommand2, /* 676 */ Tcl_CreateObjTrace2, /* 677 */ Tcl_NRCreateCommand2, /* 678 */ Tcl_NRCallObjProc2, /* 679 */ Tcl_GetNumberFromObj, /* 680 */ Tcl_GetNumber, /* 681 */ Tcl_RemoveChannelMode, /* 682 */ Tcl_GetEncodingNulLength, /* 683 */ }; /* !END!: Do not edit above this line. */ |
Changes to generic/tclTest.c.
︙ | |||
1992 1993 1994 1995 1996 1997 1998 | 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 | - + - + + + + + + + | Tcl_Obj *const objv[]) /* Argument objects. */ { Tcl_Encoding encoding; int index, length; const char *string; TclEncoding *encodingPtr; static const char *const optionStrings[] = { |
︙ | |||
2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 | 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 | + + + + + + + + + + + + + + | if (TCL_OK != Tcl_GetEncodingFromObj(interp, objv[2], &encoding)) { return TCL_ERROR; } Tcl_FreeEncoding(encoding); /* Free returned reference */ 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; } static int EncodingToUtfProc( void *clientData, /* TclEncoding structure. */ |
︙ |
Changes to tests/encoding.test.
︙ | |||
836 837 838 839 840 841 842 843 844 845 846 847 848 849 | 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 | + + + + + + + + + + + | } return $count } -result [expr {[info exists ::tcl_precision] ? 92 : 91}] runtests } test encoding-29.0 {get encoding nul terminator lengths} -constraints { testencoding } -body { list \ [testencoding nullength ascii] \ [testencoding nullength utf-16] \ [testencoding nullength utf-32] \ [testencoding nullength gb12345] \ [testencoding nullength ksc5601] } -result {1 2 4 2 2} # cleanup namespace delete ::tcl::test::encoding ::tcltest::cleanupTests return # Local Variables: |
︙ |