summaryrefslogtreecommitdiffstats
path: root/generic/tclIO.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclIO.c')
-rw-r--r--generic/tclIO.c120
1 files changed, 62 insertions, 58 deletions
diff --git a/generic/tclIO.c b/generic/tclIO.c
index 75427de..df9f665 100644
--- a/generic/tclIO.c
+++ b/generic/tclIO.c
@@ -28,7 +28,7 @@ typedef struct ChannelHandler {
int mask; /* Mask of desired events. */
Tcl_ChannelProc *proc; /* Procedure to call in the type of
* Tcl_CreateChannelHandler. */
- void *clientData; /* Argument to pass to procedure. */
+ void *clientData; /* Argument to pass to procedure. */
struct ChannelHandler *nextPtr;
/* Next one in list of registered handlers. */
} ChannelHandler;
@@ -50,11 +50,12 @@ typedef struct ChannelHandler {
*/
typedef struct NextChannelHandler {
- ChannelHandler *nextHandlerPtr; /* The next handler to be invoked in
- * this invocation. */
+ ChannelHandler *nextHandlerPtr;
+ /* The next handler to be invoked in
+ * this invocation. */
struct NextChannelHandler *nestedHandlerPtr;
- /* Next nested invocation of
- * Tcl_NotifyChannel. */
+ /* Next nested invocation of
+ * Tcl_NotifyChannel. */
} NextChannelHandler;
/*
@@ -103,7 +104,7 @@ typedef struct CopyState {
Tcl_Interp *interp; /* Interp that started the copy. */
Tcl_Obj *cmdPtr; /* Command to be invoked at completion. */
Tcl_Size bufSize; /* Size of appended buffer. */
- char buffer[TCLFLEXARRAY]; /* Copy buffer, this must be the last
+ char buffer[TCLFLEXARRAY]; /* Copy buffer, this must be the last
* field. */
} CopyState;
@@ -141,10 +142,11 @@ static Tcl_ThreadDataKey dataKey;
*/
typedef struct CloseCallback {
- Tcl_CloseProc *proc; /* The procedure to call. */
+ Tcl_CloseProc *proc; /* The procedure to call. */
void *clientData; /* Arbitrary one-word data to pass
- * to the callback. */
- struct CloseCallback *nextPtr; /* For chaining close callbacks. */
+ * to the callback. */
+ struct CloseCallback *nextPtr;
+ /* For chaining close callbacks. */
} CloseCallback;
/*
@@ -174,7 +176,7 @@ static int CloseWrite(Tcl_Interp *interp, Channel *chanPtr);
static void CommonGetsCleanup(Channel *chanPtr);
static int CopyData(CopyState *csPtr, int mask);
static void DeleteTimerHandler(ChannelState *statePtr);
-int Lossless(ChannelState *inStatePtr,
+static int Lossless(ChannelState *inStatePtr,
ChannelState *outStatePtr, long long toRead);
static int MoveBytes(CopyState *csPtr);
@@ -617,7 +619,7 @@ TclFinalizeIOSubsystem(void)
continue;
}
if (!GotFlag(statePtr, CHANNEL_INCLOSE | CHANNEL_CLOSED )
- || GotFlag(statePtr, BG_FLUSH_SCHEDULED)) {
+ || GotFlag(statePtr, BG_FLUSH_SCHEDULED)) {
ResetFlag(statePtr, BG_FLUSH_SCHEDULED);
active = 1;
break;
@@ -4264,8 +4266,8 @@ WillWrite(
{
int inputBuffered;
- if (((Tcl_ChannelWideSeekProc(chanPtr->typePtr) != NULL)
- ) && ((inputBuffered = Tcl_InputBuffered((Tcl_Channel) chanPtr)) > 0)){
+ if ((Tcl_ChannelWideSeekProc(chanPtr->typePtr) != NULL)
+ && ((inputBuffered = Tcl_InputBuffered((Tcl_Channel) chanPtr)) > 0)){
int ignore;
DiscardInputQueued(chanPtr->state, 0);
@@ -4286,8 +4288,8 @@ WillRead(
Tcl_SetErrno(EINVAL);
return -1;
}
- if (((Tcl_ChannelWideSeekProc(chanPtr->typePtr) != NULL)
- ) && (Tcl_OutputBuffered((Tcl_Channel) chanPtr) > 0)) {
+ if ((Tcl_ChannelWideSeekProc(chanPtr->typePtr) != NULL)
+ && (Tcl_OutputBuffered((Tcl_Channel) chanPtr) > 0)) {
/*
* CAVEAT - The assumption here is that FlushChannel() will push out
* the bytes of any writes that are in progress. Since this is a
@@ -4299,7 +4301,7 @@ WillRead(
*/
if (FlushChannel(NULL, chanPtr, 0) != 0) {
- return -1;
+ return -1;
}
}
return 0;
@@ -4403,14 +4405,11 @@ Write(
* current output encoding and strict encoding is active.
*/
- if (
- (result == TCL_CONVERT_UNKNOWN || result == TCL_CONVERT_SYNTAX)
- ||
- /*
- * We're reading from invalid/incomplete UTF-8.
- */
- ((result != TCL_OK) && (srcRead + dstWrote == 0))
- ) {
+ if ((result == TCL_CONVERT_UNKNOWN || result == TCL_CONVERT_SYNTAX) ||
+ /*
+ * We're reading from invalid/incomplete UTF-8.
+ */
+ ((result != TCL_OK) && (srcRead + dstWrote == 0))) {
encodingError = 1;
result = TCL_OK;
}
@@ -6249,7 +6248,9 @@ ReadChars(
int factor = *factorPtr;
int dstLimit = TCL_UTF_MAX - 1 + toRead * factor / UTF_EXPANSION_FACTOR;
- if (dstLimit <= 0) dstLimit = INT_MAX; /* avoid overflow */
+ if (dstLimit <= 0) {
+ dstLimit = INT_MAX; /* avoid overflow */
+ }
(void) Tcl_GetStringFromObj(objPtr, &numBytes);
TclAppendUtfToUtf(objPtr, NULL, dstLimit);
if (toRead == srcLen) {
@@ -6306,12 +6307,8 @@ ReadChars(
flags, &statePtr->inputEncodingState,
dst, dstLimit, &srcRead, &dstDecoded, &numChars);
- if (code == TCL_CONVERT_UNKNOWN || code == TCL_CONVERT_SYNTAX
- || (
- code == TCL_CONVERT_MULTIBYTE
- && GotFlag(statePtr, CHANNEL_EOF
- ))
- ) {
+ if (code == TCL_CONVERT_UNKNOWN || code == TCL_CONVERT_SYNTAX ||
+ (code == TCL_CONVERT_MULTIBYTE && GotFlag(statePtr, CHANNEL_EOF))) {
SetFlag(statePtr, CHANNEL_ENCODING_ERROR);
code = TCL_OK;
}
@@ -6686,23 +6683,28 @@ TranslateInputEOL(
int numBytes = crFound - src;
memmove(dst, src, numBytes);
- dst += numBytes; dstLen -= numBytes;
- src += numBytes; srcLen -= numBytes;
+ dst += numBytes;
+ dstLen -= numBytes;
+ src += numBytes;
+ srcLen -= numBytes;
if (srcLen == 1) {
/* valid src bytes end in \r */
if (eof) {
*dst++ = '\r';
- src++; srcLen--;
+ src++;
+ srcLen--;
} else {
lesser = 0;
break;
}
} else if (src[1] == '\n') {
*dst++ = '\n';
- src += 2; srcLen -= 2;
+ src += 2;
+ srcLen -= 2;
} else {
*dst++ = '\r';
- src++; srcLen--;
+ src++;
+ srcLen--;
}
dstLen--;
lesser = (dstLen < srcLen) ? dstLen : srcLen;
@@ -6718,21 +6720,27 @@ TranslateInputEOL(
int lesser;
if (GotFlag(statePtr, INPUT_SAW_CR) && srcLen) {
- if (*src == '\n') { src++; srcLen--; }
+ if (*src == '\n') {
+ src++;
+ srcLen--;
+ }
ResetFlag(statePtr, INPUT_SAW_CR);
}
lesser = (dstLen < srcLen) ? dstLen : srcLen;
- while ((crFound = (const char *)memchr(src, '\r', lesser))) {
+ while ((crFound = (const char *) memchr(src, '\r', lesser))) {
int numBytes = crFound - src;
memmove(dst, src, numBytes);
dst[numBytes] = '\n';
- dst += numBytes + 1; dstLen -= numBytes + 1;
- src += numBytes + 1; srcLen -= numBytes + 1;
+ dst += numBytes + 1;
+ dstLen -= numBytes + 1;
+ src += numBytes + 1;
+ srcLen -= numBytes + 1;
if (srcLen == 0) {
SetFlag(statePtr, INPUT_SAW_CR);
} else if (*src == '\n') {
- src++; srcLen--;
+ src++;
+ srcLen--;
}
lesser = (dstLen < srcLen) ? dstLen : srcLen;
}
@@ -7152,8 +7160,7 @@ Tcl_Seek(
* defined. This means that the channel does not support seeking.
*/
- if ((Tcl_ChannelWideSeekProc(chanPtr->typePtr) == NULL)
- ) {
+ if (Tcl_ChannelWideSeekProc(chanPtr->typePtr) == NULL) {
Tcl_SetErrno(EINVAL);
return -1;
}
@@ -7317,8 +7324,7 @@ Tcl_Tell(
* defined. This means that the channel does not support seeking.
*/
- if ((Tcl_ChannelWideSeekProc(chanPtr->typePtr) == NULL)
- ) {
+ if (Tcl_ChannelWideSeekProc(chanPtr->typePtr) == NULL) {
Tcl_SetErrno(EINVAL);
return -1;
}
@@ -8698,19 +8704,18 @@ UpdateInterest(
TclChannelPreserve((Tcl_Channel)chanPtr);
statePtr->timerChanPtr = chanPtr;
statePtr->timer = Tcl_CreateTimerHandler(SYNTHETIC_EVENT_TIME,
- ChannelTimerProc, chanPtr);
+ ChannelTimerProc, chanPtr);
}
}
}
if (!statePtr->timer
- && mask & TCL_WRITABLE
- && GotFlag(statePtr, CHANNEL_NONBLOCKING)) {
-
+ && mask & TCL_WRITABLE
+ && GotFlag(statePtr, CHANNEL_NONBLOCKING)) {
TclChannelPreserve((Tcl_Channel)chanPtr);
statePtr->timerChanPtr = chanPtr;
statePtr->timer = Tcl_CreateTimerHandler(SYNTHETIC_EVENT_TIME,
- ChannelTimerProc,chanPtr);
+ ChannelTimerProc,chanPtr);
}
@@ -8754,9 +8759,8 @@ ChannelTimerProc(
Tcl_Preserve(statePtr);
statePtr->timer = NULL;
if (statePtr->interestMask & TCL_WRITABLE
- && GotFlag(statePtr, CHANNEL_NONBLOCKING)
- && !GotFlag(statePtr, BG_FLUSH_SCHEDULED)
- ) {
+ && GotFlag(statePtr, CHANNEL_NONBLOCKING)
+ && !GotFlag(statePtr, BG_FLUSH_SCHEDULED)) {
/*
* Restart the timer in case a channel handler reenters the event loop
* before UpdateInterest gets called by Tcl_NotifyChannel.
@@ -8768,9 +8772,9 @@ ChannelTimerProc(
/* The channel may have just been closed from within Tcl_NotifyChannel */
if (!GotFlag(statePtr, CHANNEL_INCLOSE)) {
if (!GotFlag(statePtr, CHANNEL_NEED_MORE_DATA)
- && (statePtr->interestMask & TCL_READABLE)
- && (statePtr->inQueueHead != NULL)
- && IsBufferReady(statePtr->inQueueHead)) {
+ && (statePtr->interestMask & TCL_READABLE)
+ && (statePtr->inQueueHead != NULL)
+ && IsBufferReady(statePtr->inQueueHead)) {
/*
* Restart the timer in case a channel handler reenters the event loop
* before UpdateInterest gets called by Tcl_NotifyChannel.
@@ -9810,8 +9814,8 @@ CopyData(
if ((size == 0) && Tcl_Eof(inChan) && !(cmdPtr && (mask == 0))) {
break;
}
- if (cmdPtr && (!Tcl_Eof(inChan) || (mask == 0)) &&
- !(mask & TCL_READABLE)) {
+ if (cmdPtr && (!Tcl_Eof(inChan) || (mask == 0))
+ && !(mask & TCL_READABLE)) {
if (mask & TCL_WRITABLE) {
Tcl_DeleteChannelHandler(outChan, CopyEventProc, csPtr);
}