Tcl Source Code

Hex Artifact Content
Login

Artifact 67200c8d72f925a81baca6aa86fb18427386ae5eab0ba540b6b1819c6f1e21c3:

Attachment "tcl.patch" to ticket [010d8f3885] added by stevel 2025-02-25 08:55:27.
0000: 49 6e 64 65 78 3a 20 75 6e 69 78 2f 74 63 6c 45  Index: unix/tclE
0010: 70 6f 6c 6c 4e 6f 74 66 79 2e 63 0a 3d 3d 3d 3d  pollNotfy.c.====
0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d  ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d  ==============.-
0060: 2d 2d 20 75 6e 69 78 2f 74 63 6c 45 70 6f 6c 6c  -- unix/tclEpoll
0070: 4e 6f 74 66 79 2e 63 0a 2b 2b 2b 20 75 6e 69 78  Notfy.c.+++ unix
0080: 2f 74 63 6c 45 70 6f 6c 6c 4e 6f 74 66 79 2e 63  /tclEpollNotfy.c
0090: 0a 40 40 20 2d 32 32 31 2c 31 34 20 2b 32 32 31  .@@ -221,14 +221
00a0: 2c 31 33 20 40 40 0a 20 20 20 20 20 20 2a 20 61  ,13 @@.      * a
00b0: 64 64 65 64 20 6f 72 20 64 65 6c 65 74 65 64 20  dded or deleted 
00c0: 66 72 6f 6d 20 74 68 65 20 6c 69 73 74 20 6f 66  from the list of
00d0: 20 46 69 6c 65 48 61 6e 64 6c 65 72 73 20 61 73   FileHandlers as
00e0: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 72 65  sociated with re
00f0: 67 75 6c 61 72 0a 20 20 20 20 20 20 2a 20 66 69  gular.      * fi
0100: 6c 65 73 20 62 65 6c 6f 6e 67 69 6e 67 20 74 6f  les belonging to
0110: 20 74 73 64 50 74 72 2e 0a 20 20 20 20 20 20 2a   tsdPtr..      *
0120: 2f 0a 20 0a 20 20 20 20 20 69 66 20 28 54 63 6c  /. .     if (Tcl
0130: 4f 53 66 73 74 61 74 28 66 69 6c 65 50 74 72 2d  OSfstat(filePtr-
0140: 3e 66 64 2c 20 26 66 64 53 74 61 74 29 20 3d 3d  >fd, &fdStat) ==
0150: 20 2d 31 29 20 7b 0a 2d 09 54 63 6c 5f 50 61 6e   -1) {.-.Tcl_Pan
0160: 69 63 28 22 66 73 74 61 74 3a 20 25 73 22 2c 20  ic("fstat: %s", 
0170: 73 74 72 65 72 72 6f 72 28 65 72 72 6e 6f 29 29  strerror(errno))
0180: 3b 0a 2d 20 20 20 20 7d 0a 2d 0a 2d 20 20 20 69  ;.-    }.-.-   i
0190: 66 20 28 65 70 6f 6c 6c 5f 63 74 6c 28 74 73 64  f (epoll_ctl(tsd
01a0: 50 74 72 2d 3e 65 76 65 6e 74 73 46 64 2c 20 6f  Ptr->eventsFd, o
01b0: 70 2c 20 66 69 6c 65 50 74 72 2d 3e 66 64 2c 20  p, filePtr->fd, 
01c0: 26 6e 65 77 45 76 65 6e 74 29 20 3d 3d 20 2d 31  &newEvent) == -1
01d0: 29 20 7b 0a 2b 09 72 65 74 75 72 6e 3b 0a 2b 09  ) {.+.return;.+.
01e0: 4c 49 53 54 5f 52 45 4d 4f 56 45 28 66 69 6c 65  LIST_REMOVE(file
01f0: 50 74 72 2c 20 72 65 61 64 79 4e 6f 64 65 29 3b  Ptr, readyNode);
0200: 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20  .+    } else if 
0210: 28 65 70 6f 6c 6c 5f 63 74 6c 28 74 73 64 50 74  (epoll_ctl(tsdPt
0220: 72 2d 3e 65 76 65 6e 74 73 46 64 2c 20 6f 70 2c  r->eventsFd, op,
0230: 20 66 69 6c 65 50 74 72 2d 3e 66 64 2c 20 26 6e   filePtr->fd, &n
0240: 65 77 45 76 65 6e 74 29 20 3d 3d 20 2d 31 29 20  ewEvent) == -1) 
0250: 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68  {.        switch
0260: 20 28 65 72 72 6e 6f 29 20 7b 0a 20 09 20 20 20   (errno) {. .   
0270: 20 63 61 73 65 20 45 50 45 52 4d 3a 0a 20 09 09   case EPERM:. ..
0280: 73 77 69 74 63 68 20 28 6f 70 29 20 7b 0a 20 09  switch (op) {. .
0290: 09 63 61 73 65 20 45 50 4f 4c 4c 5f 43 54 4c 5f  .case EPOLL_CTL_
02a0: 41 44 44 3a 0a 20 09 09 20 20 20 20 69 66 20 28  ADD:. ..    if (
02b0: 69 73 4e 65 77 29 20 7b 0a 0a                    isNew) {..