summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorapnadkarni <apnmbx-wits@yahoo.com>2023-05-03 03:31:49 (GMT)
committerapnadkarni <apnmbx-wits@yahoo.com>2023-05-03 03:31:49 (GMT)
commit7b688527d719054d95ce6e5313830d6dd9d50a25 (patch)
treeb4a8782c203ed60e376b9d3f10563a174dc3ed50
parent2dccd2a5670532686cbe9da74ccf8e2ce591a20b (diff)
downloadtcl-7b688527d719054d95ce6e5313830d6dd9d50a25.zip
tcl-7b688527d719054d95ce6e5313830d6dd9d50a25.tar.gz
tcl-7b688527d719054d95ce6e5313830d6dd9d50a25.tar.bz2
Changed CHANNEL_PROFILE_* to ENCODING_PROFILE_* and moved out of tclIO.h. See below.
For whatever reason, these macros were renamed and moved to tclIO.h post-660. This is inappropriate as those macros deal with *encoding* flags, not *channel* flags and have relevance outside of I/O making their renaming inappropriate. Further putting them in tclIO.h forces inclusion of that header in modules that do not otherwise need that header.
-rw-r--r--generic/tcl.h6
-rw-r--r--generic/tclCmdAH.c2
-rw-r--r--generic/tclEncoding.c13
-rw-r--r--generic/tclIO.c24
-rw-r--r--generic/tclIO.h7
-rw-r--r--generic/tclInt.h15
6 files changed, 39 insertions, 28 deletions
diff --git a/generic/tcl.h b/generic/tcl.h
index f8a34c0..318c7a1 100644
--- a/generic/tcl.h
+++ b/generic/tcl.h
@@ -2176,7 +2176,11 @@ typedef struct Tcl_EncodingType {
#define TCL_ENCODING_CHAR_LIMIT 0x10
/* Internal use bits, do not define bits in this space. See above comment */
#define TCL_ENCODING_INTERNAL_USE_MASK 0xFF00
-/* Reserve top byte for profile values (disjoint, not a mask) */
+/*
+ * Reserve top byte for profile values (disjoint, not a mask). In case of
+ * changes, ensure ENCODING_PROFILE_* macros in tclInt.h are modified if
+ * necessary.
+ */
#define TCL_ENCODING_PROFILE_TCL8 0x01000000
#define TCL_ENCODING_PROFILE_STRICT 0x02000000
#define TCL_ENCODING_PROFILE_REPLACE 0x03000000
diff --git a/generic/tclCmdAH.c b/generic/tclCmdAH.c
index 2f50959..aa7a9b0 100644
--- a/generic/tclCmdAH.c
+++ b/generic/tclCmdAH.c
@@ -675,7 +675,7 @@ EncodingConvertfromObjCmd(
* Convert the string into a byte array in 'ds'.
*/
#if !defined(TCL_NO_DEPRECATED) && (TCL_MAJOR_VERSION < 9)
- if (CHANNEL_PROFILE_GET(flags) == TCL_ENCODING_PROFILE_TCL8) {
+ if (ENCODING_PROFILE_GET(flags) == TCL_ENCODING_PROFILE_TCL8) {
/* Permits high bits to be non-0 in byte array (Tcl 8 style) */
bytesPtr = (char *) Tcl_GetByteArrayFromObj(data, &length);
} else
diff --git a/generic/tclEncoding.c b/generic/tclEncoding.c
index 647ed68..32878b0 100644
--- a/generic/tclEncoding.c
+++ b/generic/tclEncoding.c
@@ -10,7 +10,6 @@
*/
#include "tclInt.h"
-#include "tclIO.h"
typedef size_t (LengthProc)(const char *src);
@@ -200,10 +199,10 @@ static struct TclEncodingProfiles {
{"tcl8", TCL_ENCODING_PROFILE_TCL8},
};
#define PROFILE_STRICT(flags_) \
- (CHANNEL_PROFILE_GET(flags_) == TCL_ENCODING_PROFILE_STRICT)
+ (ENCODING_PROFILE_GET(flags_) == TCL_ENCODING_PROFILE_STRICT)
#define PROFILE_REPLACE(flags_) \
- (CHANNEL_PROFILE_GET(flags_) == TCL_ENCODING_PROFILE_REPLACE)
+ (ENCODING_PROFILE_GET(flags_) == TCL_ENCODING_PROFILE_REPLACE)
#define UNICODE_REPLACE_CHAR ((Tcl_UniChar)0xFFFD)
#define SURROGATE(c_) (((c_) & ~0x7FF) == 0xD800)
@@ -2527,7 +2526,7 @@ UtfToUtfProc(
flags |= PTR2INT(clientData);
dstEnd = dst + dstLen - ((flags & ENCODING_UTF) ? TCL_UTF_MAX : 6);
- profile = CHANNEL_PROFILE_GET(flags);
+ profile = ENCODING_PROFILE_GET(flags);
for (numChars = 0; src < srcEnd && numChars <= charLimit; numChars++) {
if ((src > srcClose) && (!Tcl_UtfCharComplete(src, srcEnd - src))) {
@@ -4545,9 +4544,9 @@ TclEncodingProfileIdToName(
int TclEncodingSetProfileFlags(int flags)
{
if (flags & TCL_ENCODING_STOPONERROR) {
- CHANNEL_PROFILE_SET(flags, TCL_ENCODING_PROFILE_STRICT);
+ ENCODING_PROFILE_SET(flags, TCL_ENCODING_PROFILE_STRICT);
} else {
- int profile = CHANNEL_PROFILE_GET(flags);
+ int profile = ENCODING_PROFILE_GET(flags);
switch (profile) {
case TCL_ENCODING_PROFILE_TCL8:
case TCL_ENCODING_PROFILE_STRICT:
@@ -4555,7 +4554,7 @@ int TclEncodingSetProfileFlags(int flags)
break;
case 0: /* Unspecified by caller */
default:
- CHANNEL_PROFILE_SET(flags, TCL_ENCODING_PROFILE_TCL8);
+ ENCODING_PROFILE_SET(flags, TCL_ENCODING_PROFILE_TCL8);
break;
}
}
diff --git a/generic/tclIO.c b/generic/tclIO.c
index 92ad97e..57c1554 100644
--- a/generic/tclIO.c
+++ b/generic/tclIO.c
@@ -1702,11 +1702,11 @@ Tcl_CreateChannel(
}
statePtr->inputEncodingState = NULL;
statePtr->inputEncodingFlags = TCL_ENCODING_START;
- CHANNEL_PROFILE_SET(statePtr->inputEncodingFlags,
+ ENCODING_PROFILE_SET(statePtr->inputEncodingFlags,
TCL_ENCODING_PROFILE_TCL8);
statePtr->outputEncodingState = NULL;
statePtr->outputEncodingFlags = TCL_ENCODING_START;
- CHANNEL_PROFILE_SET(statePtr->outputEncodingFlags,
+ ENCODING_PROFILE_SET(statePtr->outputEncodingFlags,
TCL_ENCODING_PROFILE_TCL8);
/*
@@ -8067,7 +8067,7 @@ Tcl_GetChannelOption(
Tcl_DStringAppendElement(dsPtr, "-profile");
}
/* Note currently input and output profiles are same */
- profile = CHANNEL_PROFILE_GET(statePtr->inputEncodingFlags);
+ profile = ENCODING_PROFILE_GET(statePtr->inputEncodingFlags);
profileName = TclEncodingProfileIdToName(interp, profile);
if (profileName == NULL) {
return TCL_ERROR;
@@ -8273,12 +8273,12 @@ Tcl_SetChannelOption(
Tcl_FreeEncoding(statePtr->encoding);
statePtr->encoding = encoding;
statePtr->inputEncodingState = NULL;
- profile = CHANNEL_PROFILE_GET(statePtr->inputEncodingFlags);
+ profile = ENCODING_PROFILE_GET(statePtr->inputEncodingFlags);
statePtr->inputEncodingFlags = TCL_ENCODING_START;
- CHANNEL_PROFILE_SET(statePtr->inputEncodingFlags, profile);
+ ENCODING_PROFILE_SET(statePtr->inputEncodingFlags, profile);
statePtr->outputEncodingState = NULL;
statePtr->outputEncodingFlags = TCL_ENCODING_START;
- CHANNEL_PROFILE_SET(statePtr->outputEncodingFlags, profile); /* Same as input */
+ ENCODING_PROFILE_SET(statePtr->outputEncodingFlags, profile); /* Same as input */
ResetFlag(statePtr, CHANNEL_NEED_MORE_DATA|CHANNEL_ENCODING_ERROR);
UpdateInterest(chanPtr);
return TCL_OK;
@@ -8342,8 +8342,8 @@ Tcl_SetChannelOption(
if (TclEncodingProfileNameToId(interp, newValue, &profile) != TCL_OK) {
return TCL_ERROR;
}
- CHANNEL_PROFILE_SET(statePtr->inputEncodingFlags, profile);
- CHANNEL_PROFILE_SET(statePtr->outputEncodingFlags, profile);
+ ENCODING_PROFILE_SET(statePtr->inputEncodingFlags, profile);
+ ENCODING_PROFILE_SET(statePtr->outputEncodingFlags, profile);
ResetFlag(statePtr, CHANNEL_NEED_MORE_DATA|CHANNEL_ENCODING_ERROR);
return TCL_OK;
} else if (HaveOpt(1, "-translation")) {
@@ -9470,8 +9470,8 @@ TclCopyChannel(
&& inStatePtr->inputTranslation == TCL_TRANSLATE_LF
&& outStatePtr->outputTranslation == TCL_TRANSLATE_LF
&& inStatePtr->encoding == outStatePtr->encoding
- && CHANNEL_PROFILE_GET(inStatePtr->inputEncodingFlags) == TCL_ENCODING_PROFILE_TCL8
- && CHANNEL_PROFILE_GET(outStatePtr->outputEncodingFlags) == TCL_ENCODING_PROFILE_TCL8;
+ && ENCODING_PROFILE_GET(inStatePtr->inputEncodingFlags) == TCL_ENCODING_PROFILE_TCL8
+ && ENCODING_PROFILE_GET(outStatePtr->outputEncodingFlags) == TCL_ENCODING_PROFILE_TCL8;
/*
* Allocate a new CopyState to maintain info about the current copy in
@@ -9799,8 +9799,8 @@ CopyData(
inBinary = (inStatePtr->encoding == NULL);
outBinary = (outStatePtr->encoding == NULL);
sameEncoding = inStatePtr->encoding == outStatePtr->encoding
- && CHANNEL_PROFILE_GET(inStatePtr->inputEncodingFlags) == TCL_ENCODING_PROFILE_TCL8
- && CHANNEL_PROFILE_GET(outStatePtr->outputEncodingFlags) == TCL_ENCODING_PROFILE_TCL8;
+ && ENCODING_PROFILE_GET(inStatePtr->inputEncodingFlags) == TCL_ENCODING_PROFILE_TCL8
+ && ENCODING_PROFILE_GET(outStatePtr->outputEncodingFlags) == TCL_ENCODING_PROFILE_TCL8;
if (!(inBinary || sameEncoding)) {
TclNewObj(bufObj);
diff --git a/generic/tclIO.h b/generic/tclIO.h
index 399acdb..729db5d 100644
--- a/generic/tclIO.h
+++ b/generic/tclIO.h
@@ -286,13 +286,6 @@ typedef struct ChannelState {
#define CHANNEL_CLOSEDWRITE (1<<21) /* Channel write side has been closed.
* No further Tcl-level write IO on
* the channel is allowed. */
-#define CHANNEL_PROFILE_MASK 0xFF000000
-#define CHANNEL_PROFILE_GET(flags_) ((flags_) & CHANNEL_PROFILE_MASK)
-#define CHANNEL_PROFILE_SET(flags_, profile_) \
- do { \
- (flags_) &= ~CHANNEL_PROFILE_MASK; \
- (flags_) |= profile_; \
- } while (0)
/*
* The length of time to wait between synthetic timer events. Must be zero or
diff --git a/generic/tclInt.h b/generic/tclInt.h
index 2d3a0fc..d3b2548 100644
--- a/generic/tclInt.h
+++ b/generic/tclInt.h
@@ -2860,6 +2860,21 @@ typedef struct ProcessGlobalValue {
/* Reject underscore digit separator */
/*
+ *----------------------------------------------------------------------
+ * Internal convenience macros for manipulating encoding flags. See
+ * TCL_ENCODING_PROFILE_* in tcl.h
+ *----------------------------------------------------------------------
+ */
+
+#define ENCODING_PROFILE_MASK 0xFF000000
+#define ENCODING_PROFILE_GET(flags_) ((flags_) & ENCODING_PROFILE_MASK)
+#define ENCODING_PROFILE_SET(flags_, profile_) \
+ do { \
+ (flags_) &= ~ENCODING_PROFILE_MASK; \
+ (flags_) |= profile_; \
+ } while (0)
+
+/*
*----------------------------------------------------------------
* Variables shared among Tcl modules but not used by the outside world.
*----------------------------------------------------------------