Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch tip-469 Excluding Merge-Ins
This is equivalent to a diff from 85a4914711 to 30d5e6a673
2018-10-17
| ||
20:02 | Merge 8.6 check-in: 849cc049e8 user: jan.nijtmans tags: core-8-branch | |
20:02 | merge 8.7 check-in: 9e834efc20 user: dgp tags: dgp-string-insert | |
19:49 | merge 8.7 Leaf check-in: 30d5e6a673 user: dgp tags: tip-469 | |
19:47 | merge 8.7 check-in: 740dc47d3e user: dgp tags: tip-465 | |
16:37 | merge 8.7 check-in: cd5dd34ec3 user: dgp tags: trunk | |
16:24 | merge 8.6 check-in: 85a4914711 user: dgp tags: core-8-branch | |
16:12 | Revert addition of "slowTest" as built-in constraint. (no TIP; no version bump). Let the test file t... check-in: fb856c43eb user: dgp tags: core-8-6-branch | |
2018-10-12
| ||
18:45 | Minor doc update check-in: fe86f9e208 user: dkf tags: core-8-branch | |
2018-06-04
| ||
13:17 | merge 8.7 check-in: c55441df99 user: dgp tags: tip-469 | |
Changes to generic/tclIO.c.
︙ | ︙ | |||
8921 8922 8923 8924 8925 8926 8927 | { Channel *chanPtr; /* The channel to create the handler for. */ ChannelState *statePtr; /* State info for channel */ Tcl_Channel chan; /* The opaque type for the channel. */ const char *chanName; int modeIndex; /* Index of mode argument. */ int mask; | | | | | 8921 8922 8923 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 | { Channel *chanPtr; /* The channel to create the handler for. */ ChannelState *statePtr; /* State info for channel */ Tcl_Channel chan; /* The opaque type for the channel. */ const char *chanName; int modeIndex; /* Index of mode argument. */ int mask; static const char *const modeOptions[] = {"readable", "writable", "exception", NULL}; static const int maskArray[] = {TCL_READABLE, TCL_WRITABLE, TCL_EXCEPTION }; if ((objc != 3) && (objc != 4)) { Tcl_WrongNumArgs(interp, 1, objv, "channelId event ?script?"); return TCL_ERROR; } if (Tcl_GetIndexFromObj(interp, objv[2], modeOptions, "event name", 0, &modeIndex) != TCL_OK) { return TCL_ERROR; } mask = maskArray[modeIndex]; chanName = TclGetString(objv[1]); chan = Tcl_GetChannel(interp, chanName, NULL); if (chan == NULL) { return TCL_ERROR; } chanPtr = (Channel *) chan; statePtr = chanPtr->state; if ( ((statePtr->flags | TCL_EXCEPTION) & mask) == 0) { Tcl_SetObjResult(interp, Tcl_ObjPrintf("channel is not %s", (mask == TCL_READABLE) ? "readable" : "writable")); return TCL_ERROR; } /* * If we are supposed to return the script, do so. |
︙ | ︙ |
Changes to tests/chanio.test.
︙ | ︙ | |||
5494 5495 5496 5497 5498 5499 5500 | chan event gorp readable } -returnCodes error -result {can not find channel named "gorp"} test chan-io-41.4 {Tcl_FileeventCmd: errors} -constraints fileevent -body { chan event gorp writable } -returnCodes error -result {can not find channel named "gorp"} test chan-io-41.5 {Tcl_FileeventCmd: errors} -constraints fileevent -body { chan event gorp who-knows | | | 5494 5495 5496 5497 5498 5499 5500 5501 5502 5503 5504 5505 5506 5507 5508 | chan event gorp readable } -returnCodes error -result {can not find channel named "gorp"} test chan-io-41.4 {Tcl_FileeventCmd: errors} -constraints fileevent -body { chan event gorp writable } -returnCodes error -result {can not find channel named "gorp"} test chan-io-41.5 {Tcl_FileeventCmd: errors} -constraints fileevent -body { chan event gorp who-knows } -returnCodes error -result {bad event name "who-knows": must be readable, writable, or exception} # # Test chan event on a file # set path(foo) [makeFile {} foo] set f [open $path(foo) w+] |
︙ | ︙ |
Changes to tests/io.test.
︙ | ︙ | |||
5793 5794 5795 5796 5797 5798 5799 | list [catch {fileevent gorp readable} msg] $msg } {1 {can not find channel named "gorp"}} test io-41.4 {Tcl_FileeventCmd: errors} {fileevent} { list [catch {fileevent gorp writable} msg] $msg } {1 {can not find channel named "gorp"}} test io-41.5 {Tcl_FileeventCmd: errors} {fileevent} { list [catch {fileevent gorp who-knows} msg] $msg | | | 5793 5794 5795 5796 5797 5798 5799 5800 5801 5802 5803 5804 5805 5806 5807 | list [catch {fileevent gorp readable} msg] $msg } {1 {can not find channel named "gorp"}} test io-41.4 {Tcl_FileeventCmd: errors} {fileevent} { list [catch {fileevent gorp writable} msg] $msg } {1 {can not find channel named "gorp"}} test io-41.5 {Tcl_FileeventCmd: errors} {fileevent} { list [catch {fileevent gorp who-knows} msg] $msg } {1 {bad event name "who-knows": must be readable, writable, or exception}} # # Test fileevent on a file # set path(foo) [makeFile {} foo] set f [open $path(foo) w+] |
︙ | ︙ |
Changes to tests/zlib.test.
︙ | ︙ | |||
836 837 838 839 840 841 842 | after cancel {set ::total timeout} after cancel {set ::total done} set ::total } -cleanup { close $srv rename bgerror {} } -returnCodes error \ | | | 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 | after cancel {set ::total timeout} after cancel {set ::total done} set ::total } -cleanup { close $srv rename bgerror {} } -returnCodes error \ -result {bad event name "xyzzy": must be readable, writable, or exception} test zlib-10.1 "bug #2818131 (mismatch read)" -constraints { zlib } -setup { proc bgerror {s} {set ::total [list error $s]} proc zlibRead {c} { set d [read $c] if {[eof $c]} { |
︙ | ︙ |
Changes to unix/tclEpollNotfy.c.
︙ | ︙ | |||
217 218 219 220 221 222 223 | int isNew) { struct epoll_event newEvent; struct PlatformEventData *newPedPtr; struct stat fdStat; newEvent.events = 0; | | > > > > > | > | | 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 | int isNew) { struct epoll_event newEvent; struct PlatformEventData *newPedPtr; struct stat fdStat; newEvent.events = 0; if (filePtr->mask & TCL_EXCEPTION) { newEvent.events |= EPOLLERR | EPOLLPRI; } if (filePtr->mask & TCL_READABLE) { newEvent.events |= EPOLLIN; } if (filePtr->mask & TCL_WRITABLE) { newEvent.events |= EPOLLOUT; } if (isNew) { newPedPtr = ckalloc(sizeof(*newPedPtr)); newPedPtr->filePtr = filePtr; newPedPtr->tsdPtr = tsdPtr; filePtr->pedPtr = newPedPtr; } newEvent.data.ptr = filePtr->pedPtr; /* * N.B. As discussed in Tcl_WaitForEvent(), epoll(7) does not sup- * port regular files (S_IFREG.) Therefore, filePtr is in these * cases simply added or deleted from the list of FileHandlers * associated with regular files belonging to tsdPtr. */ if (newEvent.events & EPOLLERR) { /* if exceptions are requested, ignore file type */ } else if (fstat(filePtr->fd, &fdStat) == -1) { Tcl_Panic("fstat: %s", strerror(errno)); } else if ((fdStat.st_mode & S_IFMT) == S_IFREG) { switch (op) { case EPOLL_CTL_ADD: if (isNew) { LIST_INSERT_HEAD(&tsdPtr->firstReadyFileHandlerPtr, filePtr, readyNode); } break; case EPOLL_CTL_DEL: LIST_REMOVE(filePtr, readyNode); break; } return; } if (epoll_ctl(tsdPtr->eventsFd, op, filePtr->fd, &newEvent) == -1) { Tcl_Panic("epoll_ctl: %s", strerror(errno)); } } /* *---------------------------------------------------------------------- * |
︙ | ︙ |