Import Tcl 8.6.11
This commit is contained in:
@@ -160,6 +160,8 @@ static int SerialBlockProc(ClientData instanceData, int mode);
|
||||
static void SerialCheckProc(ClientData clientData, int flags);
|
||||
static int SerialCloseProc(ClientData instanceData,
|
||||
Tcl_Interp *interp);
|
||||
static int SerialClose2Proc(ClientData instanceData,
|
||||
Tcl_Interp *interp, int flags);
|
||||
static int SerialEventProc(Tcl_Event *evPtr, int flags);
|
||||
static void SerialExitHandler(ClientData clientData);
|
||||
static int SerialGetHandleProc(ClientData instanceData,
|
||||
@@ -203,7 +205,7 @@ static const Tcl_ChannelType serialChannelType = {
|
||||
SerialGetOptionProc, /* Get option proc. */
|
||||
SerialWatchProc, /* Set up notifier to watch the channel. */
|
||||
SerialGetHandleProc, /* Get an OS handle from channel. */
|
||||
NULL, /* close2proc. */
|
||||
SerialClose2Proc, /* close2proc. */
|
||||
SerialBlockProc, /* Set blocking or non-blocking mode.*/
|
||||
NULL, /* flush proc. */
|
||||
NULL, /* handler proc. */
|
||||
@@ -572,7 +574,7 @@ SerialBlockProc(
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
*
|
||||
* SerialCloseProc --
|
||||
* SerialCloseProc/SerialClose2Proc --
|
||||
*
|
||||
* Closes a serial based IO channel.
|
||||
*
|
||||
@@ -664,6 +666,18 @@ SerialCloseProc(
|
||||
}
|
||||
return errorCode;
|
||||
}
|
||||
|
||||
static int
|
||||
SerialClose2Proc(
|
||||
ClientData instanceData, /* Pointer to SerialInfo structure. */
|
||||
Tcl_Interp *interp, /* For error reporting. */
|
||||
int flags)
|
||||
{
|
||||
if ((flags & (TCL_CLOSE_READ | TCL_CLOSE_WRITE)) == 0) {
|
||||
return SerialCloseProc(instanceData, interp);
|
||||
}
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
/*
|
||||
*----------------------------------------------------------------------
|
||||
@@ -1024,7 +1038,7 @@ SerialOutputProc(
|
||||
infoPtr->writeBufLen = toWrite;
|
||||
infoPtr->writeBuf = ckalloc(toWrite);
|
||||
}
|
||||
memcpy(infoPtr->writeBuf, buf, (size_t) toWrite);
|
||||
memcpy(infoPtr->writeBuf, buf, toWrite);
|
||||
infoPtr->toWrite = toWrite;
|
||||
ResetEvent(infoPtr->evWritable);
|
||||
TclPipeThreadSignal(&infoPtr->writeTI);
|
||||
@@ -1442,7 +1456,7 @@ TclWinOpenSerialChannel(
|
||||
* are shared between multiple channels (stdin/stdout).
|
||||
*/
|
||||
|
||||
sprintf(channelName, "file%" TCL_I_MODIFIER "x", (size_t) infoPtr);
|
||||
sprintf(channelName, "file%" TCL_Z_MODIFIER "x", (size_t) infoPtr);
|
||||
|
||||
infoPtr->channel = Tcl_CreateChannel(&serialChannelType, channelName,
|
||||
infoPtr, permissions);
|
||||
@@ -1738,16 +1752,16 @@ SerialSetOptionProc(
|
||||
dcb.XonChar = argv[0][0];
|
||||
dcb.XoffChar = argv[1][0];
|
||||
if (argv[0][0] & 0x80 || argv[1][0] & 0x80) {
|
||||
Tcl_UniChar character;
|
||||
int character;
|
||||
int charLen;
|
||||
|
||||
charLen = Tcl_UtfToUniChar(argv[0], &character);
|
||||
if (argv[0][charLen]) {
|
||||
charLen = TclUtfToUCS4(argv[0], &character);
|
||||
if ((character & ~0xFF) || argv[0][charLen]) {
|
||||
goto badXchar;
|
||||
}
|
||||
dcb.XonChar = (char) character;
|
||||
charLen = Tcl_UtfToUniChar(argv[1], &character);
|
||||
if (argv[1][charLen]) {
|
||||
charLen = TclUtfToUCS4(argv[1], &character);
|
||||
if ((character & ~0xFF) || argv[1][charLen]) {
|
||||
goto badXchar;
|
||||
}
|
||||
dcb.XoffChar = (char) character;
|
||||
@@ -1765,7 +1779,7 @@ SerialSetOptionProc(
|
||||
*/
|
||||
|
||||
if ((len > 4) && (strncmp(optionName, "-ttycontrol", len) == 0)) {
|
||||
int i, result = TCL_OK;
|
||||
int i, res = TCL_OK;
|
||||
|
||||
if (Tcl_SplitList(interp, value, &argc, &argv) == TCL_ERROR) {
|
||||
return TCL_ERROR;
|
||||
@@ -1783,7 +1797,7 @@ SerialSetOptionProc(
|
||||
|
||||
for (i = 0; i < argc - 1; i += 2) {
|
||||
if (Tcl_GetBoolean(interp, argv[i+1], &flag) == TCL_ERROR) {
|
||||
result = TCL_ERROR;
|
||||
res = TCL_ERROR;
|
||||
break;
|
||||
}
|
||||
if (strncasecmp(argv[i], "DTR", strlen(argv[i])) == 0) {
|
||||
@@ -1795,7 +1809,7 @@ SerialSetOptionProc(
|
||||
Tcl_SetErrorCode(interp, "TCL", "OPERATION",
|
||||
"FCONFIGURE", "TTY_SIGNAL", NULL);
|
||||
}
|
||||
result = TCL_ERROR;
|
||||
res = TCL_ERROR;
|
||||
break;
|
||||
}
|
||||
} else if (strncasecmp(argv[i], "RTS", strlen(argv[i])) == 0) {
|
||||
@@ -1807,7 +1821,7 @@ SerialSetOptionProc(
|
||||
Tcl_SetErrorCode(interp, "TCL", "OPERATION",
|
||||
"FCONFIGURE", "TTY_SIGNAL", NULL);
|
||||
}
|
||||
result = TCL_ERROR;
|
||||
res = TCL_ERROR;
|
||||
break;
|
||||
}
|
||||
} else if (strncasecmp(argv[i], "BREAK", strlen(argv[i])) == 0) {
|
||||
@@ -1819,7 +1833,7 @@ SerialSetOptionProc(
|
||||
Tcl_SetErrorCode(interp, "TCL", "OPERATION",
|
||||
"FCONFIGURE", "TTY_SIGNAL", NULL);
|
||||
}
|
||||
result = TCL_ERROR;
|
||||
res = TCL_ERROR;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@@ -1830,13 +1844,13 @@ SerialSetOptionProc(
|
||||
Tcl_SetErrorCode(interp, "TCL", "VALUE", "TTY_SIGNAL",
|
||||
NULL);
|
||||
}
|
||||
result = TCL_ERROR;
|
||||
res = TCL_ERROR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ckfree(argv);
|
||||
return result;
|
||||
return res;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user