diff options
author | dgp <dgp@users.sourceforge.net> | 2014-11-15 21:08:57 (GMT) |
---|---|---|
committer | dgp <dgp@users.sourceforge.net> | 2014-11-15 21:08:57 (GMT) |
commit | 55688af5e97888536930067e5e23a686661a0b1c (patch) | |
tree | 7dfba7ed7d0c7b5acced0020322271a79aa378d2 /generic/tcl.h | |
parent | c3c06423586daccaeba84d4aacf23f375121434c (diff) | |
download | tcl-55688af5e97888536930067e5e23a686661a0b1c.zip tcl-55688af5e97888536930067e5e23a686661a0b1c.tar.gz tcl-55688af5e97888536930067e5e23a686661a0b1c.tar.bz2 |
Tcl_ExternalToUtf appends a terminating NUL to its encoded results.
Perhaps this is a welcome convenience for some callers, but not for Tcl's
I/O system, which has no need for that. Added a new flag value
TCL_ENCODING_NO_TERMINATE that callers can use to suppress this behavior.
This means buffers don't require so much padding, and a tiny bit of processing
is saved. Update I/O callers to use the feature.
Diffstat (limited to 'generic/tcl.h')
-rw-r--r-- | generic/tcl.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/generic/tcl.h b/generic/tcl.h index fc477f2..95f2b3f 100644 --- a/generic/tcl.h +++ b/generic/tcl.h @@ -2144,11 +2144,28 @@ typedef struct Tcl_EncodingType { * substituting one or more "close" characters in * the destination buffer and then continue to * convert the source. + * TCL_ENCODING_NO_TERMINATE - If set, Tcl_ExternalToUtf will not append a + * terminating NUL byte. Knowing that it will + * not need space to do so, it will fill all + * dstLen bytes with encoded UTF-8 content, as + * other circumstances permit. If clear, the + * default behavior is to reserve a byte in + * the dst space for NUL termination, and to + * append the NUL byte. + * TCL_ENCODING_CHAR_LIMIT - If set and dstCharsPtr is not NULL, then + * Tcl_ExternalToUtf takes the initial value + * of *dstCharsPtr is taken as a limit of the + * maximum number of chars to produce in the + * encoded UTF-8 content. Otherwise, the + * number of chars produced is controlled only + * by other limiting factors. */ #define TCL_ENCODING_START 0x01 #define TCL_ENCODING_END 0x02 #define TCL_ENCODING_STOPONERROR 0x04 +#define TCL_ENCODING_NO_TERMINATE 0x08 +#define TCL_ENCODING_CHAR_LIMIT 0x10 /* * The following definitions are the error codes returned by the conversion |