in src/generic/logtochannel.c [155:195]
int logToChannel(Tcl_Interp * interp, ClientData clientData, char *msg)
{
LogToChannelData *logToChannelData;
int res;
if ((interp == NULL) || (clientData == NULL) || (msg == NULL))
return TCL_ERROR;
logToChannelData = (LogToChannelData *) clientData;
/* get channel every time, as it might have been closed
and this can only be detected that way */
if (logToChannelData->channelName != NULL) {
int mode;
Tcl_Channel channel = NULL;
channel = Tcl_GetChannel(interp, logToChannelData->channelName, &mode);
if (channel == NULL) {
return TCL_ERROR;
}
if (!(mode & TCL_WRITABLE)) {
return TCL_ERROR;
}
/* No seek function because it might well not exist, and we ought
* to be at the end anyway. */
res = Tcl_WriteChars(channel, msg, -1);
if (res < 0)
return TCL_ERROR;
if (logToChannelData->isBuffered == TCL_ERROR)
return Tcl_Flush(channel);
return TCL_OK;
} else {
return TCL_ERROR;
}
}