Attachment "patch.txt" to
ticket [800716ffff]
added by
davygrvy
2003-09-05 04:38:00.
0000: 2a 2a 2a 20 67 65 6e 65 72 69 63 2f 74 63 6c 2e *** generic/tcl.
0010: 64 65 63 6c 73 09 32 35 20 41 75 67 20 32 30 30 decls.25 Aug 200
0020: 33 20 32 30 3a 30 36 3a 30 34 20 2d 30 30 30 30 3 20:06:04 -0000
0030: 09 31 2e 39 39 0a 2d 2d 2d 20 67 65 6e 65 72 69 .1.99.--- generi
0040: 63 2f 74 63 6c 2e 64 65 63 6c 73 09 34 20 53 65 c/tcl.decls.4 Se
0050: 70 20 32 30 30 33 20 32 31 3a 32 30 3a 32 34 20 p 2003 21:20:24
0060: 2d 30 30 30 30 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a -0000.**********
0070: 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 38 36 38 2c 31 *****.*** 1868,1
0080: 38 37 33 20 2a 2a 2a 2a 0a 2d 2d 2d 20 31 38 36 873 ****.--- 186
0090: 38 2c 31 38 38 32 20 2d 2d 2d 2d 0a 20 20 20 20 8,1882 ----.
00a0: 20 20 63 68 61 72 20 2a 20 54 63 6c 5f 57 69 6e char * Tcl_Win
00b0: 54 43 68 61 72 54 6f 55 74 66 28 43 4f 4e 53 54 TCharToUtf(CONST
00c0: 20 54 43 48 41 52 20 2a 73 74 72 2c 20 69 6e 74 TCHAR *str, int
00d0: 20 6c 65 6e 2c 20 54 63 6c 5f 44 53 74 72 69 6e len, Tcl_DStrin
00e0: 67 20 2a 64 73 50 74 72 29 0a 20 20 7d 0a 20 20 g *dsPtr). }.
00f0: 0a 2b 20 23 20 41 64 64 65 64 20 66 6f 72 20 38 .+ # Added for 8
0100: 2e 35 2c 20 6d 6f 76 65 64 20 66 72 6f 6d 20 70 .5, moved from p
0110: 72 69 76 61 74 65 20 73 70 61 63 65 2e 0a 2b 20 rivate space..+
0120: 0a 2b 20 64 65 63 6c 61 72 65 20 32 20 77 69 6e .+ declare 2 win
0130: 20 7b 0a 2b 20 20 20 20 20 76 6f 69 64 20 54 63 {.+ void Tc
0140: 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f l_WinConvertErro
0150: 72 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 r(unsigned long
0160: 65 72 72 43 6f 64 65 29 0a 2b 20 7d 0a 2b 20 64 errCode).+ }.+ d
0170: 65 63 6c 61 72 65 20 33 20 77 69 6e 20 7b 0a 2b eclare 3 win {.+
0180: 20 20 20 20 20 76 6f 69 64 20 54 63 6c 5f 57 69 void Tcl_Wi
0190: 6e 43 6f 6e 76 65 72 74 57 53 41 45 72 72 6f 72 nConvertWSAError
01a0: 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 65 (unsigned long e
01b0: 72 72 43 6f 64 65 29 0a 2b 20 7d 0a 2b 20 0a 20 rrCode).+ }.+ .
01c0: 20 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ###############
01d0: 23 23 23 0a 20 20 23 20 4d 61 63 20 64 65 63 6c ###. # Mac decl
01e0: 61 72 61 74 69 6f 6e 73 0a 20 20 0a 0a 2a 2a 2a arations. ..***
01f0: 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e generic/tclInt.
0200: 64 65 63 6c 73 09 32 36 20 4a 75 6e 20 32 30 30 decls.26 Jun 200
0210: 33 20 30 38 3a 34 33 3a 31 35 20 2d 30 30 30 30 3 08:43:15 -0000
0220: 09 31 2e 36 32 0a 2d 2d 2d 20 67 65 6e 65 72 69 .1.62.--- generi
0230: 63 2f 74 63 6c 49 6e 74 2e 64 65 63 6c 73 09 34 c/tclInt.decls.4
0240: 20 53 65 70 20 32 30 30 33 20 32 31 3a 32 30 3a Sep 2003 21:20:
0250: 33 31 20 2d 30 30 30 30 0a 2a 2a 2a 2a 2a 2a 2a 31 -0000.*******
0260: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 38 34 30 ********.*** 840
0270: 2c 38 35 30 20 2a 2a 2a 2a 0a 20 20 23 23 23 23 ,850 ****. ####
0280: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################
0290: 23 23 23 23 23 23 23 23 0a 20 20 23 20 57 69 6e ########. # Win
02a0: 64 6f 77 73 20 73 70 65 63 69 66 69 63 20 69 6e dows specific in
02b0: 74 65 72 6e 61 6c 73 0a 20 20 0a 20 20 64 65 63 ternals. . dec
02c0: 6c 61 72 65 20 30 20 77 69 6e 20 7b 0a 21 20 20 lare 0 win {.!
02d0: 20 20 20 76 6f 69 64 20 54 63 6c 57 69 6e 43 6f void TclWinCo
02e0: 6e 76 65 72 74 45 72 72 6f 72 28 44 57 4f 52 44 nvertError(DWORD
02f0: 20 65 72 72 43 6f 64 65 29 0a 20 20 7d 0a 20 20 errCode). }.
0300: 64 65 63 6c 61 72 65 20 31 20 77 69 6e 20 7b 0a declare 1 win {.
0310: 21 20 20 20 20 20 76 6f 69 64 20 54 63 6c 57 69 ! void TclWi
0320: 6e 43 6f 6e 76 65 72 74 57 53 41 45 72 72 6f 72 nConvertWSAError
0330: 28 44 57 4f 52 44 20 65 72 72 43 6f 64 65 29 0a (DWORD errCode).
0340: 20 20 7d 0a 20 20 64 65 63 6c 61 72 65 20 32 20 }. declare 2
0350: 77 69 6e 20 7b 0a 20 20 20 20 20 20 73 74 72 75 win {. stru
0360: 63 74 20 73 65 72 76 65 6e 74 20 2a 54 63 6c 57 ct servent *TclW
0370: 69 6e 47 65 74 53 65 72 76 42 79 4e 61 6d 65 28 inGetServByName(
0380: 43 4f 4e 53 54 20 63 68 61 72 20 2a 6e 6d 2c 0a CONST char *nm,.
0390: 2d 2d 2d 20 38 34 30 2c 38 35 32 20 2d 2d 2d 2d --- 840,852 ----
03a0: 0a 20 20 23 23 23 23 23 23 23 23 23 23 23 23 23 . #############
03b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a ###############.
03c0: 20 20 23 20 57 69 6e 64 6f 77 73 20 73 70 65 63 # Windows spec
03d0: 69 66 69 63 20 69 6e 74 65 72 6e 61 6c 73 0a 20 ific internals.
03e0: 20 0a 2b 20 23 20 4e 6f 77 20 70 75 62 6c 69 63 .+ # Now public
03f0: 2c 20 62 75 74 20 6e 65 65 64 20 74 6f 20 6c 65 , but need to le
0400: 61 76 65 20 69 74 20 68 65 72 65 2c 20 74 6f 6f ave it here, too
0410: 2e 0a 20 20 64 65 63 6c 61 72 65 20 30 20 77 69 .. declare 0 wi
0420: 6e 20 7b 0a 21 20 20 20 20 20 76 6f 69 64 20 54 n {.! void T
0430: 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 cl_WinConvertErr
0440: 6f 72 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 or(unsigned long
0450: 20 65 72 72 43 6f 64 65 29 0a 20 20 7d 0a 2b 20 errCode). }.+
0460: 23 20 4e 6f 77 20 70 75 62 6c 69 63 2c 20 62 75 # Now public, bu
0470: 74 20 6e 65 65 64 20 74 6f 20 6c 65 61 76 65 20 t need to leave
0480: 69 74 20 68 65 72 65 2c 20 74 6f 6f 2e 0a 20 20 it here, too..
0490: 64 65 63 6c 61 72 65 20 31 20 77 69 6e 20 7b 0a declare 1 win {.
04a0: 21 20 20 20 20 20 76 6f 69 64 20 54 63 6c 5f 57 ! void Tcl_W
04b0: 69 6e 43 6f 6e 76 65 72 74 57 53 41 45 72 72 6f inConvertWSAErro
04c0: 72 28 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 r(unsigned long
04d0: 65 72 72 43 6f 64 65 29 0a 20 20 7d 0a 20 20 64 errCode). }. d
04e0: 65 63 6c 61 72 65 20 32 20 77 69 6e 20 7b 0a 20 eclare 2 win {.
04f0: 20 20 20 20 20 73 74 72 75 63 74 20 73 65 72 76 struct serv
0500: 65 6e 74 20 2a 54 63 6c 57 69 6e 47 65 74 53 65 ent *TclWinGetSe
0510: 72 76 42 79 4e 61 6d 65 28 43 4f 4e 53 54 20 63 rvByName(CONST c
0520: 68 61 72 20 2a 6e 6d 2c 0a 0a 0a 2a 2a 2a 20 77 har *nm,...*** w
0530: 69 6e 2f 74 63 6c 57 69 6e 43 68 61 6e 2e 63 09 in/tclWinChan.c.
0540: 32 36 20 4a 61 6e 20 32 30 30 33 20 30 35 3a 35 26 Jan 2003 05:5
0550: 39 3a 33 38 20 2d 30 30 30 30 09 31 2e 33 30 0a 9:38 -0000.1.30.
0560: 2d 2d 2d 20 77 69 6e 2f 74 63 6c 57 69 6e 43 68 --- win/tclWinCh
0570: 61 6e 2e 63 09 34 20 53 65 70 20 32 30 30 33 20 an.c.4 Sep 2003
0580: 32 31 3a 32 30 3a 34 32 20 2d 30 30 30 30 0a 2a 21:20:42 -0000.*
0590: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a **************.*
05a0: 2a 2a 20 34 30 39 2c 34 31 35 20 2a 2a 2a 2a 0a ** 409,415 ****.
05b0: 20 20 09 09 26 26 20 28 47 65 74 53 74 64 48 61 ..&& (GetStdHa
05c0: 6e 64 6c 65 28 53 54 44 5f 4f 55 54 50 55 54 5f ndle(STD_OUTPUT_
05d0: 48 41 4e 44 4c 45 29 20 21 3d 20 66 69 6c 65 49 HANDLE) != fileI
05e0: 6e 66 6f 50 74 72 2d 3e 68 61 6e 64 6c 65 29 0a nfoPtr->handle).
05f0: 20 20 09 09 26 26 20 28 47 65 74 53 74 64 48 61 ..&& (GetStdHa
0600: 6e 64 6c 65 28 53 54 44 5f 45 52 52 4f 52 5f 48 ndle(STD_ERROR_H
0610: 41 4e 44 4c 45 29 20 21 3d 20 66 69 6c 65 49 6e ANDLE) != fileIn
0620: 66 6f 50 74 72 2d 3e 68 61 6e 64 6c 65 29 29 29 foPtr->handle)))
0630: 20 7b 0a 20 20 09 69 66 20 28 43 6c 6f 73 65 48 {. .if (CloseH
0640: 61 6e 64 6c 65 28 66 69 6c 65 49 6e 66 6f 50 74 andle(fileInfoPt
0650: 72 2d 3e 68 61 6e 64 6c 65 29 20 3d 3d 20 46 41 r->handle) == FA
0660: 4c 53 45 29 20 7b 0a 21 20 09 20 20 20 20 54 63 LSE) {.! . Tc
0670: 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 lWinConvertError
0680: 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 (GetLastError())
0690: 3b 0a 20 20 09 20 20 20 20 65 72 72 6f 72 43 6f ;. . errorCo
06a0: 64 65 20 3d 20 65 72 72 6e 6f 3b 0a 20 20 09 7d de = errno;. .}
06b0: 0a 20 20 20 20 20 20 7d 0a 2d 2d 2d 20 34 30 39 . }.--- 409
06c0: 2c 34 31 35 20 2d 2d 2d 2d 0a 20 20 09 09 26 26 ,415 ----. ..&&
06d0: 20 28 47 65 74 53 74 64 48 61 6e 64 6c 65 28 53 (GetStdHandle(S
06e0: 54 44 5f 4f 55 54 50 55 54 5f 48 41 4e 44 4c 45 TD_OUTPUT_HANDLE
06f0: 29 20 21 3d 20 66 69 6c 65 49 6e 66 6f 50 74 72 ) != fileInfoPtr
0700: 2d 3e 68 61 6e 64 6c 65 29 0a 20 20 09 09 26 26 ->handle). ..&&
0710: 20 28 47 65 74 53 74 64 48 61 6e 64 6c 65 28 53 (GetStdHandle(S
0720: 54 44 5f 45 52 52 4f 52 5f 48 41 4e 44 4c 45 29 TD_ERROR_HANDLE)
0730: 20 21 3d 20 66 69 6c 65 49 6e 66 6f 50 74 72 2d != fileInfoPtr-
0740: 3e 68 61 6e 64 6c 65 29 29 29 20 7b 0a 20 20 09 >handle))) {. .
0750: 69 66 20 28 43 6c 6f 73 65 48 61 6e 64 6c 65 28 if (CloseHandle(
0760: 66 69 6c 65 49 6e 66 6f 50 74 72 2d 3e 68 61 6e fileInfoPtr->han
0770: 64 6c 65 29 20 3d 3d 20 46 41 4c 53 45 29 20 7b dle) == FALSE) {
0780: 0a 21 20 09 20 20 20 20 54 63 6c 5f 57 69 6e 43 .! . Tcl_WinC
0790: 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c onvertError(GetL
07a0: 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 astError());. .
07b0: 20 20 20 20 65 72 72 6f 72 43 6f 64 65 20 3d 20 errorCode =
07c0: 65 72 72 6e 6f 3b 0a 20 20 09 7d 0a 20 20 20 20 errno;. .}.
07d0: 20 20 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a }.************
07e0: 2a 2a 2a 0a 2a 2a 2a 20 34 36 36 2c 34 37 32 20 ***.*** 466,472
07f0: 2a 2a 2a 2a 0a 20 20 20 20 20 20 69 66 20 28 6f ****. if (o
0800: 6c 64 50 6f 73 20 3d 3d 20 49 4e 56 41 4c 49 44 ldPos == INVALID
0810: 5f 53 45 54 5f 46 49 4c 45 5f 50 4f 49 4e 54 45 _SET_FILE_POINTE
0820: 52 29 20 7b 0a 20 20 09 44 57 4f 52 44 20 77 69 R) {. .DWORD wi
0830: 6e 45 72 72 6f 72 20 3d 20 47 65 74 4c 61 73 74 nError = GetLast
0840: 45 72 72 6f 72 28 29 3b 0a 20 20 09 69 66 20 28 Error();. .if (
0850: 77 69 6e 45 72 72 6f 72 20 21 3d 20 4e 4f 5f 45 winError != NO_E
0860: 52 52 4f 52 29 20 7b 0a 21 20 09 20 20 20 20 54 RROR) {.! . T
0870: 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f clWinConvertErro
0880: 72 28 77 69 6e 45 72 72 6f 72 29 3b 0a 20 20 09 r(winError);. .
0890: 20 20 20 20 2a 65 72 72 6f 72 43 6f 64 65 50 74 *errorCodePt
08a0: 72 20 3d 20 65 72 72 6e 6f 3b 0a 20 20 09 20 20 r = errno;. .
08b0: 20 20 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 09 return -1;. .
08c0: 7d 0a 2d 2d 2d 20 34 36 36 2c 34 37 32 20 2d 2d }.--- 466,472 --
08d0: 2d 2d 0a 20 20 20 20 20 20 69 66 20 28 6f 6c 64 --. if (old
08e0: 50 6f 73 20 3d 3d 20 49 4e 56 41 4c 49 44 5f 53 Pos == INVALID_S
08f0: 45 54 5f 46 49 4c 45 5f 50 4f 49 4e 54 45 52 29 ET_FILE_POINTER)
0900: 20 7b 0a 20 20 09 44 57 4f 52 44 20 77 69 6e 45 {. .DWORD winE
0910: 72 72 6f 72 20 3d 20 47 65 74 4c 61 73 74 45 72 rror = GetLastEr
0920: 72 6f 72 28 29 3b 0a 20 20 09 69 66 20 28 77 69 ror();. .if (wi
0930: 6e 45 72 72 6f 72 20 21 3d 20 4e 4f 5f 45 52 52 nError != NO_ERR
0940: 4f 52 29 20 7b 0a 21 20 09 20 20 20 20 54 63 6c OR) {.! . Tcl
0950: 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 _WinConvertError
0960: 28 77 69 6e 45 72 72 6f 72 29 3b 0a 20 20 09 20 (winError);. .
0970: 20 20 20 2a 65 72 72 6f 72 43 6f 64 65 50 74 72 *errorCodePtr
0980: 20 3d 20 65 72 72 6e 6f 3b 0a 20 20 09 20 20 20 = errno;. .
0990: 20 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 09 7d return -1;. .}
09a0: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
09b0: 0a 2a 2a 2a 20 34 37 38 2c 34 38 34 20 2a 2a 2a .*** 478,484 ***
09c0: 2a 0a 20 20 20 20 20 20 69 66 20 28 6e 65 77 50 *. if (newP
09d0: 6f 73 20 3d 3d 20 49 4e 56 41 4c 49 44 5f 53 45 os == INVALID_SE
09e0: 54 5f 46 49 4c 45 5f 50 4f 49 4e 54 45 52 29 20 T_FILE_POINTER)
09f0: 7b 0a 20 20 09 44 57 4f 52 44 20 77 69 6e 45 72 {. .DWORD winEr
0a00: 72 6f 72 20 3d 20 47 65 74 4c 61 73 74 45 72 72 ror = GetLastErr
0a10: 6f 72 28 29 3b 0a 20 20 09 69 66 20 28 77 69 6e or();. .if (win
0a20: 45 72 72 6f 72 20 21 3d 20 4e 4f 5f 45 52 52 4f Error != NO_ERRO
0a30: 52 29 20 7b 0a 21 20 09 20 20 20 20 54 63 6c 57 R) {.! . TclW
0a40: 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 77 inConvertError(w
0a50: 69 6e 45 72 72 6f 72 29 3b 0a 20 20 09 20 20 20 inError);. .
0a60: 20 2a 65 72 72 6f 72 43 6f 64 65 50 74 72 20 3d *errorCodePtr =
0a70: 20 65 72 72 6e 6f 3b 0a 20 20 09 20 20 20 20 72 errno;. . r
0a80: 65 74 75 72 6e 20 2d 31 3b 0a 20 20 09 7d 0a 2d eturn -1;. .}.-
0a90: 2d 2d 20 34 37 38 2c 34 38 34 20 2d 2d 2d 2d 0a -- 478,484 ----.
0aa0: 20 20 20 20 20 20 69 66 20 28 6e 65 77 50 6f 73 if (newPos
0ab0: 20 3d 3d 20 49 4e 56 41 4c 49 44 5f 53 45 54 5f == INVALID_SET_
0ac0: 46 49 4c 45 5f 50 4f 49 4e 54 45 52 29 20 7b 0a FILE_POINTER) {.
0ad0: 20 20 09 44 57 4f 52 44 20 77 69 6e 45 72 72 6f .DWORD winErro
0ae0: 72 20 3d 20 47 65 74 4c 61 73 74 45 72 72 6f 72 r = GetLastError
0af0: 28 29 3b 0a 20 20 09 69 66 20 28 77 69 6e 45 72 ();. .if (winEr
0b00: 72 6f 72 20 21 3d 20 4e 4f 5f 45 52 52 4f 52 29 ror != NO_ERROR)
0b10: 20 7b 0a 21 20 09 20 20 20 20 54 63 6c 5f 57 69 {.! . Tcl_Wi
0b20: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 77 69 nConvertError(wi
0b30: 6e 45 72 72 6f 72 29 3b 0a 20 20 09 20 20 20 20 nError);. .
0b40: 2a 65 72 72 6f 72 43 6f 64 65 50 74 72 20 3d 20 *errorCodePtr =
0b50: 65 72 72 6e 6f 3b 0a 20 20 09 20 20 20 20 72 65 errno;. . re
0b60: 74 75 72 6e 20 2d 31 3b 0a 20 20 09 7d 0a 2a 2a turn -1;. .}.**
0b70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a *************.**
0b80: 2a 20 35 33 39 2c 35 34 35 20 2a 2a 2a 2a 0a 20 * 539,545 ****.
0b90: 20 20 20 20 20 69 66 20 28 6e 65 77 50 6f 73 20 if (newPos
0ba0: 3d 3d 20 49 4e 56 41 4c 49 44 5f 53 45 54 5f 46 == INVALID_SET_F
0bb0: 49 4c 45 5f 50 4f 49 4e 54 45 52 29 20 7b 0a 20 ILE_POINTER) {.
0bc0: 20 09 44 57 4f 52 44 20 77 69 6e 45 72 72 6f 72 .DWORD winError
0bd0: 20 3d 20 47 65 74 4c 61 73 74 45 72 72 6f 72 28 = GetLastError(
0be0: 29 3b 0a 20 20 09 69 66 20 28 77 69 6e 45 72 72 );. .if (winErr
0bf0: 6f 72 20 21 3d 20 4e 4f 5f 45 52 52 4f 52 29 20 or != NO_ERROR)
0c00: 7b 0a 21 20 09 20 20 20 20 54 63 6c 57 69 6e 43 {.! . TclWinC
0c10: 6f 6e 76 65 72 74 45 72 72 6f 72 28 77 69 6e 45 onvertError(winE
0c20: 72 72 6f 72 29 3b 0a 20 20 09 20 20 20 20 2a 65 rror);. . *e
0c30: 72 72 6f 72 43 6f 64 65 50 74 72 20 3d 20 65 72 rrorCodePtr = er
0c40: 72 6e 6f 3b 0a 20 20 09 20 20 20 20 72 65 74 75 rno;. . retu
0c50: 72 6e 20 2d 31 3b 0a 20 20 09 7d 0a 2d 2d 2d 20 rn -1;. .}.---
0c60: 35 33 39 2c 35 34 35 20 2d 2d 2d 2d 0a 20 20 20 539,545 ----.
0c70: 20 20 20 69 66 20 28 6e 65 77 50 6f 73 20 3d 3d if (newPos ==
0c80: 20 49 4e 56 41 4c 49 44 5f 53 45 54 5f 46 49 4c INVALID_SET_FIL
0c90: 45 5f 50 4f 49 4e 54 45 52 29 20 7b 0a 20 20 09 E_POINTER) {. .
0ca0: 44 57 4f 52 44 20 77 69 6e 45 72 72 6f 72 20 3d DWORD winError =
0cb0: 20 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 3b GetLastError();
0cc0: 0a 20 20 09 69 66 20 28 77 69 6e 45 72 72 6f 72 . .if (winError
0cd0: 20 21 3d 20 4e 4f 5f 45 52 52 4f 52 29 20 7b 0a != NO_ERROR) {.
0ce0: 21 20 09 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f ! . Tcl_WinCo
0cf0: 6e 76 65 72 74 45 72 72 6f 72 28 77 69 6e 45 72 nvertError(winEr
0d00: 72 6f 72 29 3b 0a 20 20 09 20 20 20 20 2a 65 72 ror);. . *er
0d10: 72 6f 72 43 6f 64 65 50 74 72 20 3d 20 65 72 72 rorCodePtr = err
0d20: 6e 6f 3b 0a 20 20 09 20 20 20 20 72 65 74 75 72 no;. . retur
0d30: 6e 20 2d 31 3b 0a 20 20 09 7d 0a 2a 2a 2a 2a 2a n -1;. .}.*****
0d40: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 35 **********.*** 5
0d50: 39 32 2c 35 39 38 20 2a 2a 2a 2a 0a 20 20 09 72 92,598 ****. .r
0d60: 65 74 75 72 6e 20 62 79 74 65 73 52 65 61 64 3b eturn bytesRead;
0d70: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 0a . }. .
0d80: 21 20 20 20 20 20 54 63 6c 57 69 6e 43 6f 6e 76 ! TclWinConv
0d90: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
0da0: 45 72 72 6f 72 28 29 29 3b 0a 20 20 20 20 20 20 Error());.
0db0: 2a 65 72 72 6f 72 43 6f 64 65 20 3d 20 65 72 72 *errorCode = err
0dc0: 6e 6f 3b 0a 20 20 20 20 20 20 69 66 20 28 65 72 no;. if (er
0dd0: 72 6e 6f 20 3d 3d 20 45 50 49 50 45 29 20 7b 0a rno == EPIPE) {.
0de0: 20 20 09 72 65 74 75 72 6e 20 30 3b 0a 2d 2d 2d .return 0;.---
0df0: 20 35 39 32 2c 35 39 38 20 2d 2d 2d 2d 0a 20 20 592,598 ----.
0e00: 09 72 65 74 75 72 6e 20 62 79 74 65 73 52 65 61 .return bytesRea
0e10: 64 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 d;. }.
0e20: 20 0a 21 20 20 20 20 20 54 63 6c 5f 57 69 6e 43 .! Tcl_WinC
0e30: 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c onvertError(GetL
0e40: 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 20 astError());.
0e50: 20 20 20 2a 65 72 72 6f 72 43 6f 64 65 20 3d 20 *errorCode =
0e60: 65 72 72 6e 6f 3b 0a 20 20 20 20 20 20 69 66 20 errno;. if
0e70: 28 65 72 72 6e 6f 20 3d 3d 20 45 50 49 50 45 29 (errno == EPIPE)
0e80: 20 7b 0a 20 20 09 72 65 74 75 72 6e 20 30 3b 0a {. .return 0;.
0e90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a ***************.
0ea0: 2a 2a 2a 20 36 34 31 2c 36 34 37 20 2a 2a 2a 2a *** 641,647 ****
0eb0: 0a 20 20 0a 20 20 20 20 20 20 69 66 20 28 57 72 . . if (Wr
0ec0: 69 74 65 46 69 6c 65 28 69 6e 66 6f 50 74 72 2d iteFile(infoPtr-
0ed0: 3e 68 61 6e 64 6c 65 2c 20 28 4c 50 56 4f 49 44 >handle, (LPVOID
0ee0: 29 20 62 75 66 2c 20 28 44 57 4f 52 44 29 20 74 ) buf, (DWORD) t
0ef0: 6f 57 72 69 74 65 2c 20 26 62 79 74 65 73 57 72 oWrite, &bytesWr
0f00: 69 74 74 65 6e 2c 0a 20 20 20 20 20 20 20 20 20 itten,.
0f10: 20 20 20 20 20 28 4c 50 4f 56 45 52 4c 41 50 50 (LPOVERLAPP
0f20: 45 44 29 20 4e 55 4c 4c 29 20 3d 3d 20 46 41 4c ED) NULL) == FAL
0f30: 53 45 29 20 7b 0a 21 20 20 20 20 20 20 20 20 20 SE) {.!
0f40: 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 TclWinConvertErr
0f50: 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 or(GetLastError(
0f60: 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 2a 65 ));. *e
0f70: 72 72 6f 72 43 6f 64 65 20 3d 20 65 72 72 6e 6f rrorCode = errno
0f80: 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 ;. retu
0f90: 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 7d 0a 2d rn -1;. }.-
0fa0: 2d 2d 20 36 34 31 2c 36 34 37 20 2d 2d 2d 2d 0a -- 641,647 ----.
0fb0: 20 20 0a 20 20 20 20 20 20 69 66 20 28 57 72 69 . if (Wri
0fc0: 74 65 46 69 6c 65 28 69 6e 66 6f 50 74 72 2d 3e teFile(infoPtr->
0fd0: 68 61 6e 64 6c 65 2c 20 28 4c 50 56 4f 49 44 29 handle, (LPVOID)
0fe0: 20 62 75 66 2c 20 28 44 57 4f 52 44 29 20 74 6f buf, (DWORD) to
0ff0: 57 72 69 74 65 2c 20 26 62 79 74 65 73 57 72 69 Write, &bytesWri
1000: 74 74 65 6e 2c 0a 20 20 20 20 20 20 20 20 20 20 tten,.
1010: 20 20 20 20 28 4c 50 4f 56 45 52 4c 41 50 50 45 (LPOVERLAPPE
1020: 44 29 20 4e 55 4c 4c 29 20 3d 3d 20 46 41 4c 53 D) NULL) == FALS
1030: 45 29 20 7b 0a 21 20 20 20 20 20 20 20 20 20 54 E) {.! T
1040: 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 cl_WinConvertErr
1050: 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 or(GetLastError(
1060: 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 2a 65 ));. *e
1070: 72 72 6f 72 43 6f 64 65 20 3d 20 65 72 72 6e 6f rrorCode = errno
1080: 3b 0a 20 20 20 20 20 20 20 20 20 20 72 65 74 75 ;. retu
1090: 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 7d 0a 2a rn -1;. }.*
10a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a **************.*
10b0: 2a 2a 20 38 34 34 2c 38 35 30 20 2a 2a 2a 2a 0a ** 844,850 ****.
10c0: 20 20 09 69 66 20 28 28 65 72 72 20 26 20 30 78 .if ((err & 0x
10d0: 66 66 66 66 4c 29 20 3d 3d 20 45 52 52 4f 52 5f ffffL) == ERROR_
10e0: 4f 50 45 4e 5f 46 41 49 4c 45 44 29 20 7b 0a 20 OPEN_FAILED) {.
10f0: 20 09 20 20 20 20 65 72 72 20 3d 20 28 6d 6f 64 . err = (mod
1100: 65 20 26 20 4f 5f 43 52 45 41 54 29 20 3f 20 45 e & O_CREAT) ? E
1110: 52 52 4f 52 5f 46 49 4c 45 5f 45 58 49 53 54 53 RROR_FILE_EXISTS
1120: 20 3a 20 45 52 52 4f 52 5f 46 49 4c 45 5f 4e 4f : ERROR_FILE_NO
1130: 54 5f 46 4f 55 4e 44 3b 0a 20 20 09 7d 0a 21 20 T_FOUND;. .}.!
1140: 20 20 20 20 20 20 20 20 54 63 6c 57 69 6e 43 6f TclWinCo
1150: 6e 76 65 72 74 45 72 72 6f 72 28 65 72 72 29 3b nvertError(err);
1160: 0a 20 20 09 69 66 20 28 69 6e 74 65 72 70 20 21 . .if (interp !
1170: 3d 20 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 = (Tcl_Interp *)
1180: 20 4e 55 4c 4c 29 20 7b 0a 20 20 20 20 20 20 20 NULL) {.
1190: 20 20 20 20 20 20 20 54 63 6c 5f 41 70 70 65 6e Tcl_Appen
11a0: 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 dResult(interp,
11b0: 22 63 6f 75 6c 64 6e 27 74 20 6f 70 65 6e 20 5c "couldn't open \
11c0: 22 22 2c 20 0a 20 20 09 09 09 20 20 20 20 20 54 "", . ... T
11d0: 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 70 61 74 cl_GetString(pat
11e0: 68 50 74 72 29 2c 20 22 5c 22 3a 20 22 2c 0a 2d hPtr), "\": ",.-
11f0: 2d 2d 20 38 34 34 2c 38 35 30 20 2d 2d 2d 2d 0a -- 844,850 ----.
1200: 20 20 09 69 66 20 28 28 65 72 72 20 26 20 30 78 .if ((err & 0x
1210: 66 66 66 66 4c 29 20 3d 3d 20 45 52 52 4f 52 5f ffffL) == ERROR_
1220: 4f 50 45 4e 5f 46 41 49 4c 45 44 29 20 7b 0a 20 OPEN_FAILED) {.
1230: 20 09 20 20 20 20 65 72 72 20 3d 20 28 6d 6f 64 . err = (mod
1240: 65 20 26 20 4f 5f 43 52 45 41 54 29 20 3f 20 45 e & O_CREAT) ? E
1250: 52 52 4f 52 5f 46 49 4c 45 5f 45 58 49 53 54 53 RROR_FILE_EXISTS
1260: 20 3a 20 45 52 52 4f 52 5f 46 49 4c 45 5f 4e 4f : ERROR_FILE_NO
1270: 54 5f 46 4f 55 4e 44 3b 0a 20 20 09 7d 0a 21 20 T_FOUND;. .}.!
1280: 20 20 20 20 20 20 20 20 54 63 6c 5f 57 69 6e 43 Tcl_WinC
1290: 6f 6e 76 65 72 74 45 72 72 6f 72 28 65 72 72 29 onvertError(err)
12a0: 3b 0a 20 20 09 69 66 20 28 69 6e 74 65 72 70 20 ;. .if (interp
12b0: 21 3d 20 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a != (Tcl_Interp *
12c0: 29 20 4e 55 4c 4c 29 20 7b 0a 20 20 20 20 20 20 ) NULL) {.
12d0: 20 20 20 20 20 20 20 20 54 63 6c 5f 41 70 70 65 Tcl_Appe
12e0: 6e 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c ndResult(interp,
12f0: 20 22 63 6f 75 6c 64 6e 27 74 20 6f 70 65 6e 20 "couldn't open
1300: 5c 22 22 2c 20 0a 20 20 09 09 09 20 20 20 20 20 \"", . ...
1310: 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 70 61 Tcl_GetString(pa
1320: 74 68 50 74 72 29 2c 20 22 5c 22 3a 20 22 2c 0a thPtr), "\": ",.
1330: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a ***************.
1340: 2a 2a 2a 20 38 38 33 2c 38 38 39 20 2a 2a 2a 2a *** 883,889 ****
1350: 0a 20 20 09 20 2a 2f 0a 20 20 09 68 61 6e 64 6c . . */. .handl
1360: 65 20 3d 20 54 63 6c 57 69 6e 53 65 72 69 61 6c e = TclWinSerial
1370: 52 65 6f 70 65 6e 28 68 61 6e 64 6c 65 2c 20 6e Reopen(handle, n
1380: 61 74 69 76 65 4e 61 6d 65 2c 20 61 63 63 65 73 ativeName, acces
1390: 73 4d 6f 64 65 29 3b 0a 20 20 09 69 66 20 28 68 sMode);. .if (h
13a0: 61 6e 64 6c 65 20 3d 3d 20 49 4e 56 41 4c 49 44 andle == INVALID
13b0: 5f 48 41 4e 44 4c 45 5f 56 41 4c 55 45 29 20 7b _HANDLE_VALUE) {
13c0: 0a 21 20 09 20 20 20 20 54 63 6c 57 69 6e 43 6f .! . TclWinCo
13d0: 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 nvertError(GetLa
13e0: 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 stError());. .
13f0: 20 20 20 69 66 20 28 69 6e 74 65 72 70 20 21 3d if (interp !=
1400: 20 28 54 63 6c 5f 49 6e 74 65 72 70 20 2a 29 20 (Tcl_Interp *)
1410: 4e 55 4c 4c 29 20 7b 0a 20 20 09 09 54 63 6c 5f NULL) {. ..Tcl_
1420: 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e 74 AppendResult(int
1430: 65 72 70 2c 20 22 63 6f 75 6c 64 6e 27 74 20 72 erp, "couldn't r
1440: 65 6f 70 65 6e 20 73 65 72 69 61 6c 20 5c 22 22 eopen serial \""
1450: 2c 0a 20 20 09 09 09 54 63 6c 5f 47 65 74 53 74 ,. ...Tcl_GetSt
1460: 72 69 6e 67 28 70 61 74 68 50 74 72 29 2c 20 22 ring(pathPtr), "
1470: 5c 22 3a 20 22 2c 0a 2d 2d 2d 20 38 38 33 2c 38 \": ",.--- 883,8
1480: 38 39 20 2d 2d 2d 2d 0a 20 20 09 20 2a 2f 0a 20 89 ----. . */.
1490: 20 09 68 61 6e 64 6c 65 20 3d 20 54 63 6c 57 69 .handle = TclWi
14a0: 6e 53 65 72 69 61 6c 52 65 6f 70 65 6e 28 68 61 nSerialReopen(ha
14b0: 6e 64 6c 65 2c 20 6e 61 74 69 76 65 4e 61 6d 65 ndle, nativeName
14c0: 2c 20 61 63 63 65 73 73 4d 6f 64 65 29 3b 0a 20 , accessMode);.
14d0: 20 09 69 66 20 28 68 61 6e 64 6c 65 20 3d 3d 20 .if (handle ==
14e0: 49 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 5f 56 INVALID_HANDLE_V
14f0: 41 4c 55 45 29 20 7b 0a 21 20 09 20 20 20 20 54 ALUE) {.! . T
1500: 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 cl_WinConvertErr
1510: 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 or(GetLastError(
1520: 29 29 3b 0a 20 20 09 20 20 20 20 69 66 20 28 69 ));. . if (i
1530: 6e 74 65 72 70 20 21 3d 20 28 54 63 6c 5f 49 6e nterp != (Tcl_In
1540: 74 65 72 70 20 2a 29 20 4e 55 4c 4c 29 20 7b 0a terp *) NULL) {.
1550: 20 20 09 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 ..Tcl_AppendRe
1560: 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 6f sult(interp, "co
1570: 75 6c 64 6e 27 74 20 72 65 6f 70 65 6e 20 73 65 uldn't reopen se
1580: 72 69 61 6c 20 5c 22 22 2c 0a 20 20 09 09 09 54 rial \"",. ...T
1590: 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 70 61 74 cl_GetString(pat
15a0: 68 50 74 72 29 2c 20 22 5c 22 3a 20 22 2c 0a 0a hPtr), "\": ",..
15b0: 2a 2a 2a 20 77 69 6e 2f 74 63 6c 57 69 6e 43 6f *** win/tclWinCo
15c0: 6e 73 6f 6c 65 2e 63 09 32 36 20 4e 6f 76 20 32 nsole.c.26 Nov 2
15d0: 30 30 32 20 32 32 3a 34 31 3a 35 38 20 2d 30 30 002 22:41:58 -00
15e0: 30 30 09 31 2e 31 31 0a 2d 2d 2d 20 77 69 6e 2f 00.1.11.--- win/
15f0: 74 63 6c 57 69 6e 43 6f 6e 73 6f 6c 65 2e 63 09 tclWinConsole.c.
1600: 34 20 53 65 70 20 32 30 30 33 20 32 31 3a 32 30 4 Sep 2003 21:20
1610: 3a 34 35 20 2d 30 30 30 30 0a 2a 2a 2a 2a 2a 2a :45 -0000.******
1620: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 35 39 *********.*** 59
1630: 36 2c 36 30 32 20 2a 2a 2a 2a 0a 20 20 09 09 26 6,602 ****. ..&
1640: 26 20 28 47 65 74 53 74 64 48 61 6e 64 6c 65 28 & (GetStdHandle(
1650: 53 54 44 5f 4f 55 54 50 55 54 5f 48 41 4e 44 4c STD_OUTPUT_HANDL
1660: 45 29 20 21 3d 20 63 6f 6e 73 6f 6c 65 50 74 72 E) != consolePtr
1670: 2d 3e 68 61 6e 64 6c 65 29 0a 20 20 09 09 26 26 ->handle). ..&&
1680: 20 28 47 65 74 53 74 64 48 61 6e 64 6c 65 28 53 (GetStdHandle(S
1690: 54 44 5f 45 52 52 4f 52 5f 48 41 4e 44 4c 45 29 TD_ERROR_HANDLE)
16a0: 20 21 3d 20 63 6f 6e 73 6f 6c 65 50 74 72 2d 3e != consolePtr->
16b0: 68 61 6e 64 6c 65 29 29 29 20 7b 0a 20 20 09 69 handle))) {. .i
16c0: 66 20 28 43 6c 6f 73 65 48 61 6e 64 6c 65 28 63 f (CloseHandle(c
16d0: 6f 6e 73 6f 6c 65 50 74 72 2d 3e 68 61 6e 64 6c onsolePtr->handl
16e0: 65 29 20 3d 3d 20 46 41 4c 53 45 29 20 7b 0a 21 e) == FALSE) {.!
16f0: 20 09 20 20 20 20 54 63 6c 57 69 6e 43 6f 6e 76 . TclWinConv
1700: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
1710: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 20 20 Error());. .
1720: 20 65 72 72 6f 72 43 6f 64 65 20 3d 20 65 72 72 errorCode = err
1730: 6e 6f 3b 0a 20 20 09 7d 0a 20 20 20 20 20 20 7d no;. .}. }
1740: 0a 2d 2d 2d 20 35 39 36 2c 36 30 32 20 2d 2d 2d .--- 596,602 ---
1750: 2d 0a 20 20 09 09 26 26 20 28 47 65 74 53 74 64 -. ..&& (GetStd
1760: 48 61 6e 64 6c 65 28 53 54 44 5f 4f 55 54 50 55 Handle(STD_OUTPU
1770: 54 5f 48 41 4e 44 4c 45 29 20 21 3d 20 63 6f 6e T_HANDLE) != con
1780: 73 6f 6c 65 50 74 72 2d 3e 68 61 6e 64 6c 65 29 solePtr->handle)
1790: 0a 20 20 09 09 26 26 20 28 47 65 74 53 74 64 48 . ..&& (GetStdH
17a0: 61 6e 64 6c 65 28 53 54 44 5f 45 52 52 4f 52 5f andle(STD_ERROR_
17b0: 48 41 4e 44 4c 45 29 20 21 3d 20 63 6f 6e 73 6f HANDLE) != conso
17c0: 6c 65 50 74 72 2d 3e 68 61 6e 64 6c 65 29 29 29 lePtr->handle)))
17d0: 20 7b 0a 20 20 09 69 66 20 28 43 6c 6f 73 65 48 {. .if (CloseH
17e0: 61 6e 64 6c 65 28 63 6f 6e 73 6f 6c 65 50 74 72 andle(consolePtr
17f0: 2d 3e 68 61 6e 64 6c 65 29 20 3d 3d 20 46 41 4c ->handle) == FAL
1800: 53 45 29 20 7b 0a 21 20 09 20 20 20 20 54 63 6c SE) {.! . Tcl
1810: 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 _WinConvertError
1820: 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 (GetLastError())
1830: 3b 0a 20 20 09 20 20 20 20 65 72 72 6f 72 43 6f ;. . errorCo
1840: 64 65 20 3d 20 65 72 72 6e 6f 3b 0a 20 20 09 7d de = errno;. .}
1850: 0a 20 20 20 20 20 20 7d 0a 2a 2a 2a 2a 2a 2a 2a . }.*******
1860: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 37 35 35 ********.*** 755
1870: 2c 37 36 31 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 ,761 ****.
1880: 20 2a 2f 0a 20 20 0a 20 20 20 20 20 20 69 66 20 */. . if
1890: 28 69 6e 66 6f 50 74 72 2d 3e 77 72 69 74 65 45 (infoPtr->writeE
18a0: 72 72 6f 72 29 20 7b 0a 21 20 09 54 63 6c 57 69 rror) {.! .TclWi
18b0: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 69 6e nConvertError(in
18c0: 66 6f 50 74 72 2d 3e 77 72 69 74 65 45 72 72 6f foPtr->writeErro
18d0: 72 29 3b 0a 20 20 09 69 6e 66 6f 50 74 72 2d 3e r);. .infoPtr->
18e0: 77 72 69 74 65 45 72 72 6f 72 20 3d 20 30 3b 0a writeError = 0;.
18f0: 20 20 09 67 6f 74 6f 20 65 72 72 6f 72 3b 0a 20 .goto error;.
1900: 20 20 20 20 20 7d 0a 2d 2d 2d 20 37 35 35 2c 37 }.--- 755,7
1910: 36 31 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 2a 61 ----. *
1920: 2f 0a 20 20 0a 20 20 20 20 20 20 69 66 20 28 69 /. . if (i
1930: 6e 66 6f 50 74 72 2d 3e 77 72 69 74 65 45 72 72 nfoPtr->writeErr
1940: 6f 72 29 20 7b 0a 21 20 09 54 63 6c 5f 57 69 6e or) {.! .Tcl_Win
1950: 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 69 6e 66 ConvertError(inf
1960: 6f 50 74 72 2d 3e 77 72 69 74 65 45 72 72 6f 72 oPtr->writeError
1970: 29 3b 0a 20 20 09 69 6e 66 6f 50 74 72 2d 3e 77 );. .infoPtr->w
1980: 72 69 74 65 45 72 72 6f 72 20 3d 20 30 3b 0a 20 riteError = 0;.
1990: 20 09 67 6f 74 6f 20 65 72 72 6f 72 3b 0a 20 20 .goto error;.
19a0: 20 20 20 20 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a }.**********
19b0: 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 37 39 30 2c 37 39 *****.*** 790,79
19c0: 36 20 2a 2a 2a 2a 0a 20 20 0a 20 20 09 69 66 20 6 ****. . .if
19d0: 28 57 72 69 74 65 46 69 6c 65 28 69 6e 66 6f 50 (WriteFile(infoP
19e0: 74 72 2d 3e 68 61 6e 64 6c 65 2c 20 28 4c 50 56 tr->handle, (LPV
19f0: 4f 49 44 29 20 62 75 66 2c 20 28 44 57 4f 52 44 OID) buf, (DWORD
1a00: 29 20 74 6f 57 72 69 74 65 2c 0a 20 20 09 09 26 ) toWrite,. ..&
1a10: 62 79 74 65 73 57 72 69 74 74 65 6e 2c 20 28 4c bytesWritten, (L
1a20: 50 4f 56 45 52 4c 41 50 50 45 44 29 20 4e 55 4c POVERLAPPED) NUL
1a30: 4c 29 20 3d 3d 20 46 41 4c 53 45 29 20 7b 0a 21 L) == FALSE) {.!
1a40: 20 09 20 20 20 20 54 63 6c 57 69 6e 43 6f 6e 76 . TclWinConv
1a50: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
1a60: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 20 20 Error());. .
1a70: 20 67 6f 74 6f 20 65 72 72 6f 72 3b 0a 20 20 09 goto error;. .
1a80: 7d 0a 20 20 20 20 20 20 7d 0a 2d 2d 2d 20 37 39 }. }.--- 79
1a90: 30 2c 37 39 36 20 2d 2d 2d 2d 0a 20 20 0a 20 20 0,796 ----. .
1aa0: 09 69 66 20 28 57 72 69 74 65 46 69 6c 65 28 69 .if (WriteFile(i
1ab0: 6e 66 6f 50 74 72 2d 3e 68 61 6e 64 6c 65 2c 20 nfoPtr->handle,
1ac0: 28 4c 50 56 4f 49 44 29 20 62 75 66 2c 20 28 44 (LPVOID) buf, (D
1ad0: 57 4f 52 44 29 20 74 6f 57 72 69 74 65 2c 0a 20 WORD) toWrite,.
1ae0: 20 09 09 26 62 79 74 65 73 57 72 69 74 74 65 6e ..&bytesWritten
1af0: 2c 20 28 4c 50 4f 56 45 52 4c 41 50 50 45 44 29 , (LPOVERLAPPED)
1b00: 20 4e 55 4c 4c 29 20 3d 3d 20 46 41 4c 53 45 29 NULL) == FALSE)
1b10: 20 7b 0a 21 20 09 20 20 20 20 54 63 6c 5f 57 69 {.! . Tcl_Wi
1b20: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 nConvertError(Ge
1b30: 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 tLastError());.
1b40: 20 09 20 20 20 20 67 6f 74 6f 20 65 72 72 6f 72 . goto error
1b50: 3b 0a 20 20 09 7d 0a 20 20 20 20 20 20 7d 0a 2a ;. .}. }.*
1b60: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a **************.*
1b70: 2a 2a 20 31 30 34 39 2c 31 30 35 35 20 2a 2a 2a ** 1049,1055 ***
1b80: 2a 0a 20 20 09 20 20 20 20 20 2a 20 43 68 65 63 *. . * Chec
1b90: 6b 20 74 6f 20 73 65 65 20 69 66 20 74 68 65 20 k to see if the
1ba0: 70 65 65 6b 20 66 61 69 6c 65 64 20 62 65 63 61 peek failed beca
1bb0: 75 73 65 20 6f 66 20 45 4f 46 2e 0a 20 20 09 20 use of EOF.. .
1bc0: 20 20 20 20 2a 2f 0a 20 20 09 20 20 20 20 0a 21 */. . .!
1bd0: 20 09 20 20 20 20 54 63 6c 57 69 6e 43 6f 6e 76 . TclWinConv
1be0: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
1bf0: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 20 20 Error());. .
1c00: 20 0a 20 20 09 20 20 20 20 69 66 20 28 65 72 72 . . if (err
1c10: 6e 6f 20 3d 3d 20 45 4f 46 29 20 7b 0a 20 20 09 no == EOF) {. .
1c20: 09 69 6e 66 6f 50 74 72 2d 3e 72 65 61 64 46 6c .infoPtr->readFl
1c30: 61 67 73 20 7c 3d 20 43 4f 4e 53 4f 4c 45 5f 45 ags |= CONSOLE_E
1c40: 4f 46 3b 0a 2d 2d 2d 20 31 30 34 39 2c 31 30 35 OF;.--- 1049,105
1c50: 35 20 2d 2d 2d 2d 0a 20 20 09 20 20 20 20 20 2a 5 ----. . *
1c60: 20 43 68 65 63 6b 20 74 6f 20 73 65 65 20 69 66 Check to see if
1c70: 20 74 68 65 20 70 65 65 6b 20 66 61 69 6c 65 64 the peek failed
1c80: 20 62 65 63 61 75 73 65 20 6f 66 20 45 4f 46 2e because of EOF.
1c90: 0a 20 20 09 20 20 20 20 20 2a 2f 0a 20 20 09 20 . . */. .
1ca0: 20 20 20 0a 21 20 09 20 20 20 20 54 63 6c 5f 57 .! . Tcl_W
1cb0: 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 inConvertError(G
1cc0: 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a etLastError());.
1cd0: 20 20 09 20 20 20 20 0a 20 20 09 20 20 20 20 69 . . . i
1ce0: 66 20 28 65 72 72 6e 6f 20 3d 3d 20 45 4f 46 29 f (errno == EOF)
1cf0: 20 7b 0a 20 20 09 09 69 6e 66 6f 50 74 72 2d 3e {. ..infoPtr->
1d00: 72 65 61 64 46 6c 61 67 73 20 7c 3d 20 43 4f 4e readFlags |= CON
1d10: 53 4f 4c 45 5f 45 4f 46 3b 0a 0a 2a 2a 2a 20 77 SOLE_EOF;..*** w
1d20: 69 6e 2f 74 63 6c 57 69 6e 45 72 72 6f 72 2e 63 in/tclWinError.c
1d30: 09 32 37 20 4d 61 79 20 32 30 30 32 20 31 30 3a .27 May 2002 10:
1d40: 31 34 3a 32 31 20 2d 30 30 30 30 09 31 2e 35 0a 14:21 -0000.1.5.
1d50: 2d 2d 2d 20 77 69 6e 2f 74 63 6c 57 69 6e 45 72 --- win/tclWinEr
1d60: 72 6f 72 2e 63 09 34 20 53 65 70 20 32 30 30 33 ror.c.4 Sep 2003
1d70: 20 32 31 3a 32 30 3a 34 37 20 2d 30 30 30 30 0a 21:20:47 -0000.
1d80: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a ***************.
1d90: 2a 2a 2a 20 32 38 37 2c 32 39 33 20 2a 2a 2a 2a *** 287,293 ****
1da0: 0a 20 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f . EINVAL,./
1db0: 2a 20 32 36 34 20 2a 2f 0a 20 20 20 20 20 20 45 * 264 */. E
1dc0: 49 4e 56 41 4c 2c 09 2f 2a 20 32 36 35 20 2a 2f INVAL,./* 265 */
1dd0: 0a 20 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f . EINVAL,./
1de0: 2a 20 32 36 36 20 2a 2f 0a 21 20 20 20 20 20 45 * 266 */.! E
1df0: 4e 4f 54 44 49 52 2c 09 2f 2a 20 45 52 52 4f 52 NOTDIR,./* ERROR
1e00: 5f 44 49 52 45 43 54 4f 52 59 09 09 32 36 37 20 _DIRECTORY..267
1e10: 2a 2f 0a 20 20 7d 3b 0a 20 20 0a 20 20 73 74 61 */. };. . sta
1e20: 74 69 63 20 63 6f 6e 73 74 20 75 6e 73 69 67 6e tic const unsign
1e30: 65 64 20 69 6e 74 20 74 61 62 6c 65 4c 65 6e 20 ed int tableLen
1e40: 3d 20 73 69 7a 65 6f 66 28 65 72 72 6f 72 54 61 = sizeof(errorTa
1e50: 62 6c 65 29 3b 0a 2d 2d 2d 20 32 38 37 2c 32 39 ble);.--- 287,29
1e60: 33 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 45 49 4e 3 ----. EIN
1e70: 56 41 4c 2c 09 2f 2a 20 32 36 34 20 2a 2f 0a 20 VAL,./* 264 */.
1e80: 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f 2a 20 EINVAL,./*
1e90: 32 36 35 20 2a 2f 0a 20 20 20 20 20 20 45 49 4e 265 */. EIN
1ea0: 56 41 4c 2c 09 2f 2a 20 32 36 36 20 2a 2f 0a 21 VAL,./* 266 */.!
1eb0: 20 20 20 20 20 45 4e 4f 54 44 49 52 09 2f 2a 20 ENOTDIR./*
1ec0: 45 52 52 4f 52 5f 44 49 52 45 43 54 4f 52 59 09 ERROR_DIRECTORY.
1ed0: 09 32 36 37 20 2a 2f 0a 20 20 7d 3b 0a 20 20 0a .267 */. };. .
1ee0: 20 20 73 74 61 74 69 63 20 63 6f 6e 73 74 20 75 static const u
1ef0: 6e 73 69 67 6e 65 64 20 69 6e 74 20 74 61 62 6c nsigned int tabl
1f00: 65 4c 65 6e 20 3d 20 73 69 7a 65 6f 66 28 65 72 eLen = sizeof(er
1f10: 72 6f 72 54 61 62 6c 65 29 3b 0a 2a 2a 2a 2a 2a rorTable);.*****
1f20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 32 **********.*** 2
1f30: 39 37 2c 33 30 33 20 2a 2a 2a 2a 0a 20 20 20 2a 97,303 ****. *
1f40: 20 65 72 72 6e 6f 20 65 72 72 6f 72 73 2e 0a 20 errno errors..
1f50: 20 20 2a 2f 0a 20 20 0a 21 20 73 74 61 74 69 63 */. .! static
1f60: 20 69 6e 74 20 77 73 61 45 72 72 6f 72 54 61 62 int wsaErrorTab
1f70: 6c 65 5b 5d 20 3d 20 7b 0a 20 20 20 20 20 20 45 le[] = {. E
1f80: 57 4f 55 4c 44 42 4c 4f 43 4b 2c 09 2f 2a 20 57 WOULDBLOCK,./* W
1f90: 53 41 45 57 4f 55 4c 44 42 4c 4f 43 4b 20 2a 2f SAEWOULDBLOCK */
1fa0: 0a 20 20 20 20 20 20 45 49 4e 50 52 4f 47 52 45 . EINPROGRE
1fb0: 53 53 2c 09 2f 2a 20 57 53 41 45 49 4e 50 52 4f SS,./* WSAEINPRO
1fc0: 47 52 45 53 53 20 2a 2f 0a 20 20 20 20 20 20 45 GRESS */. E
1fd0: 41 4c 52 45 41 44 59 2c 09 09 2f 2a 20 57 53 41 ALREADY,../* WSA
1fe0: 45 41 4c 52 45 41 44 59 20 2a 2f 0a 2d 2d 2d 20 EALREADY */.---
1ff0: 32 39 37 2c 33 30 33 20 2d 2d 2d 2d 0a 20 20 20 297,303 ----.
2000: 2a 20 65 72 72 6e 6f 20 65 72 72 6f 72 73 2e 0a * errno errors..
2010: 20 20 20 2a 2f 0a 20 20 0a 21 20 73 74 61 74 69 */. .! stati
2020: 63 20 69 6e 74 20 77 73 61 45 72 72 6f 72 54 61 c int wsaErrorTa
2030: 62 6c 65 31 5b 5d 20 3d 20 7b 0a 20 20 20 20 20 ble1[] = {.
2040: 20 45 57 4f 55 4c 44 42 4c 4f 43 4b 2c 09 2f 2a EWOULDBLOCK,./*
2050: 20 57 53 41 45 57 4f 55 4c 44 42 4c 4f 43 4b 20 WSAEWOULDBLOCK
2060: 2a 2f 0a 20 20 20 20 20 20 45 49 4e 50 52 4f 47 */. EINPROG
2070: 52 45 53 53 2c 09 2f 2a 20 57 53 41 45 49 4e 50 RESS,./* WSAEINP
2080: 52 4f 47 52 45 53 53 20 2a 2f 0a 20 20 20 20 20 ROGRESS */.
2090: 20 45 41 4c 52 45 41 44 59 2c 09 09 2f 2a 20 57 EALREADY,../* W
20a0: 53 41 45 41 4c 52 45 41 44 59 20 2a 2f 0a 2a 2a SAEALREADY */.**
20b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a *************.**
20c0: 2a 20 33 33 36 2c 33 34 36 20 2a 2a 2a 2a 0a 20 * 336,346 ****.
20d0: 20 20 20 20 20 45 53 54 41 4c 45 2c 09 09 2f 2a ESTALE,../*
20e0: 20 57 53 41 45 53 54 41 4c 45 20 2a 2f 0a 20 20 WSAESTALE */.
20f0: 20 20 20 20 45 52 45 4d 4f 54 45 2c 09 09 2f 2a EREMOTE,../*
2100: 20 57 53 41 45 52 45 4d 4f 54 45 20 2a 2f 0a 20 WSAEREMOTE */.
2110: 20 7d 3b 0a 20 20 0c 0a 20 20 2f 2a 0a 20 20 20 };. .. /*.
2120: 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *---------------
2130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2140: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2160: 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 2a 0a 21 20 20 -------. *.!
2170: 2a 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 * TclWinConvertE
2180: 72 72 6f 72 20 2d 2d 0a 20 20 20 2a 0a 20 20 20 rror --. *.
2190: 2a 09 54 68 69 73 20 72 6f 75 74 69 6e 65 20 63 *.This routine c
21a0: 6f 6e 76 65 72 74 73 20 61 20 57 69 6e 33 32 20 onverts a Win32
21b0: 65 72 72 6f 72 20 69 6e 74 6f 20 61 6e 20 65 72 error into an er
21c0: 72 6e 6f 20 76 61 6c 75 65 2e 0a 20 20 20 2a 0a rno value.. *.
21d0: 2d 2d 2d 20 33 33 36 2c 34 36 39 20 2d 2d 2d 2d --- 336,469 ----
21e0: 0a 20 20 20 20 20 20 45 53 54 41 4c 45 2c 09 09 . ESTALE,..
21f0: 2f 2a 20 57 53 41 45 53 54 41 4c 45 20 2a 2f 0a /* WSAESTALE */.
2200: 20 20 20 20 20 20 45 52 45 4d 4f 54 45 2c 09 09 EREMOTE,..
2210: 2f 2a 20 57 53 41 45 52 45 4d 4f 54 45 20 2a 2f /* WSAEREMOTE */
2220: 0a 20 20 7d 3b 0a 2b 20 0a 2b 20 2f 2a 0a 2b 20 . };.+ .+ /*.+
2230: 20 2a 20 54 68 65 73 65 20 65 72 72 6f 72 20 63 * These error c
2240: 6f 64 65 73 20 61 72 65 20 76 65 72 79 20 77 69 odes are very wi
2250: 6e 64 6f 77 73 20 73 70 65 63 69 66 69 63 20 61 ndows specific a
2260: 6e 64 20 68 61 76 65 20 6e 6f 20 50 4f 53 49 58 nd have no POSIX
2270: 0a 2b 20 20 2a 20 74 72 61 6e 73 6c 61 74 69 6f .+ * translatio
2280: 6e 2c 20 79 65 74 2e 0a 2b 20 20 2a 0a 2b 20 20 n, yet..+ *.+
2290: 2a 20 54 4f 44 4f 3a 20 46 69 78 6d 65 21 0a 2b * TODO: Fixme!.+
22a0: 20 20 2a 2f 0a 2b 20 0a 2b 20 73 74 61 74 69 63 */.+ .+ static
22b0: 20 69 6e 74 20 77 73 61 45 72 72 6f 72 54 61 62 int wsaErrorTab
22c0: 6c 65 32 5b 5d 20 3d 20 7b 0a 2b 20 20 20 20 20 le2[] = {.+
22d0: 45 49 4e 56 41 4c 2c 09 09 2f 2a 20 57 53 41 53 EINVAL,../* WSAS
22e0: 59 53 4e 4f 54 52 45 41 44 59 09 20 20 20 20 57 YSNOTREADY. W
22f0: 53 41 53 74 61 72 74 75 70 20 63 61 6e 6e 6f 74 SAStartup cannot
2300: 20 66 75 6e 63 74 69 6f 6e 20 61 74 20 74 68 69 function at thi
2310: 73 20 74 69 6d 65 20 62 65 63 61 75 73 65 20 74 s time because t
2320: 68 65 20 75 6e 64 65 72 6c 79 69 6e 67 20 73 79 he underlying sy
2330: 73 74 65 6d 20 69 74 20 75 73 65 73 20 74 6f 20 stem it uses to
2340: 70 72 6f 76 69 64 65 20 6e 65 74 77 6f 72 6b 20 provide network
2350: 73 65 72 76 69 63 65 73 20 69 73 20 63 75 72 72 services is curr
2360: 65 6e 74 6c 79 20 75 6e 61 76 61 69 6c 61 62 6c ently unavailabl
2370: 65 2e 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e 56 e. */.+ EINV
2380: 41 4c 2c 09 09 2f 2a 20 57 53 41 56 45 52 4e 4f AL,../* WSAVERNO
2390: 54 53 55 50 50 4f 52 54 45 44 09 20 20 20 20 54 TSUPPORTED. T
23a0: 68 65 20 57 69 6e 64 6f 77 73 20 53 6f 63 6b 65 he Windows Socke
23b0: 74 73 20 76 65 72 73 69 6f 6e 20 72 65 71 75 65 ts version reque
23c0: 73 74 65 64 20 69 73 20 6e 6f 74 20 73 75 70 70 sted is not supp
23d0: 6f 72 74 65 64 2e 20 2a 2f 0a 2b 20 20 20 20 20 orted. */.+
23e0: 45 49 4e 56 41 4c 2c 09 09 2f 2a 20 57 53 41 4e EINVAL,../* WSAN
23f0: 4f 54 49 4e 49 54 49 41 4c 49 53 45 44 09 20 20 OTINITIALISED.
2400: 20 20 45 69 74 68 65 72 20 74 68 65 20 61 70 70 Either the app
2410: 6c 69 63 61 74 69 6f 6e 20 68 61 73 20 6e 6f 74 lication has not
2420: 20 63 61 6c 6c 65 64 20 57 53 41 53 74 61 72 74 called WSAStart
2430: 75 70 2c 20 6f 72 20 57 53 41 53 74 61 72 74 75 up, or WSAStartu
2440: 70 20 66 61 69 6c 65 64 2e 20 2a 2f 0a 2b 20 20 p failed. */.+
2450: 20 20 20 30 2c 0a 2b 20 20 20 20 20 30 2c 0a 2b 0,.+ 0,.+
2460: 20 20 20 20 20 30 2c 0a 2b 20 20 20 20 20 30 2c 0,.+ 0,
2470: 0a 2b 20 20 20 20 20 30 2c 0a 2b 20 20 20 20 20 .+ 0,.+
2480: 30 2c 0a 2b 20 20 20 20 20 30 2c 0a 2b 20 20 20 0,.+ 0,.+
2490: 20 20 45 49 4e 56 41 4c 2c 09 09 2f 2a 20 57 53 EINVAL,../* WS
24a0: 41 45 44 49 53 43 4f 4e 09 09 20 20 20 20 52 65 AEDISCON.. Re
24b0: 74 75 72 6e 65 64 20 62 79 20 57 53 41 52 65 63 turned by WSARec
24c0: 76 20 6f 72 20 57 53 41 52 65 63 76 46 72 6f 6d v or WSARecvFrom
24d0: 20 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 65 to indicate the
24e0: 20 72 65 6d 6f 74 65 20 70 61 72 74 79 20 68 61 remote party ha
24f0: 73 20 69 6e 69 74 69 61 74 65 64 20 61 20 67 72 s initiated a gr
2500: 61 63 65 66 75 6c 20 73 68 75 74 64 6f 77 6e 20 aceful shutdown
2510: 73 65 71 75 65 6e 63 65 2e 20 2a 2f 0a 2b 20 20 sequence. */.+
2520: 20 20 20 45 49 4e 56 41 4c 2c 09 09 2f 2a 20 57 EINVAL,../* W
2530: 53 41 45 4e 4f 4d 4f 52 45 09 09 20 20 20 20 4e SAENOMORE.. N
2540: 6f 20 6d 6f 72 65 20 72 65 73 75 6c 74 73 20 63 o more results c
2550: 61 6e 20 62 65 20 72 65 74 75 72 6e 65 64 20 62 an be returned b
2560: 79 20 57 53 41 4c 6f 6f 6b 75 70 53 65 72 76 69 y WSALookupServi
2570: 63 65 4e 65 78 74 2e 20 2a 2f 0a 2b 20 20 20 20 ceNext. */.+
2580: 20 45 49 4e 56 41 4c 2c 09 09 2f 2a 20 57 53 41 EINVAL,../* WSA
2590: 45 43 41 4e 43 45 4c 4c 45 44 09 20 20 20 20 41 ECANCELLED. A
25a0: 20 63 61 6c 6c 20 74 6f 20 57 53 41 4c 6f 6f 6b call to WSALook
25b0: 75 70 53 65 72 76 69 63 65 45 6e 64 20 77 61 73 upServiceEnd was
25c0: 20 6d 61 64 65 20 77 68 69 6c 65 20 74 68 69 73 made while this
25d0: 20 63 61 6c 6c 20 77 61 73 20 73 74 69 6c 6c 20 call was still
25e0: 70 72 6f 63 65 73 73 69 6e 67 2e 20 54 68 65 20 processing. The
25f0: 63 61 6c 6c 20 68 61 73 20 62 65 65 6e 20 63 61 call has been ca
2600: 6e 63 65 6c 65 64 2e 20 2a 2f 0a 2b 20 20 20 20 nceled. */.+
2610: 20 45 49 4e 56 41 4c 2c 09 09 2f 2a 20 57 53 41 EINVAL,../* WSA
2620: 45 49 4e 56 41 4c 49 44 50 52 4f 43 54 41 42 4c EINVALIDPROCTABL
2630: 45 09 20 20 20 20 54 68 65 20 70 72 6f 63 65 64 E. The proced
2640: 75 72 65 20 63 61 6c 6c 20 74 61 62 6c 65 20 69 ure call table i
2650: 73 20 69 6e 76 61 6c 69 64 2e 20 2a 2f 0a 2b 20 s invalid. */.+
2660: 20 20 20 20 45 49 4e 56 41 4c 2c 09 09 2f 2a 20 EINVAL,../*
2670: 57 53 41 45 49 4e 56 41 4c 49 44 50 52 4f 56 49 WSAEINVALIDPROVI
2680: 44 45 52 09 20 20 20 20 54 68 65 20 72 65 71 75 DER. The requ
2690: 65 73 74 65 64 20 73 65 72 76 69 63 65 20 70 72 ested service pr
26a0: 6f 76 69 64 65 72 20 69 73 20 69 6e 76 61 6c 69 ovider is invali
26b0: 64 2e 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e 56 d. */.+ EINV
26c0: 41 4c 2c 09 09 2f 2a 20 57 53 41 45 50 52 4f 56 AL,../* WSAEPROV
26d0: 49 44 45 52 46 41 49 4c 45 44 49 4e 49 54 20 20 IDERFAILEDINIT
26e0: 20 54 68 65 20 72 65 71 75 65 73 74 65 64 20 73 The requested s
26f0: 65 72 76 69 63 65 20 70 72 6f 76 69 64 65 72 20 ervice provider
2700: 63 6f 75 6c 64 20 6e 6f 74 20 62 65 20 6c 6f 61 could not be loa
2710: 64 65 64 20 6f 72 20 69 6e 69 74 69 61 6c 69 7a ded or initializ
2720: 65 64 2e 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e ed. */.+ EIN
2730: 56 41 4c 2c 09 09 2f 2a 20 57 53 41 53 59 53 43 VAL,../* WSASYSC
2740: 41 4c 4c 46 41 49 4c 55 52 45 09 20 20 20 20 41 ALLFAILURE. A
2750: 20 73 79 73 74 65 6d 20 63 61 6c 6c 20 74 68 61 system call tha
2760: 74 20 73 68 6f 75 6c 64 20 6e 65 76 65 72 20 66 t should never f
2770: 61 69 6c 20 68 61 73 20 66 61 69 6c 65 64 2e 20 ail has failed.
2780: 2a 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c */.+ EINVAL,
2790: 09 09 2f 2a 20 57 53 41 53 45 52 56 49 43 45 5f ../* WSASERVICE_
27a0: 4e 4f 54 5f 46 4f 55 4e 44 09 20 20 20 20 4e 6f NOT_FOUND. No
27b0: 20 73 75 63 68 20 73 65 72 76 69 63 65 20 69 73 such service is
27c0: 20 6b 6e 6f 77 6e 2e 20 54 68 65 20 73 65 72 76 known. The serv
27d0: 69 63 65 20 63 61 6e 6e 6f 74 20 62 65 20 66 6f ice cannot be fo
27e0: 75 6e 64 20 69 6e 20 74 68 65 20 73 70 65 63 69 und in the speci
27f0: 66 69 65 64 20 6e 61 6d 65 20 73 70 61 63 65 2e fied name space.
2800: 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c */.+ EINVAL
2810: 2c 09 09 2f 2a 20 57 53 41 54 59 50 45 5f 4e 4f ,../* WSATYPE_NO
2820: 54 5f 46 4f 55 4e 44 09 20 20 20 20 54 68 65 20 T_FOUND. The
2830: 73 70 65 63 69 66 69 65 64 20 63 6c 61 73 73 20 specified class
2840: 77 61 73 20 6e 6f 74 20 66 6f 75 6e 64 2e 20 2a was not found. *
2850: 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 /.+ EINVAL,.
2860: 09 2f 2a 20 57 53 41 5f 45 5f 4e 4f 5f 4d 4f 52 ./* WSA_E_NO_MOR
2870: 45 09 20 20 20 20 4e 6f 20 6d 6f 72 65 20 72 65 E. No more re
2880: 73 75 6c 74 73 20 63 61 6e 20 62 65 20 72 65 74 sults can be ret
2890: 75 72 6e 65 64 20 62 79 20 57 53 41 4c 6f 6f 6b urned by WSALook
28a0: 75 70 53 65 72 76 69 63 65 4e 65 78 74 2e 20 2a upServiceNext. *
28b0: 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 /.+ EINVAL,.
28c0: 09 2f 2a 20 57 53 41 5f 45 5f 43 41 4e 43 45 4c ./* WSA_E_CANCEL
28d0: 4c 45 44 09 20 20 20 20 41 20 63 61 6c 6c 20 74 LED. A call t
28e0: 6f 20 57 53 41 4c 6f 6f 6b 75 70 53 65 72 76 69 o WSALookupServi
28f0: 63 65 45 6e 64 20 77 61 73 20 6d 61 64 65 20 77 ceEnd was made w
2900: 68 69 6c 65 20 74 68 69 73 20 63 61 6c 6c 20 77 hile this call w
2910: 61 73 20 73 74 69 6c 6c 20 70 72 6f 63 65 73 73 as still process
2920: 69 6e 67 2e 20 54 68 65 20 63 61 6c 6c 20 68 61 ing. The call ha
2930: 73 20 62 65 65 6e 20 63 61 6e 63 65 6c 65 64 2e s been canceled.
2940: 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c */.+ EINVAL
2950: 09 09 2f 2a 20 57 53 41 45 52 45 46 55 53 45 44 ../* WSAEREFUSED
2960: 09 09 20 20 20 20 41 20 64 61 74 61 62 61 73 65 .. A database
2970: 20 71 75 65 72 79 20 66 61 69 6c 65 64 20 62 65 query failed be
2980: 63 61 75 73 65 20 69 74 20 77 61 73 20 61 63 74 cause it was act
2990: 69 76 65 6c 79 20 72 65 66 75 73 65 64 2e 20 2a ively refused. *
29a0: 2f 0a 2b 20 7d 3b 0a 2b 20 0a 2b 20 2f 2a 0a 2b /.+ };.+ .+ /*.+
29b0: 20 20 2a 20 54 68 65 73 65 20 65 72 72 6f 72 20 * These error
29c0: 63 6f 64 65 73 20 61 72 65 20 76 65 72 79 20 77 codes are very w
29d0: 69 6e 64 6f 77 73 20 73 70 65 63 69 66 69 63 20 indows specific
29e0: 61 6e 64 20 68 61 76 65 20 6e 6f 20 50 4f 53 49 and have no POSI
29f0: 58 0a 2b 20 20 2a 20 74 72 61 6e 73 6c 61 74 69 X.+ * translati
2a00: 6f 6e 2c 20 79 65 74 2e 0a 2b 20 20 2a 0a 2b 20 on, yet..+ *.+
2a10: 20 2a 20 54 4f 44 4f 3a 20 46 69 78 6d 65 21 0a * TODO: Fixme!.
2a20: 2b 20 20 2a 2f 0a 2b 20 0a 2b 20 23 69 66 6e 64 + */.+ .+ #ifnd
2a30: 65 66 20 57 53 41 5f 51 4f 53 5f 45 53 45 52 56 ef WSA_QOS_ESERV
2a40: 49 43 45 54 59 50 45 0a 2b 20 23 64 65 66 69 6e ICETYPE.+ #defin
2a50: 65 20 20 57 53 41 5f 51 4f 53 5f 45 53 45 52 56 e WSA_QOS_ESERV
2a60: 49 43 45 54 59 50 45 20 20 20 20 20 20 20 20 20 ICETYPE
2a70: 20 20 20 28 57 53 41 42 41 53 45 45 52 52 20 2b (WSABASEERR +
2a80: 20 31 30 31 36 29 0a 2b 20 23 65 6e 64 69 66 0a 1016).+ #endif.
2a90: 2b 20 23 69 66 6e 64 65 66 20 57 53 41 5f 51 4f + #ifndef WSA_QO
2aa0: 53 5f 45 46 4c 4f 57 53 50 45 43 0a 2b 20 23 64 S_EFLOWSPEC.+ #d
2ab0: 65 66 69 6e 65 20 20 57 53 41 5f 51 4f 53 5f 45 efine WSA_QOS_E
2ac0: 46 4c 4f 57 53 50 45 43 20 20 20 20 20 20 20 20 FLOWSPEC
2ad0: 20 20 20 20 20 20 20 28 57 53 41 42 41 53 45 45 (WSABASEE
2ae0: 52 52 20 2b 20 31 30 31 37 29 0a 2b 20 23 65 6e RR + 1017).+ #en
2af0: 64 69 66 0a 2b 20 23 69 66 6e 64 65 66 20 57 53 dif.+ #ifndef WS
2b00: 41 5f 51 4f 53 5f 45 50 52 4f 56 53 50 45 43 42 A_QOS_EPROVSPECB
2b10: 55 46 0a 2b 20 23 64 65 66 69 6e 65 20 20 57 53 UF.+ #define WS
2b20: 41 5f 51 4f 53 5f 45 50 52 4f 56 53 50 45 43 42 A_QOS_EPROVSPECB
2b30: 55 46 20 20 20 20 20 20 20 20 20 20 20 20 28 57 UF (W
2b40: 53 41 42 41 53 45 45 52 52 20 2b 20 31 30 31 38 SABASEERR + 1018
2b50: 29 0a 2b 20 23 65 6e 64 69 66 0a 2b 20 23 69 66 ).+ #endif.+ #if
2b60: 6e 64 65 66 20 57 53 41 5f 51 4f 53 5f 45 46 49 ndef WSA_QOS_EFI
2b70: 4c 54 45 52 53 54 59 4c 45 0a 2b 20 23 64 65 66 LTERSTYLE.+ #def
2b80: 69 6e 65 20 20 57 53 41 5f 51 4f 53 5f 45 46 49 ine WSA_QOS_EFI
2b90: 4c 54 45 52 53 54 59 4c 45 20 20 20 20 20 20 20 LTERSTYLE
2ba0: 20 20 20 20 20 28 57 53 41 42 41 53 45 45 52 52 (WSABASEERR
2bb0: 20 2b 20 31 30 31 39 29 0a 2b 20 23 65 6e 64 69 + 1019).+ #endi
2bc0: 66 0a 2b 20 23 69 66 6e 64 65 66 20 57 53 41 5f f.+ #ifndef WSA_
2bd0: 51 4f 53 5f 45 46 49 4c 54 45 52 54 59 50 45 0a QOS_EFILTERTYPE.
2be0: 2b 20 23 64 65 66 69 6e 65 20 20 57 53 41 5f 51 + #define WSA_Q
2bf0: 4f 53 5f 45 46 49 4c 54 45 52 54 59 50 45 20 20 OS_EFILTERTYPE
2c00: 20 20 20 20 20 20 20 20 20 20 20 28 57 53 41 42 (WSAB
2c10: 41 53 45 45 52 52 20 2b 20 31 30 32 30 29 0a 2b ASEERR + 1020).+
2c20: 20 23 65 6e 64 69 66 0a 2b 20 23 69 66 6e 64 65 #endif.+ #ifnde
2c30: 66 20 57 53 41 5f 51 4f 53 5f 45 46 49 4c 54 45 f WSA_QOS_EFILTE
2c40: 52 43 4f 55 4e 54 0a 2b 20 23 64 65 66 69 6e 65 RCOUNT.+ #define
2c50: 20 20 57 53 41 5f 51 4f 53 5f 45 46 49 4c 54 45 WSA_QOS_EFILTE
2c60: 52 43 4f 55 4e 54 20 20 20 20 20 20 20 20 20 20 RCOUNT
2c70: 20 20 28 57 53 41 42 41 53 45 45 52 52 20 2b 20 (WSABASEERR +
2c80: 31 30 32 31 29 0a 2b 20 23 65 6e 64 69 66 0a 2b 1021).+ #endif.+
2c90: 20 23 69 66 6e 64 65 66 20 57 53 41 5f 51 4f 53 #ifndef WSA_QOS
2ca0: 5f 45 4f 42 4a 4c 45 4e 47 54 48 0a 2b 20 23 64 _EOBJLENGTH.+ #d
2cb0: 65 66 69 6e 65 20 20 57 53 41 5f 51 4f 53 5f 45 efine WSA_QOS_E
2cc0: 4f 42 4a 4c 45 4e 47 54 48 20 20 20 20 20 20 20 OBJLENGTH
2cd0: 20 20 20 20 20 20 20 28 57 53 41 42 41 53 45 45 (WSABASEE
2ce0: 52 52 20 2b 20 31 30 32 32 29 0a 2b 20 23 65 6e RR + 1022).+ #en
2cf0: 64 69 66 0a 2b 20 23 69 66 6e 64 65 66 20 57 53 dif.+ #ifndef WS
2d00: 41 5f 51 4f 53 5f 45 46 4c 4f 57 43 4f 55 4e 54 A_QOS_EFLOWCOUNT
2d10: 0a 2b 20 23 64 65 66 69 6e 65 20 20 57 53 41 5f .+ #define WSA_
2d20: 51 4f 53 5f 45 46 4c 4f 57 43 4f 55 4e 54 20 20 QOS_EFLOWCOUNT
2d30: 20 20 20 20 20 20 20 20 20 20 20 20 28 57 53 41 (WSA
2d40: 42 41 53 45 45 52 52 20 2b 20 31 30 32 33 29 0a BASEERR + 1023).
2d50: 2b 20 23 65 6e 64 69 66 0a 2b 20 23 69 66 6e 64 + #endif.+ #ifnd
2d60: 65 66 20 57 53 41 5f 51 4f 53 5f 45 55 4e 4b 4f ef WSA_QOS_EUNKO
2d70: 57 4e 50 53 4f 42 4a 0a 2b 20 23 64 65 66 69 6e WNPSOBJ.+ #defin
2d80: 65 20 20 57 53 41 5f 51 4f 53 5f 45 55 4e 4b 4f e WSA_QOS_EUNKO
2d90: 57 4e 50 53 4f 42 4a 20 20 20 20 20 20 20 20 20 WNPSOBJ
2da0: 20 20 20 28 57 53 41 42 41 53 45 45 52 52 20 2b (WSABASEERR +
2db0: 20 31 30 32 34 29 0a 2b 20 23 65 6e 64 69 66 0a 1024).+ #endif.
2dc0: 2b 20 23 69 66 6e 64 65 66 20 57 53 41 5f 51 4f + #ifndef WSA_QO
2dd0: 53 5f 45 50 4f 4c 49 43 59 4f 42 4a 0a 2b 20 23 S_EPOLICYOBJ.+ #
2de0: 64 65 66 69 6e 65 20 20 57 53 41 5f 51 4f 53 5f define WSA_QOS_
2df0: 45 50 4f 4c 49 43 59 4f 42 4a 20 20 20 20 20 20 EPOLICYOBJ
2e00: 20 20 20 20 20 20 20 20 28 57 53 41 42 41 53 45 (WSABASE
2e10: 45 52 52 20 2b 20 31 30 32 35 29 0a 2b 20 23 65 ERR + 1025).+ #e
2e20: 6e 64 69 66 0a 2b 20 23 69 66 6e 64 65 66 20 57 ndif.+ #ifndef W
2e30: 53 41 5f 51 4f 53 5f 45 46 4c 4f 57 44 45 53 43 SA_QOS_EFLOWDESC
2e40: 0a 2b 20 23 64 65 66 69 6e 65 20 20 57 53 41 5f .+ #define WSA_
2e50: 51 4f 53 5f 45 46 4c 4f 57 44 45 53 43 20 20 20 QOS_EFLOWDESC
2e60: 20 20 20 20 20 20 20 20 20 20 20 20 28 57 53 41 (WSA
2e70: 42 41 53 45 45 52 52 20 2b 20 31 30 32 36 29 0a BASEERR + 1026).
2e80: 2b 20 23 65 6e 64 69 66 0a 2b 20 23 69 66 6e 64 + #endif.+ #ifnd
2e90: 65 66 20 57 53 41 5f 51 4f 53 5f 45 50 53 46 4c ef WSA_QOS_EPSFL
2ea0: 4f 57 53 50 45 43 0a 2b 20 23 64 65 66 69 6e 65 OWSPEC.+ #define
2eb0: 20 20 57 53 41 5f 51 4f 53 5f 45 50 53 46 4c 4f WSA_QOS_EPSFLO
2ec0: 57 53 50 45 43 20 20 20 20 20 20 20 20 20 20 20 WSPEC
2ed0: 20 20 28 57 53 41 42 41 53 45 45 52 52 20 2b 20 (WSABASEERR +
2ee0: 31 30 32 37 29 0a 2b 20 23 65 6e 64 69 66 0a 2b 1027).+ #endif.+
2ef0: 20 23 69 66 6e 64 65 66 20 57 53 41 5f 51 4f 53 #ifndef WSA_QOS
2f00: 5f 45 50 53 46 49 4c 54 45 52 53 50 45 43 0a 2b _EPSFILTERSPEC.+
2f10: 20 23 64 65 66 69 6e 65 20 20 57 53 41 5f 51 4f #define WSA_QO
2f20: 53 5f 45 50 53 46 49 4c 54 45 52 53 50 45 43 20 S_EPSFILTERSPEC
2f30: 20 20 20 20 20 20 20 20 20 20 28 57 53 41 42 41 (WSABA
2f40: 53 45 45 52 52 20 2b 20 31 30 32 38 29 0a 2b 20 SEERR + 1028).+
2f50: 23 65 6e 64 69 66 0a 2b 20 23 69 66 6e 64 65 66 #endif.+ #ifndef
2f60: 20 57 53 41 5f 51 4f 53 5f 45 53 44 4d 4f 44 45 WSA_QOS_ESDMODE
2f70: 4f 42 4a 0a 2b 20 23 64 65 66 69 6e 65 20 20 57 OBJ.+ #define W
2f80: 53 41 5f 51 4f 53 5f 45 53 44 4d 4f 44 45 4f 42 SA_QOS_ESDMODEOB
2f90: 4a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 J (
2fa0: 57 53 41 42 41 53 45 45 52 52 20 2b 20 31 30 32 WSABASEERR + 102
2fb0: 39 29 0a 2b 20 23 65 6e 64 69 66 0a 2b 20 23 69 9).+ #endif.+ #i
2fc0: 66 6e 64 65 66 20 57 53 41 5f 51 4f 53 5f 45 53 fndef WSA_QOS_ES
2fd0: 48 41 50 45 52 41 54 45 4f 42 4a 0a 2b 20 23 64 HAPERATEOBJ.+ #d
2fe0: 65 66 69 6e 65 20 20 57 53 41 5f 51 4f 53 5f 45 efine WSA_QOS_E
2ff0: 53 48 41 50 45 52 41 54 45 4f 42 4a 20 20 20 20 SHAPERATEOBJ
3000: 20 20 20 20 20 20 20 28 57 53 41 42 41 53 45 45 (WSABASEE
3010: 52 52 20 2b 20 31 30 33 30 29 0a 2b 20 23 65 6e RR + 1030).+ #en
3020: 64 69 66 0a 2b 20 23 69 66 6e 64 65 66 20 57 53 dif.+ #ifndef WS
3030: 41 5f 51 4f 53 5f 52 45 53 45 52 56 45 44 5f 50 A_QOS_RESERVED_P
3040: 45 54 59 50 45 0a 2b 20 23 64 65 66 69 6e 65 20 ETYPE.+ #define
3050: 20 57 53 41 5f 51 4f 53 5f 52 45 53 45 52 56 45 WSA_QOS_RESERVE
3060: 44 5f 50 45 54 59 50 45 20 20 20 20 20 20 20 20 D_PETYPE
3070: 20 28 57 53 41 42 41 53 45 45 52 52 20 2b 20 31 (WSABASEERR + 1
3080: 30 33 31 29 0a 2b 20 23 65 6e 64 69 66 0a 2b 20 031).+ #endif.+
3090: 0a 2b 20 73 74 61 74 69 63 20 69 6e 74 20 77 73 .+ static int ws
30a0: 61 45 72 72 6f 72 54 61 62 6c 65 33 5b 5d 20 3d aErrorTable3[] =
30b0: 20 7b 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c {.+ EINVAL,
30c0: 09 2f 2a 20 57 53 41 48 4f 53 54 5f 4e 4f 54 5f ./* WSAHOST_NOT_
30d0: 46 4f 55 4e 44 2c 09 41 75 74 68 6f 72 69 74 61 FOUND,.Authorita
30e0: 74 69 76 65 20 41 6e 73 77 65 72 3a 20 48 6f 73 tive Answer: Hos
30f0: 74 20 6e 6f 74 20 66 6f 75 6e 64 20 2a 2f 0a 2b t not found */.+
3100: 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f 2a 20 EINVAL,./*
3110: 57 53 41 54 52 59 5f 41 47 41 49 4e 2c 09 4e 6f WSATRY_AGAIN,.No
3120: 6e 2d 41 75 74 68 6f 72 69 74 61 74 69 76 65 3a n-Authoritative:
3130: 20 48 6f 73 74 20 6e 6f 74 20 66 6f 75 6e 64 2c Host not found,
3140: 20 6f 72 20 53 45 52 56 45 52 46 41 49 4c 20 2a or SERVERFAIL *
3150: 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 /.+ EINVAL,.
3160: 2f 2a 20 57 53 41 4e 4f 5f 52 45 43 4f 56 45 52 /* WSANO_RECOVER
3170: 59 2c 09 4e 6f 6e 2d 72 65 63 6f 76 65 72 61 62 Y,.Non-recoverab
3180: 6c 65 20 65 72 72 6f 72 73 2c 20 46 4f 52 4d 45 le errors, FORME
3190: 52 52 2c 20 52 45 46 55 53 45 44 2c 20 4e 4f 54 RR, REFUSED, NOT
31a0: 49 4d 50 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e IMP */.+ EIN
31b0: 56 41 4c 2c 09 2f 2a 20 57 53 41 4e 4f 5f 44 41 VAL,./* WSANO_DA
31c0: 54 41 2c 09 09 56 61 6c 69 64 20 6e 61 6d 65 2c TA,..Valid name,
31d0: 20 6e 6f 20 64 61 74 61 20 72 65 63 6f 72 64 20 no data record
31e0: 6f 66 20 72 65 71 75 65 73 74 65 64 20 74 79 70 of requested typ
31f0: 65 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 e */.+ EINVA
3200: 4c 2c 09 2f 2a 20 57 53 41 5f 51 4f 53 5f 52 45 L,./* WSA_QOS_RE
3210: 43 45 49 56 45 52 53 2c 09 09 61 74 20 6c 65 61 CEIVERS,..at lea
3220: 73 74 20 6f 6e 65 20 52 65 73 65 72 76 65 20 68 st one Reserve h
3230: 61 73 20 61 72 72 69 76 65 64 20 2a 2f 0a 2b 20 as arrived */.+
3240: 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f 2a 20 57 EINVAL,./* W
3250: 53 41 5f 51 4f 53 5f 53 45 4e 44 45 52 53 2c 09 SA_QOS_SENDERS,.
3260: 09 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 50 61 .at least one Pa
3270: 74 68 20 68 61 73 20 61 72 72 69 76 65 64 20 2a th has arrived *
3280: 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 /.+ EINVAL,.
3290: 2f 2a 20 57 53 41 5f 51 4f 53 5f 4e 4f 5f 53 45 /* WSA_QOS_NO_SE
32a0: 4e 44 45 52 53 2c 09 09 74 68 65 72 65 20 61 72 NDERS,..there ar
32b0: 65 20 6e 6f 20 73 65 6e 64 65 72 73 20 2a 2f 0a e no senders */.
32c0: 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f 2a + EINVAL,./*
32d0: 20 57 53 41 5f 51 4f 53 5f 4e 4f 5f 52 45 43 45 WSA_QOS_NO_RECE
32e0: 49 56 45 52 53 2c 09 74 68 65 72 65 20 61 72 65 IVERS,.there are
32f0: 20 6e 6f 20 72 65 63 65 69 76 65 72 73 20 2a 2f no receivers */
3300: 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f .+ EINVAL,./
3310: 2a 20 57 53 41 5f 51 4f 53 5f 52 45 51 55 45 53 * WSA_QOS_REQUES
3320: 54 5f 43 4f 4e 46 49 52 4d 45 44 2c 09 52 65 73 T_CONFIRMED,.Res
3330: 65 72 76 65 20 68 61 73 20 62 65 65 6e 20 63 6f erve has been co
3340: 6e 66 69 72 6d 65 64 20 2a 2f 0a 2b 20 20 20 20 nfirmed */.+
3350: 20 45 49 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 5f EINVAL,./* WSA_
3360: 51 4f 53 5f 41 44 4d 49 53 53 49 4f 4e 5f 46 41 QOS_ADMISSION_FA
3370: 49 4c 55 52 45 2c 09 65 72 72 6f 72 20 64 75 65 ILURE,.error due
3380: 20 74 6f 20 6c 61 63 6b 20 6f 66 20 72 65 73 6f to lack of reso
3390: 75 72 63 65 73 20 2a 2f 0a 2b 20 20 20 20 20 45 urces */.+ E
33a0: 49 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 5f 51 4f INVAL,./* WSA_QO
33b0: 53 5f 50 4f 4c 49 43 59 5f 46 41 49 4c 55 52 45 S_POLICY_FAILURE
33c0: 2c 09 72 65 6a 65 63 74 65 64 20 66 6f 72 20 61 ,.rejected for a
33d0: 64 6d 69 6e 69 73 74 72 61 74 69 76 65 20 72 65 dministrative re
33e0: 61 73 6f 6e 73 20 2d 20 62 61 64 20 63 72 65 64 asons - bad cred
33f0: 65 6e 74 69 61 6c 73 20 2a 2f 0a 2b 20 20 20 20 entials */.+
3400: 20 45 49 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 5f EINVAL,./* WSA_
3410: 51 4f 53 5f 42 41 44 5f 53 54 59 4c 45 2c 09 09 QOS_BAD_STYLE,..
3420: 75 6e 6b 6e 6f 77 6e 20 6f 72 20 63 6f 6e 66 6c unknown or confl
3430: 69 63 74 69 6e 67 20 73 74 79 6c 65 20 2a 2f 0a icting style */.
3440: 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f 2a + EINVAL,./*
3450: 20 57 53 41 5f 51 4f 53 5f 42 41 44 5f 4f 42 4a WSA_QOS_BAD_OBJ
3460: 45 43 54 2c 09 09 70 72 6f 62 6c 65 6d 20 77 69 ECT,..problem wi
3470: 74 68 20 73 6f 6d 65 20 70 61 72 74 20 6f 66 20 th some part of
3480: 74 68 65 20 66 69 6c 74 65 72 73 70 65 63 20 6f the filterspec o
3490: 72 20 70 72 6f 76 69 64 65 72 73 70 65 63 69 66 r providerspecif
34a0: 69 63 20 62 75 66 66 65 72 20 69 6e 20 67 65 6e ic buffer in gen
34b0: 65 72 61 6c 20 2a 2f 0a 2b 20 20 20 20 20 45 49 eral */.+ EI
34c0: 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 5f 51 4f 53 NVAL,./* WSA_QOS
34d0: 5f 54 52 41 46 46 49 43 5f 43 54 52 4c 5f 45 52 _TRAFFIC_CTRL_ER
34e0: 52 4f 52 2c 09 70 72 6f 62 6c 65 6d 20 77 69 74 ROR,.problem wit
34f0: 68 20 73 6f 6d 65 20 70 61 72 74 20 6f 66 20 74 h some part of t
3500: 68 65 20 66 6c 6f 77 73 70 65 63 20 2a 2f 0a 2b he flowspec */.+
3510: 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f 2a 20 EINVAL,./*
3520: 57 53 41 5f 51 4f 53 5f 47 45 4e 45 52 49 43 5f WSA_QOS_GENERIC_
3530: 45 52 52 4f 52 2c 09 67 65 6e 65 72 61 6c 20 65 ERROR,.general e
3540: 72 72 6f 72 20 2a 2f 0a 2b 20 20 20 20 20 45 49 rror */.+ EI
3550: 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 5f 51 4f 53 NVAL,./* WSA_QOS
3560: 5f 45 53 45 52 56 49 43 45 54 59 50 45 2c 09 69 _ESERVICETYPE,.i
3570: 6e 76 61 6c 69 64 20 73 65 72 76 69 63 65 20 74 nvalid service t
3580: 79 70 65 20 69 6e 20 66 6c 6f 77 73 70 65 63 20 ype in flowspec
3590: 2a 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c */.+ EINVAL,
35a0: 09 2f 2a 20 57 53 41 5f 51 4f 53 5f 45 46 4c 4f ./* WSA_QOS_EFLO
35b0: 57 53 50 45 43 2c 09 09 69 6e 76 61 6c 69 64 20 WSPEC,..invalid
35c0: 66 6c 6f 77 73 70 65 63 20 2a 2f 0a 2b 20 20 20 flowspec */.+
35d0: 20 20 45 49 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 EINVAL,./* WSA
35e0: 5f 51 4f 53 5f 45 50 52 4f 56 53 50 45 43 42 55 _QOS_EPROVSPECBU
35f0: 46 2c 09 69 6e 76 61 6c 69 64 20 70 72 6f 76 69 F,.invalid provi
3600: 64 65 72 20 73 70 65 63 69 66 69 63 20 62 75 66 der specific buf
3610: 66 65 72 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e fer */.+ EIN
3620: 56 41 4c 2c 09 2f 2a 20 57 53 41 5f 51 4f 53 5f VAL,./* WSA_QOS_
3630: 45 46 49 4c 54 45 52 53 54 59 4c 45 2c 09 69 6e EFILTERSTYLE,.in
3640: 76 61 6c 69 64 20 66 69 6c 74 65 72 20 73 74 79 valid filter sty
3650: 6c 65 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e 56 le */.+ EINV
3660: 41 4c 2c 09 2f 2a 20 57 53 41 5f 51 4f 53 5f 45 AL,./* WSA_QOS_E
3670: 46 49 4c 54 45 52 54 59 50 45 2c 09 09 69 6e 76 FILTERTYPE,..inv
3680: 61 6c 69 64 20 66 69 6c 74 65 72 20 74 79 70 65 alid filter type
3690: 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c */.+ EINVAL
36a0: 2c 09 2f 2a 20 57 53 41 5f 51 4f 53 5f 45 46 49 ,./* WSA_QOS_EFI
36b0: 4c 54 45 52 43 4f 55 4e 54 2c 09 69 6e 63 6f 72 LTERCOUNT,.incor
36c0: 72 65 63 74 20 6e 75 6d 62 65 72 20 6f 66 20 66 rect number of f
36d0: 69 6c 74 65 72 73 20 2a 2f 0a 2b 20 20 20 20 20 ilters */.+
36e0: 45 49 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 5f 51 EINVAL,./* WSA_Q
36f0: 4f 53 5f 45 4f 42 4a 4c 45 4e 47 54 48 2c 09 09 OS_EOBJLENGTH,..
3700: 69 6e 76 61 6c 69 64 20 6f 62 6a 65 63 74 20 6c invalid object l
3710: 65 6e 67 74 68 20 2a 2f 0a 2b 20 20 20 20 20 45 ength */.+ E
3720: 49 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 5f 51 4f INVAL,./* WSA_QO
3730: 53 5f 45 46 4c 4f 57 43 4f 55 4e 54 2c 09 09 69 S_EFLOWCOUNT,..i
3740: 6e 63 6f 72 72 65 63 74 20 6e 75 6d 62 65 72 20 ncorrect number
3750: 6f 66 20 66 6c 6f 77 73 20 2a 2f 0a 2b 20 20 20 of flows */.+
3760: 20 20 45 49 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 EINVAL,./* WSA
3770: 5f 51 4f 53 5f 45 55 4e 4b 4f 57 4e 50 53 4f 42 _QOS_EUNKOWNPSOB
3780: 4a 2c 09 75 6e 6b 6e 6f 77 6e 20 6f 62 6a 65 63 J,.unknown objec
3790: 74 20 69 6e 20 70 72 6f 76 69 64 65 72 20 73 70 t in provider sp
37a0: 65 63 69 66 69 63 20 62 75 66 66 65 72 20 2a 2f ecific buffer */
37b0: 0a 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f .+ EINVAL,./
37c0: 2a 20 57 53 41 5f 51 4f 53 5f 45 50 4f 4c 49 43 * WSA_QOS_EPOLIC
37d0: 59 4f 42 4a 2c 09 09 69 6e 76 61 6c 69 64 20 70 YOBJ,..invalid p
37e0: 6f 6c 69 63 79 20 6f 62 6a 65 63 74 20 69 6e 20 olicy object in
37f0: 70 72 6f 76 69 64 65 72 20 73 70 65 63 69 66 69 provider specifi
3800: 63 20 62 75 66 66 65 72 20 2a 2f 0a 2b 20 20 20 c buffer */.+
3810: 20 20 45 49 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 EINVAL,./* WSA
3820: 5f 51 4f 53 5f 45 46 4c 4f 57 44 45 53 43 2c 09 _QOS_EFLOWDESC,.
3830: 09 69 6e 76 61 6c 69 64 20 66 6c 6f 77 20 64 65 .invalid flow de
3840: 73 63 72 69 70 74 6f 72 20 69 6e 20 74 68 65 20 scriptor in the
3850: 6c 69 73 74 20 2a 2f 0a 2b 20 20 20 20 20 45 49 list */.+ EI
3860: 4e 56 41 4c 2c 09 2f 2a 20 57 53 41 5f 51 4f 53 NVAL,./* WSA_QOS
3870: 5f 45 50 53 46 4c 4f 57 53 50 45 43 2c 09 09 69 _EPSFLOWSPEC,..i
3880: 6e 63 6f 6e 73 69 73 74 65 6e 74 20 66 6c 6f 77 nconsistent flow
3890: 20 73 70 65 63 20 69 6e 20 70 72 6f 76 69 64 65 spec in provide
38a0: 72 20 73 70 65 63 69 66 69 63 20 62 75 66 66 65 r specific buffe
38b0: 72 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e 56 41 r */.+ EINVA
38c0: 4c 2c 09 2f 2a 20 57 53 41 5f 51 4f 53 5f 45 50 L,./* WSA_QOS_EP
38d0: 53 46 49 4c 54 45 52 53 50 45 43 2c 09 69 6e 76 SFILTERSPEC,.inv
38e0: 61 6c 69 64 20 66 69 6c 74 65 72 20 73 70 65 63 alid filter spec
38f0: 20 69 6e 20 70 72 6f 76 69 64 65 72 20 73 70 65 in provider spe
3900: 63 69 66 69 63 20 62 75 66 66 65 72 20 2a 2f 0a cific buffer */.
3910: 2b 20 20 20 20 20 45 49 4e 56 41 4c 2c 09 2f 2a + EINVAL,./*
3920: 20 57 53 41 5f 51 4f 53 5f 45 53 44 4d 4f 44 45 WSA_QOS_ESDMODE
3930: 4f 42 4a 2c 09 09 69 6e 76 61 6c 69 64 20 73 68 OBJ,..invalid sh
3940: 61 70 65 20 64 69 73 63 61 72 64 20 6d 6f 64 65 ape discard mode
3950: 20 6f 62 6a 65 63 74 20 69 6e 20 70 72 6f 76 69 object in provi
3960: 64 65 72 20 73 70 65 63 69 66 69 63 20 62 75 66 der specific buf
3970: 66 65 72 20 2a 2f 0a 2b 20 20 20 20 20 45 49 4e fer */.+ EIN
3980: 56 41 4c 2c 09 2f 2a 20 57 53 41 5f 51 4f 53 5f VAL,./* WSA_QOS_
3990: 45 53 48 41 50 45 52 41 54 45 4f 42 4a 2c 09 69 ESHAPERATEOBJ,.i
39a0: 6e 76 61 6c 69 64 20 73 68 61 70 69 6e 67 20 72 nvalid shaping r
39b0: 61 74 65 20 6f 62 6a 65 63 74 20 69 6e 20 70 72 ate object in pr
39c0: 6f 76 69 64 65 72 20 73 70 65 63 69 66 69 63 20 ovider specific
39d0: 62 75 66 66 65 72 20 2a 2f 0a 2b 20 20 20 20 20 buffer */.+
39e0: 45 49 4e 56 41 4c 09 2f 2a 20 57 53 41 5f 51 4f EINVAL./* WSA_QO
39f0: 53 5f 52 45 53 45 52 56 45 44 5f 50 45 54 59 50 S_RESERVED_PETYP
3a00: 45 2c 09 72 65 73 65 72 76 65 64 20 70 6f 6c 69 E,.reserved poli
3a10: 63 79 20 65 6c 65 6d 65 6e 74 20 69 6e 20 70 72 cy element in pr
3a20: 6f 76 69 64 65 72 20 73 70 65 63 69 66 69 63 20 ovider specific
3a30: 62 75 66 66 65 72 20 2a 2f 0a 2b 20 7d 3b 0a 2b buffer */.+ };.+
3a40: 20 0a 20 20 0c 0a 20 20 2f 2a 0a 20 20 20 2a 2d . .. /*. *-
3a50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3a60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3a70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3a80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3a90: 2d 2d 2d 2d 2d 0a 20 20 20 2a 0a 21 20 20 2a 20 -----. *.! *
3aa0: 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 Tcl_WinConvertEr
3ab0: 72 6f 72 20 2d 2d 0a 20 20 20 2a 0a 20 20 20 2a ror --. *. *
3ac0: 09 54 68 69 73 20 72 6f 75 74 69 6e 65 20 63 6f .This routine co
3ad0: 6e 76 65 72 74 73 20 61 20 57 69 6e 33 32 20 65 nverts a Win32 e
3ae0: 72 72 6f 72 20 69 6e 74 6f 20 61 6e 20 65 72 72 rror into an err
3af0: 6e 6f 20 76 61 6c 75 65 2e 0a 20 20 20 2a 0a 2a no value.. *.*
3b00: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a **************.*
3b10: 2a 2a 20 33 35 34 2c 33 36 31 20 2a 2a 2a 2a 0a ** 354,361 ****.
3b20: 20 20 20 2a 2f 0a 20 20 0a 20 20 76 6f 69 64 0a */. . void.
3b30: 21 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 ! TclWinConvertE
3b40: 72 72 6f 72 28 65 72 72 43 6f 64 65 29 0a 21 20 rror(errCode).!
3b50: 20 20 20 20 44 57 4f 52 44 20 65 72 72 43 6f 64 DWORD errCod
3b60: 65 3b 09 09 2f 2a 20 57 69 6e 33 32 20 65 72 72 e;../* Win32 err
3b70: 6f 72 20 63 6f 64 65 2e 20 2a 2f 0a 20 20 7b 0a or code. */. {.
3b80: 20 20 20 20 20 20 69 66 20 28 65 72 72 43 6f 64 if (errCod
3b90: 65 20 3e 3d 20 74 61 62 6c 65 4c 65 6e 29 20 7b e >= tableLen) {
3ba0: 0a 20 20 09 54 63 6c 5f 53 65 74 45 72 72 6e 6f . .Tcl_SetErrno
3bb0: 28 45 49 4e 56 41 4c 29 3b 0a 2d 2d 2d 20 34 37 (EINVAL);.--- 47
3bc0: 37 2c 34 38 34 20 2d 2d 2d 2d 0a 20 20 20 2a 2f 7,484 ----. */
3bd0: 0a 20 20 0a 20 20 76 6f 69 64 0a 21 20 54 63 6c . . void.! Tcl
3be0: 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 _WinConvertError
3bf0: 28 0a 21 20 20 20 20 20 75 6e 73 69 67 6e 65 64 (.! unsigned
3c00: 20 6c 6f 6e 67 20 65 72 72 43 6f 64 65 29 09 09 long errCode)..
3c10: 2f 2a 20 57 69 6e 33 32 20 65 72 72 6f 72 20 63 /* Win32 error c
3c20: 6f 64 65 2e 20 2a 2f 0a 20 20 7b 0a 20 20 20 20 ode. */. {.
3c30: 20 20 69 66 20 28 65 72 72 43 6f 64 65 20 3e 3d if (errCode >=
3c40: 20 74 61 62 6c 65 4c 65 6e 29 20 7b 0a 20 20 09 tableLen) {. .
3c50: 54 63 6c 5f 53 65 74 45 72 72 6e 6f 28 45 49 4e Tcl_SetErrno(EIN
3c60: 56 41 4c 29 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a VAL);.**********
3c70: 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 33 36 37 2c 33 37 *****.*** 367,37
3c80: 33 20 2a 2a 2a 2a 0a 20 20 2f 2a 0a 20 20 20 2a 3 ****. /*. *
3c90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3ca0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3cb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3cc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3cd0: 2d 2d 2d 2d 2d 2d 0a 20 20 20 2a 0a 21 20 20 2a ------. *.! *
3ce0: 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 57 53 TclWinConvertWS
3cf0: 41 45 72 72 6f 72 20 2d 2d 0a 20 20 20 2a 0a 20 AError --. *.
3d00: 20 20 2a 09 54 68 69 73 20 72 6f 75 74 69 6e 65 *.This routine
3d10: 20 63 6f 6e 76 65 72 74 73 20 61 20 57 69 6e 53 converts a WinS
3d20: 6f 63 6b 20 65 72 72 6f 72 20 69 6e 74 6f 20 61 ock error into a
3d30: 6e 20 65 72 72 6e 6f 20 76 61 6c 75 65 2e 0a 20 n errno value..
3d40: 20 20 2a 0a 2d 2d 2d 20 34 39 30 2c 34 39 36 20 *.--- 490,496
3d50: 2d 2d 2d 2d 0a 20 20 2f 2a 0a 20 20 20 2a 2d 2d ----. /*. *--
3d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3d70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3d80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3d90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3da0: 2d 2d 2d 2d 0a 20 20 20 2a 0a 21 20 20 2a 20 54 ----. *.! * T
3db0: 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 57 53 41 cl_WinConvertWSA
3dc0: 45 72 72 6f 72 20 2d 2d 0a 20 20 20 2a 0a 20 20 Error --. *.
3dd0: 20 2a 09 54 68 69 73 20 72 6f 75 74 69 6e 65 20 *.This routine
3de0: 63 6f 6e 76 65 72 74 73 20 61 20 57 69 6e 53 6f converts a WinSo
3df0: 63 6b 20 65 72 72 6f 72 20 69 6e 74 6f 20 61 6e ck error into an
3e00: 20 65 72 72 6e 6f 20 76 61 6c 75 65 2e 0a 20 20 errno value..
3e10: 20 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a *.*************
3e20: 2a 2a 0a 2a 2a 2a 20 33 38 31 2c 33 39 31 20 2a **.*** 381,391 *
3e30: 2a 2a 2a 0a 20 20 20 2a 2f 0a 20 20 0a 20 20 76 ***. */. . v
3e40: 6f 69 64 0a 21 20 54 63 6c 57 69 6e 43 6f 6e 76 oid.! TclWinConv
3e50: 65 72 74 57 53 41 45 72 72 6f 72 28 65 72 72 43 ertWSAError(errC
3e60: 6f 64 65 29 0a 21 20 20 20 20 20 44 57 4f 52 44 ode).! DWORD
3e70: 20 65 72 72 43 6f 64 65 3b 09 09 2f 2a 20 57 69 errCode;../* Wi
3e80: 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 65 2e 20 n32 error code.
3e90: 2a 2f 0a 20 20 7b 0a 20 20 20 20 20 20 69 66 20 */. {. if
3ea0: 28 28 65 72 72 43 6f 64 65 20 3e 3d 20 57 53 41 ((errCode >= WSA
3eb0: 45 57 4f 55 4c 44 42 4c 4f 43 4b 29 20 26 26 20 EWOULDBLOCK) &&
3ec0: 28 65 72 72 43 6f 64 65 20 3c 3d 20 57 53 41 45 (errCode <= WSAE
3ed0: 52 45 4d 4f 54 45 29 29 20 7b 0a 21 20 09 54 63 REMOTE)) {.! .Tc
3ee0: 6c 5f 53 65 74 45 72 72 6e 6f 28 77 73 61 45 72 l_SetErrno(wsaEr
3ef0: 72 6f 72 54 61 62 6c 65 5b 65 72 72 43 6f 64 65 rorTable[errCode
3f00: 20 2d 20 57 53 41 45 57 4f 55 4c 44 42 4c 4f 43 - WSAEWOULDBLOC
3f10: 4b 5d 29 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 K]);. } els
3f20: 65 20 7b 0a 20 20 09 54 63 6c 5f 53 65 74 45 72 e {. .Tcl_SetEr
3f30: 72 6e 6f 28 45 49 4e 56 41 4c 29 3b 0a 20 20 20 rno(EINVAL);.
3f40: 20 20 20 7d 0a 2d 2d 2d 20 35 30 34 2c 35 31 38 }.--- 504,518
3f50: 20 2d 2d 2d 2d 0a 20 20 20 2a 2f 0a 20 20 0a 20 ----. */. .
3f60: 20 76 6f 69 64 0a 21 20 54 63 6c 5f 57 69 6e 43 void.! Tcl_WinC
3f70: 6f 6e 76 65 72 74 57 53 41 45 72 72 6f 72 28 0a onvertWSAError(.
3f80: 21 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20 6c ! unsigned l
3f90: 6f 6e 67 20 65 72 72 43 6f 64 65 29 09 09 2f 2a ong errCode)../*
3fa0: 20 57 69 6e 33 32 20 65 72 72 6f 72 20 63 6f 64 Win32 error cod
3fb0: 65 2e 20 2a 2f 0a 20 20 7b 0a 20 20 20 20 20 20 e. */. {.
3fc0: 69 66 20 28 28 65 72 72 43 6f 64 65 20 3e 3d 20 if ((errCode >=
3fd0: 57 53 41 45 57 4f 55 4c 44 42 4c 4f 43 4b 29 20 WSAEWOULDBLOCK)
3fe0: 26 26 20 28 65 72 72 43 6f 64 65 20 3c 3d 20 57 && (errCode <= W
3ff0: 53 41 45 52 45 4d 4f 54 45 29 29 20 7b 0a 21 20 SAEREMOTE)) {.!
4000: 09 54 63 6c 5f 53 65 74 45 72 72 6e 6f 28 77 73 .Tcl_SetErrno(ws
4010: 61 45 72 72 6f 72 54 61 62 6c 65 31 5b 65 72 72 aErrorTable1[err
4020: 43 6f 64 65 20 2d 20 57 53 41 45 57 4f 55 4c 44 Code - WSAEWOULD
4030: 42 4c 4f 43 4b 5d 29 3b 0a 21 20 20 20 20 20 7d BLOCK]);.! }
4040: 20 65 6c 73 65 20 69 66 20 28 28 65 72 72 43 6f else if ((errCo
4050: 64 65 20 3e 3d 20 57 53 41 53 59 53 4e 4f 54 52 de >= WSASYSNOTR
4060: 45 41 44 59 29 20 26 26 20 28 65 72 72 43 6f 64 EADY) && (errCod
4070: 65 20 3c 3d 20 57 53 41 45 52 45 46 55 53 45 44 e <= WSAEREFUSED
4080: 29 29 20 7b 0a 21 20 09 54 63 6c 5f 53 65 74 45 )) {.! .Tcl_SetE
4090: 72 72 6e 6f 28 77 73 61 45 72 72 6f 72 54 61 62 rrno(wsaErrorTab
40a0: 6c 65 32 5b 65 72 72 43 6f 64 65 20 2d 20 57 53 le2[errCode - WS
40b0: 41 53 59 53 4e 4f 54 52 45 41 44 59 5d 29 3b 0a ASYSNOTREADY]);.
40c0: 21 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 ! } else if
40d0: 28 28 65 72 72 43 6f 64 65 20 3e 3d 20 57 53 41 ((errCode >= WSA
40e0: 48 4f 53 54 5f 4e 4f 54 5f 46 4f 55 4e 44 29 20 HOST_NOT_FOUND)
40f0: 26 26 20 28 65 72 72 43 6f 64 65 20 3c 3d 20 57 && (errCode <= W
4100: 53 41 5f 51 4f 53 5f 52 45 53 45 52 56 45 44 5f SA_QOS_RESERVED_
4110: 50 45 54 59 50 45 29 29 20 7b 0a 21 20 09 54 63 PETYPE)) {.! .Tc
4120: 6c 5f 53 65 74 45 72 72 6e 6f 28 77 73 61 45 72 l_SetErrno(wsaEr
4130: 72 6f 72 54 61 62 6c 65 33 5b 65 72 72 43 6f 64 rorTable3[errCod
4140: 65 20 2d 20 57 53 41 48 4f 53 54 5f 4e 4f 54 5f e - WSAHOST_NOT_
4150: 46 4f 55 4e 44 5d 29 3b 0a 20 20 20 20 20 20 7d FOUND]);. }
4160: 20 65 6c 73 65 20 7b 0a 20 20 09 54 63 6c 5f 53 else {. .Tcl_S
4170: 65 74 45 72 72 6e 6f 28 45 49 4e 56 41 4c 29 3b etErrno(EINVAL);
4180: 0a 20 20 20 20 20 20 7d 0a 0a 2a 2a 2a 20 77 69 . }..*** wi
4190: 6e 2f 74 63 6c 57 69 6e 46 43 6d 64 2e 63 09 32 n/tclWinFCmd.c.2
41a0: 20 4a 75 6e 20 32 30 30 33 20 31 35 3a 35 38 3a Jun 2003 15:58:
41b0: 34 37 20 2d 30 30 30 30 09 31 2e 33 36 0a 2d 2d 47 -0000.1.36.--
41c0: 2d 20 77 69 6e 2f 74 63 6c 57 69 6e 46 43 6d 64 - win/tclWinFCmd
41d0: 2e 63 09 34 20 53 65 70 20 32 30 30 33 20 32 31 .c.4 Sep 2003 21
41e0: 3a 32 30 3a 34 39 20 2d 30 30 30 30 0a 2a 2a 2a :20:49 -0000.***
41f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a ************.***
4200: 20 32 35 33 2c 32 35 39 20 2a 2a 2a 2a 0a 20 20 253,259 ****.
4210: 20 20 20 20 69 66 20 28 72 65 74 76 61 6c 20 21 if (retval !
4220: 3d 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 = -1).
4230: 72 65 74 75 72 6e 20 72 65 74 76 61 6c 3b 0a 20 return retval;.
4240: 20 0a 21 20 20 20 20 20 54 63 6c 57 69 6e 43 6f .! TclWinCo
4250: 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 nvertError(GetLa
4260: 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 0a 20 stError());. .
4270: 20 20 20 20 20 73 72 63 41 74 74 72 20 3d 20 28 srcAttr = (
4280: 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d 3e 67 65 *tclWinProcs->ge
4290: 74 46 69 6c 65 41 74 74 72 69 62 75 74 65 73 50 tFileAttributesP
42a0: 72 6f 63 29 28 6e 61 74 69 76 65 53 72 63 29 3b roc)(nativeSrc);
42b0: 0a 20 20 20 20 20 20 64 73 74 41 74 74 72 20 3d . dstAttr =
42c0: 20 28 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d 3e (*tclWinProcs->
42d0: 67 65 74 46 69 6c 65 41 74 74 72 69 62 75 74 65 getFileAttribute
42e0: 73 50 72 6f 63 29 28 6e 61 74 69 76 65 44 73 74 sProc)(nativeDst
42f0: 29 3b 0a 2d 2d 2d 20 32 35 33 2c 32 35 39 20 2d );.--- 253,259 -
4300: 2d 2d 2d 0a 20 20 20 20 20 20 69 66 20 28 72 65 ---. if (re
4310: 74 76 61 6c 20 21 3d 20 2d 31 29 0a 20 20 20 20 tval != -1).
4320: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 return ret
4330: 76 61 6c 3b 0a 20 20 0a 21 20 20 20 20 20 54 63 val;. .! Tc
4340: 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f l_WinConvertErro
4350: 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 r(GetLastError()
4360: 29 3b 0a 20 20 0a 20 20 20 20 20 20 73 72 63 41 );. . srcA
4370: 74 74 72 20 3d 20 28 2a 74 63 6c 57 69 6e 50 72 ttr = (*tclWinPr
4380: 6f 63 73 2d 3e 67 65 74 46 69 6c 65 41 74 74 72 ocs->getFileAttr
4390: 69 62 75 74 65 73 50 72 6f 63 29 28 6e 61 74 69 ibutesProc)(nati
43a0: 76 65 53 72 63 29 3b 0a 20 20 20 20 20 20 64 73 veSrc);. ds
43b0: 74 41 74 74 72 20 3d 20 28 2a 74 63 6c 57 69 6e tAttr = (*tclWin
43c0: 50 72 6f 63 73 2d 3e 67 65 74 46 69 6c 65 41 74 Procs->getFileAt
43d0: 74 72 69 62 75 74 65 73 50 72 6f 63 29 28 6e 61 tributesProc)(na
43e0: 74 69 76 65 44 73 74 29 3b 0a 2a 2a 2a 2a 2a 2a tiveDst);.******
43f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 33 38 *********.*** 38
4400: 39 2c 33 39 35 20 2a 2a 2a 2a 0a 20 20 09 09 20 9,395 ****. ..
4410: 20 20 20 20 2a 20 63 6f 75 6c 64 20 62 65 2c 20 * could be,
4420: 62 75 74 20 72 65 70 6f 72 74 20 74 68 69 73 20 but report this
4430: 6f 6e 65 2e 0a 20 20 09 09 20 20 20 20 20 2a 2f one.. .. */
4440: 0a 20 20 0a 21 20 09 09 20 20 20 20 54 63 6c 57 . .! .. TclW
4450: 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 inConvertError(G
4460: 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a etLastError());.
4470: 20 20 09 09 20 20 20 20 28 2a 74 63 6c 57 69 6e .. (*tclWin
4480: 50 72 6f 63 73 2d 3e 63 72 65 61 74 65 44 69 72 Procs->createDir
4490: 65 63 74 6f 72 79 50 72 6f 63 29 28 6e 61 74 69 ectoryProc)(nati
44a0: 76 65 44 73 74 2c 20 4e 55 4c 4c 29 3b 0a 20 20 veDst, NULL);.
44b0: 09 09 20 20 20 20 28 2a 74 63 6c 57 69 6e 50 72 .. (*tclWinPr
44c0: 6f 63 73 2d 3e 73 65 74 46 69 6c 65 41 74 74 72 ocs->setFileAttr
44d0: 69 62 75 74 65 73 50 72 6f 63 29 28 6e 61 74 69 ibutesProc)(nati
44e0: 76 65 44 73 74 2c 20 64 73 74 41 74 74 72 29 3b veDst, dstAttr);
44f0: 0a 20 20 09 09 20 20 20 20 69 66 20 28 54 63 6c . .. if (Tcl
4500: 5f 47 65 74 45 72 72 6e 6f 28 29 20 3d 3d 20 45 _GetErrno() == E
4510: 41 43 43 45 53 29 20 7b 0a 2d 2d 2d 20 33 38 39 ACCES) {.--- 389
4520: 2c 33 39 35 20 2d 2d 2d 2d 0a 20 20 09 09 20 20 ,395 ----. ..
4530: 20 20 20 2a 20 63 6f 75 6c 64 20 62 65 2c 20 62 * could be, b
4540: 75 74 20 72 65 70 6f 72 74 20 74 68 69 73 20 6f ut report this o
4550: 6e 65 2e 0a 20 20 09 09 20 20 20 20 20 2a 2f 0a ne.. .. */.
4560: 20 20 0a 21 20 09 09 20 20 20 20 54 63 6c 5f 57 .! .. Tcl_W
4570: 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 inConvertError(G
4580: 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a etLastError());.
4590: 20 20 09 09 20 20 20 20 28 2a 74 63 6c 57 69 6e .. (*tclWin
45a0: 50 72 6f 63 73 2d 3e 63 72 65 61 74 65 44 69 72 Procs->createDir
45b0: 65 63 74 6f 72 79 50 72 6f 63 29 28 6e 61 74 69 ectoryProc)(nati
45c0: 76 65 44 73 74 2c 20 4e 55 4c 4c 29 3b 0a 20 20 veDst, NULL);.
45d0: 09 09 20 20 20 20 28 2a 74 63 6c 57 69 6e 50 72 .. (*tclWinPr
45e0: 6f 63 73 2d 3e 73 65 74 46 69 6c 65 41 74 74 72 ocs->setFileAttr
45f0: 69 62 75 74 65 73 50 72 6f 63 29 28 6e 61 74 69 ibutesProc)(nati
4600: 76 65 44 73 74 2c 20 64 73 74 41 74 74 72 29 3b veDst, dstAttr);
4610: 0a 20 20 09 09 20 20 20 20 69 66 20 28 54 63 6c . .. if (Tcl
4620: 5f 47 65 74 45 72 72 6e 6f 28 29 20 3d 3d 20 45 _GetErrno() == E
4630: 41 43 43 45 53 29 20 7b 0a 2a 2a 2a 2a 2a 2a 2a ACCES) {.*******
4640: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 34 36 30 ********.*** 460
4650: 2c 34 36 36 20 2a 2a 2a 2a 0a 20 20 09 09 20 20 ,466 ****. ..
4660: 20 20 20 2a 20 65 72 72 6f 72 2e 20 20 43 6f 75 * error. Cou
4670: 6c 64 20 68 61 70 70 65 6e 20 69 66 20 61 6e 20 ld happen if an
4680: 6f 70 65 6e 20 66 69 6c 65 20 72 65 66 65 72 73 open file refers
4690: 20 74 6f 20 64 73 74 2e 0a 20 20 09 09 20 20 20 to dst.. ..
46a0: 20 20 2a 2f 0a 20 20 0a 21 20 09 09 20 20 20 20 */. .! ..
46b0: 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 TclWinConvertErr
46c0: 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 or(GetLastError(
46d0: 29 29 3b 0a 20 20 09 09 20 20 20 20 69 66 20 28 ));. .. if (
46e0: 54 63 6c 5f 47 65 74 45 72 72 6e 6f 28 29 20 3d Tcl_GetErrno() =
46f0: 3d 20 45 41 43 43 45 53 29 20 7b 0a 20 20 09 09 = EACCES) {. ..
4700: 09 2f 2a 0a 20 20 09 09 09 20 2a 20 44 65 63 6f ./*. ... * Deco
4710: 64 65 20 74 68 65 20 45 41 43 43 45 53 20 74 6f de the EACCES to
4720: 20 61 20 6d 6f 72 65 20 6d 65 61 6e 69 6e 67 66 a more meaningf
4730: 75 6c 20 65 72 72 6f 72 2e 0a 2d 2d 2d 20 34 36 ul error..--- 46
4740: 30 2c 34 36 36 20 2d 2d 2d 2d 0a 20 20 09 09 20 0,466 ----. ..
4750: 20 20 20 20 2a 20 65 72 72 6f 72 2e 20 20 43 6f * error. Co
4760: 75 6c 64 20 68 61 70 70 65 6e 20 69 66 20 61 6e uld happen if an
4770: 20 6f 70 65 6e 20 66 69 6c 65 20 72 65 66 65 72 open file refer
4780: 73 20 74 6f 20 64 73 74 2e 0a 20 20 09 09 20 20 s to dst.. ..
4790: 20 20 20 2a 2f 0a 20 20 0a 21 20 09 09 20 20 20 */. .! ..
47a0: 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 Tcl_WinConvertE
47b0: 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f rror(GetLastErro
47c0: 72 28 29 29 3b 0a 20 20 09 09 20 20 20 20 69 66 r());. .. if
47d0: 20 28 54 63 6c 5f 47 65 74 45 72 72 6e 6f 28 29 (Tcl_GetErrno()
47e0: 20 3d 3d 20 45 41 43 43 45 53 29 20 7b 0a 20 20 == EACCES) {.
47f0: 09 09 09 2f 2a 0a 20 20 09 09 09 20 2a 20 44 65 .../*. ... * De
4800: 63 6f 64 65 20 74 68 65 20 45 41 43 43 45 53 20 code the EACCES
4810: 74 6f 20 61 20 6d 6f 72 65 20 6d 65 61 6e 69 6e to a more meanin
4820: 67 66 75 6c 20 65 72 72 6f 72 2e 0a 2a 2a 2a 2a gful error..****
4830: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 ***********.***
4840: 36 31 35 2c 36 32 31 20 2a 2a 2a 2a 0a 20 20 20 615,621 ****.
4850: 20 20 20 69 66 20 28 72 65 74 76 61 6c 20 21 3d if (retval !=
4860: 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 20 72 -1). r
4870: 65 74 75 72 6e 20 72 65 74 76 61 6c 3b 0a 20 20 eturn retval;.
4880: 0a 21 20 20 20 20 20 54 63 6c 57 69 6e 43 6f 6e .! TclWinCon
4890: 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 vertError(GetLas
48a0: 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 20 20 20 tError());.
48b0: 20 69 66 20 28 54 63 6c 5f 47 65 74 45 72 72 6e if (Tcl_GetErrn
48c0: 6f 28 29 20 3d 3d 20 45 42 41 44 46 29 20 7b 0a o() == EBADF) {.
48d0: 20 20 09 54 63 6c 5f 53 65 74 45 72 72 6e 6f 28 .Tcl_SetErrno(
48e0: 45 41 43 43 45 53 29 3b 0a 20 20 09 72 65 74 75 EACCES);. .retu
48f0: 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 2d 2d rn TCL_ERROR;.--
4900: 2d 20 36 31 35 2c 36 32 31 20 2d 2d 2d 2d 0a 20 - 615,621 ----.
4910: 20 20 20 20 20 69 66 20 28 72 65 74 76 61 6c 20 if (retval
4920: 21 3d 20 2d 31 29 0a 20 20 20 20 20 20 20 20 20 != -1).
4930: 20 72 65 74 75 72 6e 20 72 65 74 76 61 6c 3b 0a return retval;.
4940: 20 20 0a 21 20 20 20 20 20 54 63 6c 5f 57 69 6e .! Tcl_Win
4950: 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 ConvertError(Get
4960: 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 LastError());.
4970: 20 20 20 20 69 66 20 28 54 63 6c 5f 47 65 74 45 if (Tcl_GetE
4980: 72 72 6e 6f 28 29 20 3d 3d 20 45 42 41 44 46 29 rrno() == EBADF)
4990: 20 7b 0a 20 20 09 54 63 6c 5f 53 65 74 45 72 72 {. .Tcl_SetErr
49a0: 6e 6f 28 45 41 43 43 45 53 29 3b 0a 20 20 09 72 no(EACCES);. .r
49b0: 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b eturn TCL_ERROR;
49c0: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
49d0: 0a 2a 2a 2a 20 36 35 30 2c 36 35 36 20 2a 2a 2a .*** 650,656 ***
49e0: 2a 0a 20 20 09 09 20 2a 20 72 65 73 74 6f 72 65 *. .. * restore
49f0: 20 61 74 74 72 69 62 75 74 65 73 20 6f 66 20 64 attributes of d
4a00: 73 74 2e 0a 20 20 09 09 20 2a 2f 0a 20 20 0a 21 st.. .. */. .!
4a10: 20 09 09 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 ..TclWinConvert
4a20: 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 Error(GetLastErr
4a30: 6f 72 28 29 29 3b 0a 20 20 09 09 28 2a 74 63 6c or());. ..(*tcl
4a40: 57 69 6e 50 72 6f 63 73 2d 3e 73 65 74 46 69 6c WinProcs->setFil
4a50: 65 41 74 74 72 69 62 75 74 65 73 50 72 6f 63 29 eAttributesProc)
4a60: 28 6e 61 74 69 76 65 44 73 74 2c 20 64 73 74 41 (nativeDst, dstA
4a70: 74 74 72 29 3b 0a 20 20 09 20 20 20 20 7d 0a 20 ttr);. . }.
4a80: 20 09 7d 0a 2d 2d 2d 20 36 35 30 2c 36 35 36 20 .}.--- 650,656
4a90: 2d 2d 2d 2d 0a 20 20 09 09 20 2a 20 72 65 73 74 ----. .. * rest
4aa0: 6f 72 65 20 61 74 74 72 69 62 75 74 65 73 20 6f ore attributes o
4ab0: 66 20 64 73 74 2e 0a 20 20 09 09 20 2a 2f 0a 20 f dst.. .. */.
4ac0: 20 0a 21 20 09 09 54 63 6c 5f 57 69 6e 43 6f 6e .! ..Tcl_WinCon
4ad0: 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 vertError(GetLas
4ae0: 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 09 28 tError());. ..(
4af0: 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d 3e 73 65 *tclWinProcs->se
4b00: 74 46 69 6c 65 41 74 74 72 69 62 75 74 65 73 50 tFileAttributesP
4b10: 72 6f 63 29 28 6e 61 74 69 76 65 44 73 74 2c 20 roc)(nativeDst,
4b20: 64 73 74 41 74 74 72 29 3b 0a 20 20 09 20 20 20 dstAttr);. .
4b30: 20 7d 0a 20 20 09 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a }. .}.********
4b40: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 37 32 35 2c *******.*** 725,
4b50: 37 33 31 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 69 731 ****. i
4b60: 66 20 28 28 2a 74 63 6c 57 69 6e 50 72 6f 63 73 f ((*tclWinProcs
4b70: 2d 3e 64 65 6c 65 74 65 46 69 6c 65 50 72 6f 63 ->deleteFileProc
4b80: 29 28 6e 61 74 69 76 65 50 61 74 68 29 20 21 3d )(nativePath) !=
4b90: 20 46 41 4c 53 45 29 20 7b 0a 20 20 09 72 65 74 FALSE) {. .ret
4ba0: 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 urn TCL_OK;.
4bb0: 20 20 7d 0a 21 20 20 20 20 20 54 63 6c 57 69 6e }.! TclWin
4bc0: 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 ConvertError(Get
4bd0: 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 LastError());.
4be0: 0a 20 20 20 20 20 20 69 66 20 28 54 63 6c 5f 47 . if (Tcl_G
4bf0: 65 74 45 72 72 6e 6f 28 29 20 3d 3d 20 45 41 43 etErrno() == EAC
4c00: 43 45 53 29 20 7b 0a 20 20 20 20 20 20 20 20 20 CES) {.
4c10: 20 61 74 74 72 20 3d 20 28 2a 74 63 6c 57 69 6e attr = (*tclWin
4c20: 50 72 6f 63 73 2d 3e 67 65 74 46 69 6c 65 41 74 Procs->getFileAt
4c30: 74 72 69 62 75 74 65 73 50 72 6f 63 29 28 6e 61 tributesProc)(na
4c40: 74 69 76 65 50 61 74 68 29 3b 0a 2d 2d 2d 20 37 tivePath);.--- 7
4c50: 32 35 2c 37 33 31 20 2d 2d 2d 2d 0a 20 20 20 20 25,731 ----.
4c60: 20 20 69 66 20 28 28 2a 74 63 6c 57 69 6e 50 72 if ((*tclWinPr
4c70: 6f 63 73 2d 3e 64 65 6c 65 74 65 46 69 6c 65 50 ocs->deleteFileP
4c80: 72 6f 63 29 28 6e 61 74 69 76 65 50 61 74 68 29 roc)(nativePath)
4c90: 20 21 3d 20 46 41 4c 53 45 29 20 7b 0a 20 20 09 != FALSE) {. .
4ca0: 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 20 return TCL_OK;.
4cb0: 20 20 20 20 20 7d 0a 21 20 20 20 20 20 54 63 6c }.! Tcl
4cc0: 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 _WinConvertError
4cd0: 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 (GetLastError())
4ce0: 3b 0a 20 20 0a 20 20 20 20 20 20 69 66 20 28 54 ;. . if (T
4cf0: 63 6c 5f 47 65 74 45 72 72 6e 6f 28 29 20 3d 3d cl_GetErrno() ==
4d00: 20 45 41 43 43 45 53 29 20 7b 0a 20 20 20 20 20 EACCES) {.
4d10: 20 20 20 20 20 61 74 74 72 20 3d 20 28 2a 74 63 attr = (*tc
4d20: 6c 57 69 6e 50 72 6f 63 73 2d 3e 67 65 74 46 69 lWinProcs->getFi
4d30: 6c 65 41 74 74 72 69 62 75 74 65 73 50 72 6f 63 leAttributesProc
4d40: 29 28 6e 61 74 69 76 65 50 61 74 68 29 3b 0a 2a )(nativePath);.*
4d50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a **************.*
4d60: 2a 2a 20 37 35 33 2c 37 35 39 20 2a 2a 2a 2a 0a ** 753,759 ****.
4d70: 20 20 09 09 09 21 3d 20 46 41 4c 53 45 29 29 20 ...!= FALSE))
4d80: 7b 0a 20 20 09 09 20 20 20 20 72 65 74 75 72 6e {. .. return
4d90: 20 54 43 4c 5f 4f 4b 3b 0a 20 20 09 09 7d 0a 21 TCL_OK;. ..}.!
4da0: 20 09 09 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 ..TclWinConvert
4db0: 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 Error(GetLastErr
4dc0: 6f 72 28 29 29 3b 0a 20 20 09 09 69 66 20 28 72 or());. ..if (r
4dd0: 65 73 20 21 3d 20 30 29 20 7b 0a 20 20 09 09 20 es != 0) {. ..
4de0: 20 20 20 28 2a 74 63 6c 57 69 6e 50 72 6f 63 73 (*tclWinProcs
4df0: 2d 3e 73 65 74 46 69 6c 65 41 74 74 72 69 62 75 ->setFileAttribu
4e00: 74 65 73 50 72 6f 63 29 28 6e 61 74 69 76 65 50 tesProc)(nativeP
4e10: 61 74 68 2c 20 61 74 74 72 29 3b 0a 20 20 09 09 ath, attr);. ..
4e20: 7d 0a 2d 2d 2d 20 37 35 33 2c 37 35 39 20 2d 2d }.--- 753,759 --
4e30: 2d 2d 0a 20 20 09 09 09 21 3d 20 46 41 4c 53 45 --. ...!= FALSE
4e40: 29 29 20 7b 0a 20 20 09 09 20 20 20 20 72 65 74 )) {. .. ret
4e50: 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 20 20 09 09 urn TCL_OK;. ..
4e60: 7d 0a 21 20 09 09 54 63 6c 5f 57 69 6e 43 6f 6e }.! ..Tcl_WinCon
4e70: 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 vertError(GetLas
4e80: 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 09 69 tError());. ..i
4e90: 66 20 28 72 65 73 20 21 3d 20 30 29 20 7b 0a 20 f (res != 0) {.
4ea0: 20 09 09 20 20 20 20 28 2a 74 63 6c 57 69 6e 50 .. (*tclWinP
4eb0: 72 6f 63 73 2d 3e 73 65 74 46 69 6c 65 41 74 74 rocs->setFileAtt
4ec0: 72 69 62 75 74 65 73 50 72 6f 63 29 28 6e 61 74 ributesProc)(nat
4ed0: 69 76 65 50 61 74 68 2c 20 61 74 74 72 29 3b 0a ivePath, attr);.
4ee0: 20 20 09 09 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ..}.**********
4ef0: 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 38 32 32 2c 38 32 *****.*** 822,82
4f00: 38 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 44 57 4f 8 ****. DWO
4f10: 52 44 20 65 72 72 6f 72 3b 0a 20 20 20 20 20 20 RD error;.
4f20: 69 66 20 28 28 2a 74 63 6c 57 69 6e 50 72 6f 63 if ((*tclWinProc
4f30: 73 2d 3e 63 72 65 61 74 65 44 69 72 65 63 74 6f s->createDirecto
4f40: 72 79 50 72 6f 63 29 28 6e 61 74 69 76 65 50 61 ryProc)(nativePa
4f50: 74 68 2c 20 4e 55 4c 4c 29 20 3d 3d 20 30 29 20 th, NULL) == 0)
4f60: 7b 0a 20 20 09 65 72 72 6f 72 20 3d 20 47 65 74 {. .error = Get
4f70: 4c 61 73 74 45 72 72 6f 72 28 29 3b 0a 21 20 09 LastError();.! .
4f80: 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 TclWinConvertErr
4f90: 6f 72 28 65 72 72 6f 72 29 3b 0a 20 20 09 72 65 or(error);. .re
4fa0: 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f 52 3b 0a turn TCL_ERROR;.
4fb0: 20 20 20 20 20 20 7d 20 20 20 0a 20 20 20 20 20 } .
4fc0: 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a return TCL_OK;.
4fd0: 2d 2d 2d 20 38 32 32 2c 38 32 38 20 2d 2d 2d 2d --- 822,828 ----
4fe0: 0a 20 20 20 20 20 20 44 57 4f 52 44 20 65 72 72 . DWORD err
4ff0: 6f 72 3b 0a 20 20 20 20 20 20 69 66 20 28 28 2a or;. if ((*
5000: 74 63 6c 57 69 6e 50 72 6f 63 73 2d 3e 63 72 65 tclWinProcs->cre
5010: 61 74 65 44 69 72 65 63 74 6f 72 79 50 72 6f 63 ateDirectoryProc
5020: 29 28 6e 61 74 69 76 65 50 61 74 68 2c 20 4e 55 )(nativePath, NU
5030: 4c 4c 29 20 3d 3d 20 30 29 20 7b 0a 20 20 09 65 LL) == 0) {. .e
5040: 72 72 6f 72 20 3d 20 47 65 74 4c 61 73 74 45 72 rror = GetLastEr
5050: 72 6f 72 28 29 3b 0a 21 20 09 54 63 6c 5f 57 69 ror();.! .Tcl_Wi
5060: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 65 72 nConvertError(er
5070: 72 6f 72 29 3b 0a 20 20 09 72 65 74 75 72 6e 20 ror);. .return
5080: 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 20 20 20 20 TCL_ERROR;.
5090: 20 7d 20 20 20 0a 20 20 20 20 20 20 72 65 74 75 } . retu
50a0: 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 2a 2a 2a 2a 2a rn TCL_OK;.*****
50b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 39 **********.*** 9
50c0: 36 39 2c 39 37 35 20 2a 2a 2a 2a 0a 20 20 20 20 69,975 ****.
50d0: 20 20 69 66 20 28 28 2a 74 63 6c 57 69 6e 50 72 if ((*tclWinPr
50e0: 6f 63 73 2d 3e 72 65 6d 6f 76 65 44 69 72 65 63 ocs->removeDirec
50f0: 74 6f 72 79 50 72 6f 63 29 28 6e 61 74 69 76 65 toryProc)(native
5100: 50 61 74 68 29 20 21 3d 20 46 41 4c 53 45 29 20 Path) != FALSE)
5110: 7b 0a 20 20 09 72 65 74 75 72 6e 20 54 43 4c 5f {. .return TCL_
5120: 4f 4b 3b 0a 20 20 20 20 20 20 7d 0a 21 20 20 20 OK;. }.!
5130: 20 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 TclWinConvertE
5140: 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f rror(GetLastErro
5150: 72 28 29 29 3b 0a 20 20 0a 20 20 20 20 20 20 69 r());. . i
5160: 66 20 28 54 63 6c 5f 47 65 74 45 72 72 6e 6f 28 f (Tcl_GetErrno(
5170: 29 20 3d 3d 20 45 41 43 43 45 53 29 20 7b 0a 20 ) == EACCES) {.
5180: 20 09 44 57 4f 52 44 20 61 74 74 72 20 3d 20 28 .DWORD attr = (
5190: 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d 3e 67 65 *tclWinProcs->ge
51a0: 74 46 69 6c 65 41 74 74 72 69 62 75 74 65 73 50 tFileAttributesP
51b0: 72 6f 63 29 28 6e 61 74 69 76 65 50 61 74 68 29 roc)(nativePath)
51c0: 3b 0a 2d 2d 2d 20 39 36 39 2c 39 37 35 20 2d 2d ;.--- 969,975 --
51d0: 2d 2d 0a 20 20 20 20 20 20 69 66 20 28 28 2a 74 --. if ((*t
51e0: 63 6c 57 69 6e 50 72 6f 63 73 2d 3e 72 65 6d 6f clWinProcs->remo
51f0: 76 65 44 69 72 65 63 74 6f 72 79 50 72 6f 63 29 veDirectoryProc)
5200: 28 6e 61 74 69 76 65 50 61 74 68 29 20 21 3d 20 (nativePath) !=
5210: 46 41 4c 53 45 29 20 7b 0a 20 20 09 72 65 74 75 FALSE) {. .retu
5220: 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 20 20 20 20 20 rn TCL_OK;.
5230: 20 7d 0a 21 20 20 20 20 20 54 63 6c 5f 57 69 6e }.! Tcl_Win
5240: 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 ConvertError(Get
5250: 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 LastError());.
5260: 0a 20 20 20 20 20 20 69 66 20 28 54 63 6c 5f 47 . if (Tcl_G
5270: 65 74 45 72 72 6e 6f 28 29 20 3d 3d 20 45 41 43 etErrno() == EAC
5280: 43 45 53 29 20 7b 0a 20 20 09 44 57 4f 52 44 20 CES) {. .DWORD
5290: 61 74 74 72 20 3d 20 28 2a 74 63 6c 57 69 6e 50 attr = (*tclWinP
52a0: 72 6f 63 73 2d 3e 67 65 74 46 69 6c 65 41 74 74 rocs->getFileAtt
52b0: 72 69 62 75 74 65 73 50 72 6f 63 29 28 6e 61 74 ributesProc)(nat
52c0: 69 76 65 50 61 74 68 29 3b 0a 2a 2a 2a 2a 2a 2a ivePath);.******
52d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 39 39 *********.*** 99
52e0: 39 2c 31 30 30 35 20 2a 2a 2a 2a 0a 20 20 09 09 9,1005 ****. ..
52f0: 69 66 20 28 28 2a 74 63 6c 57 69 6e 50 72 6f 63 if ((*tclWinProc
5300: 73 2d 3e 72 65 6d 6f 76 65 44 69 72 65 63 74 6f s->removeDirecto
5310: 72 79 50 72 6f 63 29 28 6e 61 74 69 76 65 50 61 ryProc)(nativePa
5320: 74 68 29 20 21 3d 20 46 41 4c 53 45 29 20 7b 0a th) != FALSE) {.
5330: 20 20 09 09 20 20 20 20 72 65 74 75 72 6e 20 54 .. return T
5340: 43 4c 5f 4f 4b 3b 0a 20 20 09 09 7d 0a 21 20 09 CL_OK;. ..}.! .
5350: 09 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 .TclWinConvertEr
5360: 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 ror(GetLastError
5370: 28 29 29 3b 0a 20 20 09 09 28 2a 74 63 6c 57 69 ());. ..(*tclWi
5380: 6e 50 72 6f 63 73 2d 3e 73 65 74 46 69 6c 65 41 nProcs->setFileA
5390: 74 74 72 69 62 75 74 65 73 50 72 6f 63 29 28 6e ttributesProc)(n
53a0: 61 74 69 76 65 50 61 74 68 2c 20 0a 20 20 09 09 ativePath, . ..
53b0: 09 61 74 74 72 20 7c 20 46 49 4c 45 5f 41 54 54 .attr | FILE_ATT
53c0: 52 49 42 55 54 45 5f 52 45 41 44 4f 4e 4c 59 29 RIBUTE_READONLY)
53d0: 3b 0a 20 20 09 20 20 20 20 7d 0a 2d 2d 2d 20 39 ;. . }.--- 9
53e0: 39 39 2c 31 30 30 35 20 2d 2d 2d 2d 0a 20 20 09 99,1005 ----. .
53f0: 09 69 66 20 28 28 2a 74 63 6c 57 69 6e 50 72 6f .if ((*tclWinPro
5400: 63 73 2d 3e 72 65 6d 6f 76 65 44 69 72 65 63 74 cs->removeDirect
5410: 6f 72 79 50 72 6f 63 29 28 6e 61 74 69 76 65 50 oryProc)(nativeP
5420: 61 74 68 29 20 21 3d 20 46 41 4c 53 45 29 20 7b ath) != FALSE) {
5430: 0a 20 20 09 09 20 20 20 20 72 65 74 75 72 6e 20 . .. return
5440: 54 43 4c 5f 4f 4b 3b 0a 20 20 09 09 7d 0a 21 20 TCL_OK;. ..}.!
5450: 09 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 ..Tcl_WinConvert
5460: 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 Error(GetLastErr
5470: 6f 72 28 29 29 3b 0a 20 20 09 09 28 2a 74 63 6c or());. ..(*tcl
5480: 57 69 6e 50 72 6f 63 73 2d 3e 73 65 74 46 69 6c WinProcs->setFil
5490: 65 41 74 74 72 69 62 75 74 65 73 50 72 6f 63 29 eAttributesProc)
54a0: 28 6e 61 74 69 76 65 50 61 74 68 2c 20 0a 20 20 (nativePath, .
54b0: 09 09 09 61 74 74 72 20 7c 20 46 49 4c 45 5f 41 ...attr | FILE_A
54c0: 54 54 52 49 42 55 54 45 5f 52 45 41 44 4f 4e 4c TTRIBUTE_READONL
54d0: 59 29 3b 0a 20 20 09 20 20 20 20 7d 0a 2a 2a 2a Y);. . }.***
54e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a ************.***
54f0: 20 31 31 37 34 2c 31 31 38 30 20 2a 2a 2a 2a 0a 1174,1180 ****.
5500: 20 20 09 20 2a 20 43 61 6e 27 74 20 72 65 61 64 . * Can't read
5510: 20 64 69 72 65 63 74 6f 72 79 0a 20 20 09 20 2a directory. . *
5520: 2f 0a 20 20 0a 21 20 09 54 63 6c 57 69 6e 43 6f /. .! .TclWinCo
5530: 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 nvertError(GetLa
5540: 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 6e stError());. .n
5550: 61 74 69 76 65 45 72 72 66 69 6c 65 20 3d 20 6e ativeErrfile = n
5560: 61 74 69 76 65 53 6f 75 72 63 65 3b 0a 20 20 09 ativeSource;. .
5570: 67 6f 74 6f 20 65 6e 64 3b 0a 20 20 20 20 20 20 goto end;.
5580: 7d 0a 2d 2d 2d 20 31 31 37 34 2c 31 31 38 30 20 }.--- 1174,1180
5590: 2d 2d 2d 2d 0a 20 20 09 20 2a 20 43 61 6e 27 74 ----. . * Can't
55a0: 20 72 65 61 64 20 64 69 72 65 63 74 6f 72 79 0a read directory.
55b0: 20 20 09 20 2a 2f 0a 20 20 0a 21 20 09 54 63 6c . */. .! .Tcl
55c0: 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 _WinConvertError
55d0: 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 (GetLastError())
55e0: 3b 0a 20 20 09 6e 61 74 69 76 65 45 72 72 66 69 ;. .nativeErrfi
55f0: 6c 65 20 3d 20 6e 61 74 69 76 65 53 6f 75 72 63 le = nativeSourc
5600: 65 3b 0a 20 20 09 67 6f 74 6f 20 65 6e 64 3b 0a e;. .goto end;.
5610: 20 20 20 20 20 20 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a }.********
5620: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 32 38 39 *******.*** 1289
5630: 2c 31 32 39 35 20 2a 2a 2a 2a 0a 20 20 20 20 20 ,1295 ****.
5640: 20 7d 0a 20 20 20 20 20 20 65 6e 64 3a 0a 20 20 }. end:.
5650: 20 20 20 20 69 66 20 28 6e 61 74 69 76 65 45 72 if (nativeEr
5660: 72 66 69 6c 65 20 21 3d 20 4e 55 4c 4c 29 20 7b rfile != NULL) {
5670: 0a 21 20 09 54 63 6c 57 69 6e 43 6f 6e 76 65 72 .! .TclWinConver
5680: 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 tError(GetLastEr
5690: 72 6f 72 28 29 29 3b 0a 20 20 09 69 66 20 28 65 ror());. .if (e
56a0: 72 72 6f 72 50 74 72 20 21 3d 20 4e 55 4c 4c 29 rrorPtr != NULL)
56b0: 20 7b 0a 20 20 09 20 20 20 20 54 63 6c 5f 57 69 {. . Tcl_Wi
56c0: 6e 54 43 68 61 72 54 6f 55 74 66 28 6e 61 74 69 nTCharToUtf(nati
56d0: 76 65 45 72 72 66 69 6c 65 2c 20 2d 31 2c 20 65 veErrfile, -1, e
56e0: 72 72 6f 72 50 74 72 29 3b 0a 20 20 09 7d 0a 2d rrorPtr);. .}.-
56f0: 2d 2d 20 31 32 38 39 2c 31 32 39 35 20 2d 2d 2d -- 1289,1295 ---
5700: 2d 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 -. }.
5710: 65 6e 64 3a 0a 20 20 20 20 20 20 69 66 20 28 6e end:. if (n
5720: 61 74 69 76 65 45 72 72 66 69 6c 65 20 21 3d 20 ativeErrfile !=
5730: 4e 55 4c 4c 29 20 7b 0a 21 20 09 54 63 6c 5f 57 NULL) {.! .Tcl_W
5740: 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 inConvertError(G
5750: 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a etLastError());.
5760: 20 20 09 69 66 20 28 65 72 72 6f 72 50 74 72 20 .if (errorPtr
5770: 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 20 09 20 20 != NULL) {. .
5780: 20 20 54 63 6c 5f 57 69 6e 54 43 68 61 72 54 6f Tcl_WinTCharTo
5790: 55 74 66 28 6e 61 74 69 76 65 45 72 72 66 69 6c Utf(nativeErrfil
57a0: 65 2c 20 2d 31 2c 20 65 72 72 6f 72 50 74 72 29 e, -1, errorPtr)
57b0: 3b 0a 20 20 09 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a ;. .}.*********
57c0: 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 33 33 37 2c ******.*** 1337,
57d0: 31 33 34 33 20 2a 2a 2a 2a 0a 20 20 09 09 69 66 1343 ****. ..if
57e0: 20 28 28 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d ((*tclWinProcs-
57f0: 3e 73 65 74 46 69 6c 65 41 74 74 72 69 62 75 74 >setFileAttribut
5800: 65 73 50 72 6f 63 29 28 6e 61 74 69 76 65 44 73 esProc)(nativeDs
5810: 74 2c 20 61 74 74 72 29 20 21 3d 20 46 41 4c 53 t, attr) != FALS
5820: 45 29 20 7b 0a 20 20 09 09 20 20 20 20 72 65 74 E) {. .. ret
5830: 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 20 20 09 09 urn TCL_OK;. ..
5840: 7d 0a 21 20 09 09 54 63 6c 57 69 6e 43 6f 6e 76 }.! ..TclWinConv
5850: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
5860: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 20 20 Error());. .
5870: 20 7d 0a 20 20 09 20 20 20 20 62 72 65 61 6b 3b }. . break;
5880: 0a 20 20 09 7d 0a 2d 2d 2d 20 31 33 33 37 2c 31 . .}.--- 1337,1
5890: 33 34 33 20 2d 2d 2d 2d 0a 20 20 09 09 69 66 20 343 ----. ..if
58a0: 28 28 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d 3e ((*tclWinProcs->
58b0: 73 65 74 46 69 6c 65 41 74 74 72 69 62 75 74 65 setFileAttribute
58c0: 73 50 72 6f 63 29 28 6e 61 74 69 76 65 44 73 74 sProc)(nativeDst
58d0: 2c 20 61 74 74 72 29 20 21 3d 20 46 41 4c 53 45 , attr) != FALSE
58e0: 29 20 7b 0a 20 20 09 09 20 20 20 20 72 65 74 75 ) {. .. retu
58f0: 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 20 20 09 09 7d rn TCL_OK;. ..}
5900: 0a 21 20 09 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 .! ..Tcl_WinConv
5910: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
5920: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 20 20 Error());. .
5930: 20 7d 0a 20 20 09 20 20 20 20 62 72 65 61 6b 3b }. . break;
5940: 0a 20 20 09 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a . .}.**********
5950: 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 34 33 33 2c 31 *****.*** 1433,1
5960: 34 33 39 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 54 439 ****. T
5970: 63 6c 5f 4f 62 6a 20 2a 66 69 6c 65 4e 61 6d 65 cl_Obj *fileName
5980: 29 09 20 20 20 20 20 20 20 20 2f 2a 20 54 68 65 ). /* The
5990: 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 69 6c name of the fil
59a0: 65 20 77 68 69 63 68 20 63 61 75 73 65 64 20 74 e which caused t
59b0: 68 65 20 0a 20 20 09 09 09 09 20 2a 20 65 72 72 he . .... * err
59c0: 6f 72 2e 20 2a 2f 0a 20 20 7b 0a 21 20 20 20 20 or. */. {.!
59d0: 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 TclWinConvertEr
59e0: 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 ror(GetLastError
59f0: 28 29 29 3b 0a 20 20 20 20 20 20 54 63 6c 5f 41 ());. Tcl_A
5a00: 70 70 65 6e 64 53 74 72 69 6e 67 73 54 6f 4f 62 ppendStringsToOb
5a10: 6a 28 54 63 6c 5f 47 65 74 4f 62 6a 52 65 73 75 j(Tcl_GetObjResu
5a20: 6c 74 28 69 6e 74 65 72 70 29 2c 20 0a 20 20 09 lt(interp), . .
5a30: 09 09 20 20 20 22 63 6f 75 6c 64 20 6e 6f 74 20 .. "could not
5a40: 72 65 61 64 20 5c 22 22 2c 20 54 63 6c 5f 47 65 read \"", Tcl_Ge
5a50: 74 53 74 72 69 6e 67 28 66 69 6c 65 4e 61 6d 65 tString(fileName
5a60: 29 2c 20 0a 20 20 09 09 09 20 20 20 22 5c 22 3a ), . ... "\":
5a70: 20 22 2c 20 54 63 6c 5f 50 6f 73 69 78 45 72 72 ", Tcl_PosixErr
5a80: 6f 72 28 69 6e 74 65 72 70 29 2c 20 0a 2d 2d 2d or(interp), .---
5a90: 20 31 34 33 33 2c 31 34 33 39 20 2d 2d 2d 2d 0a 1433,1439 ----.
5aa0: 20 20 20 20 20 20 54 63 6c 5f 4f 62 6a 20 2a 66 Tcl_Obj *f
5ab0: 69 6c 65 4e 61 6d 65 29 09 20 20 20 20 20 20 20 ileName).
5ac0: 20 2f 2a 20 54 68 65 20 6e 61 6d 65 20 6f 66 20 /* The name of
5ad0: 74 68 65 20 66 69 6c 65 20 77 68 69 63 68 20 63 the file which c
5ae0: 61 75 73 65 64 20 74 68 65 20 0a 20 20 09 09 09 aused the . ...
5af0: 09 20 2a 20 65 72 72 6f 72 2e 20 2a 2f 0a 20 20 . * error. */.
5b00: 7b 0a 21 20 20 20 20 20 54 63 6c 5f 57 69 6e 43 {.! Tcl_WinC
5b10: 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c onvertError(GetL
5b20: 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 20 astError());.
5b30: 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 53 74 72 Tcl_AppendStr
5b40: 69 6e 67 73 54 6f 4f 62 6a 28 54 63 6c 5f 47 65 ingsToObj(Tcl_Ge
5b50: 74 4f 62 6a 52 65 73 75 6c 74 28 69 6e 74 65 72 tObjResult(inter
5b60: 70 29 2c 20 0a 20 20 09 09 09 20 20 20 22 63 6f p), . ... "co
5b70: 75 6c 64 20 6e 6f 74 20 72 65 61 64 20 5c 22 22 uld not read \""
5b80: 2c 20 54 63 6c 5f 47 65 74 53 74 72 69 6e 67 28 , Tcl_GetString(
5b90: 66 69 6c 65 4e 61 6d 65 29 2c 20 0a 20 20 09 09 fileName), . ..
5ba0: 09 20 20 20 22 5c 22 3a 20 22 2c 20 54 63 6c 5f . "\": ", Tcl_
5bb0: 50 6f 73 69 78 45 72 72 6f 72 28 69 6e 74 65 72 PosixError(inter
5bc0: 70 29 2c 20 0a 0a 2a 2a 2a 20 77 69 6e 2f 74 63 p), ..*** win/tc
5bd0: 6c 57 69 6e 46 69 6c 65 2e 63 09 32 37 20 41 75 lWinFile.c.27 Au
5be0: 67 20 32 30 30 33 20 32 30 3a 31 32 3a 30 33 20 g 2003 20:12:03
5bf0: 2d 30 30 30 30 09 31 2e 35 33 0a 2d 2d 2d 20 77 -0000.1.53.--- w
5c00: 69 6e 2f 74 63 6c 57 69 6e 46 69 6c 65 2e 63 09 in/tclWinFile.c.
5c10: 34 20 53 65 70 20 32 30 30 33 20 32 31 3a 32 30 4 Sep 2003 21:20
5c20: 3a 35 32 20 2d 30 30 30 30 0a 2a 2a 2a 2a 2a 2a :52 -0000.******
5c30: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 32 30 *********.*** 20
5c40: 39 2c 32 31 35 20 2a 2a 2a 2a 0a 20 20 20 20 20 9,215 ****.
5c50: 20 69 66 20 28 21 28 2a 74 63 6c 57 69 6e 50 72 if (!(*tclWinPr
5c60: 6f 63 73 2d 3e 67 65 74 46 75 6c 6c 50 61 74 68 ocs->getFullPath
5c70: 4e 61 6d 65 50 72 6f 63 29 28 4c 69 6e 6b 54 61 NameProc)(LinkTa
5c80: 72 67 65 74 2c 20 0a 20 20 09 09 09 20 20 4d 41 rget, . ... MA
5c90: 58 5f 50 41 54 48 2c 20 74 65 6d 70 46 69 6c 65 X_PATH, tempFile
5ca0: 4e 61 6d 65 2c 20 26 74 65 6d 70 46 69 6c 65 50 Name, &tempFileP
5cb0: 61 72 74 29 29 20 7b 0a 20 20 09 2f 2a 20 49 6e art)) {. ./* In
5cc0: 76 61 6c 69 64 20 66 69 6c 65 20 2a 2f 0a 21 20 valid file */.!
5cd0: 09 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 .TclWinConvertEr
5ce0: 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 ror(GetLastError
5cf0: 28 29 29 3b 0a 20 20 09 72 65 74 75 72 6e 20 2d ());. .return -
5d00: 31 3b 0a 20 20 20 20 20 20 7d 0a 20 20 0a 2d 2d 1;. }. .--
5d10: 2d 20 32 30 39 2c 32 31 35 20 2d 2d 2d 2d 0a 20 - 209,215 ----.
5d20: 20 20 20 20 20 69 66 20 28 21 28 2a 74 63 6c 57 if (!(*tclW
5d30: 69 6e 50 72 6f 63 73 2d 3e 67 65 74 46 75 6c 6c inProcs->getFull
5d40: 50 61 74 68 4e 61 6d 65 50 72 6f 63 29 28 4c 69 PathNameProc)(Li
5d50: 6e 6b 54 61 72 67 65 74 2c 20 0a 20 20 09 09 09 nkTarget, . ...
5d60: 20 20 4d 41 58 5f 50 41 54 48 2c 20 74 65 6d 70 MAX_PATH, temp
5d70: 46 69 6c 65 4e 61 6d 65 2c 20 26 74 65 6d 70 46 FileName, &tempF
5d80: 69 6c 65 50 61 72 74 29 29 20 7b 0a 20 20 09 2f ilePart)) {. ./
5d90: 2a 20 49 6e 76 61 6c 69 64 20 66 69 6c 65 20 2a * Invalid file *
5da0: 2f 0a 21 20 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 /.! .Tcl_WinConv
5db0: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
5dc0: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 72 65 74 Error());. .ret
5dd0: 75 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 7d 0a urn -1;. }.
5de0: 20 20 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .*************
5df0: 2a 2a 0a 2a 2a 2a 20 32 32 34 2c 32 33 37 20 2a **.*** 224,237 *
5e00: 2a 2a 2a 0a 20 20 20 20 20 20 69 66 20 28 21 28 ***. if (!(
5e10: 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d 3e 67 65 *tclWinProcs->ge
5e20: 74 46 75 6c 6c 50 61 74 68 4e 61 6d 65 50 72 6f tFullPathNamePro
5e30: 63 29 28 4c 69 6e 6b 53 6f 75 72 63 65 2c 20 0a c)(LinkSource, .
5e40: 20 20 09 09 09 20 20 4d 41 58 5f 50 41 54 48 2c ... MAX_PATH,
5e50: 20 74 65 6d 70 46 69 6c 65 4e 61 6d 65 2c 20 26 tempFileName, &
5e60: 74 65 6d 70 46 69 6c 65 50 61 72 74 29 29 20 7b tempFilePart)) {
5e70: 0a 20 20 09 2f 2a 20 49 6e 76 61 6c 69 64 20 66 . ./* Invalid f
5e80: 69 6c 65 20 2a 2f 0a 21 20 09 54 63 6c 57 69 6e ile */.! .TclWin
5e90: 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 ConvertError(Get
5ea0: 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 LastError());.
5eb0: 09 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 20 20 .return -1;.
5ec0: 20 20 7d 0a 20 20 20 20 20 20 2f 2a 20 43 68 65 }. /* Che
5ed0: 63 6b 20 74 68 65 20 74 61 72 67 65 74 20 2a 2f ck the target */
5ee0: 0a 20 20 20 20 20 20 61 74 74 72 20 3d 20 28 2a . attr = (*
5ef0: 74 63 6c 57 69 6e 50 72 6f 63 73 2d 3e 67 65 74 tclWinProcs->get
5f00: 46 69 6c 65 41 74 74 72 69 62 75 74 65 73 50 72 FileAttributesPr
5f10: 6f 63 29 28 4c 69 6e 6b 54 61 72 67 65 74 29 3b oc)(LinkTarget);
5f20: 0a 20 20 20 20 20 20 69 66 20 28 61 74 74 72 20 . if (attr
5f30: 3d 3d 20 30 78 66 66 66 66 66 66 66 66 29 20 7b == 0xffffffff) {
5f40: 0a 20 20 09 2f 2a 20 54 68 65 20 74 61 72 67 65 . ./* The targe
5f50: 74 20 64 6f 65 73 6e 27 74 20 65 78 69 73 74 20 t doesn't exist
5f60: 2a 2f 0a 21 20 09 54 63 6c 57 69 6e 43 6f 6e 76 */.! .TclWinConv
5f70: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
5f80: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 72 65 74 Error());. .ret
5f90: 75 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 7d 20 urn -1;. }
5fa0: 65 6c 73 65 20 69 66 20 28 28 61 74 74 72 20 26 else if ((attr &
5fb0: 20 46 49 4c 45 5f 41 54 54 52 49 42 55 54 45 5f FILE_ATTRIBUTE_
5fc0: 44 49 52 45 43 54 4f 52 59 29 20 3d 3d 20 30 29 DIRECTORY) == 0)
5fd0: 20 7b 0a 20 20 09 2f 2a 20 49 74 20 69 73 20 61 {. ./* It is a
5fe0: 20 66 69 6c 65 20 2a 2f 0a 2d 2d 2d 20 32 32 34 file */.--- 224
5ff0: 2c 32 33 37 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 ,237 ----.
6000: 69 66 20 28 21 28 2a 74 63 6c 57 69 6e 50 72 6f if (!(*tclWinPro
6010: 63 73 2d 3e 67 65 74 46 75 6c 6c 50 61 74 68 4e cs->getFullPathN
6020: 61 6d 65 50 72 6f 63 29 28 4c 69 6e 6b 53 6f 75 ameProc)(LinkSou
6030: 72 63 65 2c 20 0a 20 20 09 09 09 20 20 4d 41 58 rce, . ... MAX
6040: 5f 50 41 54 48 2c 20 74 65 6d 70 46 69 6c 65 4e _PATH, tempFileN
6050: 61 6d 65 2c 20 26 74 65 6d 70 46 69 6c 65 50 61 ame, &tempFilePa
6060: 72 74 29 29 20 7b 0a 20 20 09 2f 2a 20 49 6e 76 rt)) {. ./* Inv
6070: 61 6c 69 64 20 66 69 6c 65 20 2a 2f 0a 21 20 09 alid file */.! .
6080: 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 Tcl_WinConvertEr
6090: 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 ror(GetLastError
60a0: 28 29 29 3b 0a 20 20 09 72 65 74 75 72 6e 20 2d ());. .return -
60b0: 31 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 1;. }.
60c0: 20 2f 2a 20 43 68 65 63 6b 20 74 68 65 20 74 61 /* Check the ta
60d0: 72 67 65 74 20 2a 2f 0a 20 20 20 20 20 20 61 74 rget */. at
60e0: 74 72 20 3d 20 28 2a 74 63 6c 57 69 6e 50 72 6f tr = (*tclWinPro
60f0: 63 73 2d 3e 67 65 74 46 69 6c 65 41 74 74 72 69 cs->getFileAttri
6100: 62 75 74 65 73 50 72 6f 63 29 28 4c 69 6e 6b 54 butesProc)(LinkT
6110: 61 72 67 65 74 29 3b 0a 20 20 20 20 20 20 69 66 arget);. if
6120: 20 28 61 74 74 72 20 3d 3d 20 30 78 66 66 66 66 (attr == 0xffff
6130: 66 66 66 66 29 20 7b 0a 20 20 09 2f 2a 20 54 68 ffff) {. ./* Th
6140: 65 20 74 61 72 67 65 74 20 64 6f 65 73 6e 27 74 e target doesn't
6150: 20 65 78 69 73 74 20 2a 2f 0a 21 20 09 54 63 6c exist */.! .Tcl
6160: 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 _WinConvertError
6170: 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 (GetLastError())
6180: 3b 0a 20 20 09 72 65 74 75 72 6e 20 2d 31 3b 0a ;. .return -1;.
6190: 20 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 } else if
61a0: 28 28 61 74 74 72 20 26 20 46 49 4c 45 5f 41 54 ((attr & FILE_AT
61b0: 54 52 49 42 55 54 45 5f 44 49 52 45 43 54 4f 52 TRIBUTE_DIRECTOR
61c0: 59 29 20 3d 3d 20 30 29 20 7b 0a 20 20 09 2f 2a Y) == 0) {. ./*
61d0: 20 49 74 20 69 73 20 61 20 66 69 6c 65 20 2a 2f It is a file */
61e0: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
61f0: 0a 2a 2a 2a 20 32 34 31 2c 32 34 37 20 2a 2a 2a .*** 241,247 ***
6200: 2a 0a 20 20 09 7d 0a 20 20 09 69 66 20 28 6c 69 *. .}. .if (li
6210: 6e 6b 41 63 74 69 6f 6e 20 26 20 54 43 4c 5f 43 nkAction & TCL_C
6220: 52 45 41 54 45 5f 48 41 52 44 5f 4c 49 4e 4b 29 REATE_HARD_LINK)
6230: 20 7b 0a 20 20 09 20 20 20 20 69 66 20 28 21 28 {. . if (!(
6240: 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d 3e 63 72 *tclWinProcs->cr
6250: 65 61 74 65 48 61 72 64 4c 69 6e 6b 50 72 6f 63 eateHardLinkProc
6260: 29 28 4c 69 6e 6b 53 6f 75 72 63 65 2c 20 4c 69 )(LinkSource, Li
6270: 6e 6b 54 61 72 67 65 74 2c 20 4e 55 4c 4c 29 29 nkTarget, NULL))
6280: 20 7b 0a 21 20 09 09 54 63 6c 57 69 6e 43 6f 6e {.! ..TclWinCon
6290: 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 vertError(GetLas
62a0: 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 09 72 tError());. ..r
62b0: 65 74 75 72 6e 20 2d 31 3b 0a 20 20 09 20 20 20 eturn -1;. .
62c0: 20 7d 0a 20 20 09 20 20 20 20 72 65 74 75 72 6e }. . return
62d0: 20 30 3b 0a 2d 2d 2d 20 32 34 31 2c 32 34 37 20 0;.--- 241,247
62e0: 2d 2d 2d 2d 0a 20 20 09 7d 0a 20 20 09 69 66 20 ----. .}. .if
62f0: 28 6c 69 6e 6b 41 63 74 69 6f 6e 20 26 20 54 43 (linkAction & TC
6300: 4c 5f 43 52 45 41 54 45 5f 48 41 52 44 5f 4c 49 L_CREATE_HARD_LI
6310: 4e 4b 29 20 7b 0a 20 20 09 20 20 20 20 69 66 20 NK) {. . if
6320: 28 21 28 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d (!(*tclWinProcs-
6330: 3e 63 72 65 61 74 65 48 61 72 64 4c 69 6e 6b 50 >createHardLinkP
6340: 72 6f 63 29 28 4c 69 6e 6b 53 6f 75 72 63 65 2c roc)(LinkSource,
6350: 20 4c 69 6e 6b 54 61 72 67 65 74 2c 20 4e 55 4c LinkTarget, NUL
6360: 4c 29 29 20 7b 0a 21 20 09 09 54 63 6c 5f 57 69 L)) {.! ..Tcl_Wi
6370: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 nConvertError(Ge
6380: 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 tLastError());.
6390: 20 09 09 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 ..return -1;.
63a0: 09 20 20 20 20 7d 0a 20 20 09 20 20 20 20 72 65 . }. . re
63b0: 74 75 72 6e 20 30 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a turn 0;.********
63c0: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 32 38 37 2c *******.*** 287,
63d0: 32 39 33 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 69 293 ****. i
63e0: 66 20 28 21 28 2a 74 63 6c 57 69 6e 50 72 6f 63 f (!(*tclWinProc
63f0: 73 2d 3e 67 65 74 46 75 6c 6c 50 61 74 68 4e 61 s->getFullPathNa
6400: 6d 65 50 72 6f 63 29 28 4c 69 6e 6b 53 6f 75 72 meProc)(LinkSour
6410: 63 65 2c 20 0a 20 20 09 09 09 20 20 4d 41 58 5f ce, . ... MAX_
6420: 50 41 54 48 2c 20 74 65 6d 70 46 69 6c 65 4e 61 PATH, tempFileNa
6430: 6d 65 2c 20 26 74 65 6d 70 46 69 6c 65 50 61 72 me, &tempFilePar
6440: 74 29 29 20 7b 0a 20 20 09 2f 2a 20 49 6e 76 61 t)) {. ./* Inva
6450: 6c 69 64 20 66 69 6c 65 20 2a 2f 0a 21 20 09 54 lid file */.! .T
6460: 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f clWinConvertErro
6470: 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 r(GetLastError()
6480: 29 3b 0a 20 20 09 72 65 74 75 72 6e 20 4e 55 4c );. .return NUL
6490: 4c 3b 0a 20 20 20 20 20 20 7d 0a 20 20 0a 2d 2d L;. }. .--
64a0: 2d 20 32 38 37 2c 32 39 33 20 2d 2d 2d 2d 0a 20 - 287,293 ----.
64b0: 20 20 20 20 20 69 66 20 28 21 28 2a 74 63 6c 57 if (!(*tclW
64c0: 69 6e 50 72 6f 63 73 2d 3e 67 65 74 46 75 6c 6c inProcs->getFull
64d0: 50 61 74 68 4e 61 6d 65 50 72 6f 63 29 28 4c 69 PathNameProc)(Li
64e0: 6e 6b 53 6f 75 72 63 65 2c 20 0a 20 20 09 09 09 nkSource, . ...
64f0: 20 20 4d 41 58 5f 50 41 54 48 2c 20 74 65 6d 70 MAX_PATH, temp
6500: 46 69 6c 65 4e 61 6d 65 2c 20 26 74 65 6d 70 46 FileName, &tempF
6510: 69 6c 65 50 61 72 74 29 29 20 7b 0a 20 20 09 2f ilePart)) {. ./
6520: 2a 20 49 6e 76 61 6c 69 64 20 66 69 6c 65 20 2a * Invalid file *
6530: 2f 0a 21 20 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 /.! .Tcl_WinConv
6540: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
6550: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 72 65 74 Error());. .ret
6560: 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 20 urn NULL;.
6570: 7d 0a 20 20 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a }. .***********
6580: 2a 2a 2a 2a 0a 2a 2a 2a 20 32 39 35 2c 33 30 31 ****.*** 295,301
6590: 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 61 74 74 72 ****. attr
65a0: 20 3d 20 28 2a 74 63 6c 57 69 6e 50 72 6f 63 73 = (*tclWinProcs
65b0: 2d 3e 67 65 74 46 69 6c 65 41 74 74 72 69 62 75 ->getFileAttribu
65c0: 74 65 73 50 72 6f 63 29 28 4c 69 6e 6b 53 6f 75 tesProc)(LinkSou
65d0: 72 63 65 29 3b 0a 20 20 20 20 20 20 69 66 20 28 rce);. if (
65e0: 61 74 74 72 20 3d 3d 20 30 78 66 66 66 66 66 66 attr == 0xffffff
65f0: 66 66 29 20 7b 0a 20 20 09 2f 2a 20 54 68 65 20 ff) {. ./* The
6600: 73 6f 75 72 63 65 20 64 6f 65 73 6e 27 74 20 65 source doesn't e
6610: 78 69 73 74 20 2a 2f 0a 21 20 09 54 63 6c 57 69 xist */.! .TclWi
6620: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 nConvertError(Ge
6630: 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 tLastError());.
6640: 20 09 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 .return NULL;.
6650: 20 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 } else if (
6660: 28 61 74 74 72 20 26 20 46 49 4c 45 5f 41 54 54 (attr & FILE_ATT
6670: 52 49 42 55 54 45 5f 44 49 52 45 43 54 4f 52 59 RIBUTE_DIRECTORY
6680: 29 20 3d 3d 20 30 29 20 7b 0a 20 20 09 2f 2a 20 ) == 0) {. ./*
6690: 49 74 20 69 73 20 61 20 66 69 6c 65 20 2d 20 74 It is a file - t
66a0: 68 69 73 20 69 73 20 6e 6f 74 20 79 65 74 20 73 his is not yet s
66b0: 75 70 70 6f 72 74 65 64 20 2a 2f 0a 2d 2d 2d 20 upported */.---
66c0: 32 39 35 2c 33 30 31 20 2d 2d 2d 2d 0a 20 20 20 295,301 ----.
66d0: 20 20 20 61 74 74 72 20 3d 20 28 2a 74 63 6c 57 attr = (*tclW
66e0: 69 6e 50 72 6f 63 73 2d 3e 67 65 74 46 69 6c 65 inProcs->getFile
66f0: 41 74 74 72 69 62 75 74 65 73 50 72 6f 63 29 28 AttributesProc)(
6700: 4c 69 6e 6b 53 6f 75 72 63 65 29 3b 0a 20 20 20 LinkSource);.
6710: 20 20 20 69 66 20 28 61 74 74 72 20 3d 3d 20 30 if (attr == 0
6720: 78 66 66 66 66 66 66 66 66 29 20 7b 0a 20 20 09 xffffffff) {. .
6730: 2f 2a 20 54 68 65 20 73 6f 75 72 63 65 20 64 6f /* The source do
6740: 65 73 6e 27 74 20 65 78 69 73 74 20 2a 2f 0a 21 esn't exist */.!
6750: 20 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 .Tcl_WinConvert
6760: 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 Error(GetLastErr
6770: 6f 72 28 29 29 3b 0a 20 20 09 72 65 74 75 72 6e or());. .return
6780: 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 20 7d 20 65 NULL;. } e
6790: 6c 73 65 20 69 66 20 28 28 61 74 74 72 20 26 20 lse if ((attr &
67a0: 46 49 4c 45 5f 41 54 54 52 49 42 55 54 45 5f 44 FILE_ATTRIBUTE_D
67b0: 49 52 45 43 54 4f 52 59 29 20 3d 3d 20 30 29 20 IRECTORY) == 0)
67c0: 7b 0a 20 20 09 2f 2a 20 49 74 20 69 73 20 61 20 {. ./* It is a
67d0: 66 69 6c 65 20 2d 20 74 68 69 73 20 69 73 20 6e file - this is n
67e0: 6f 74 20 79 65 74 20 73 75 70 70 6f 72 74 65 64 ot yet supported
67f0: 20 2a 2f 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a */.************
6800: 2a 2a 2a 0a 2a 2a 2a 20 34 32 37 2c 34 33 33 20 ***.*** 427,433
6810: 2a 2a 2a 2a 0a 20 20 09 09 09 20 20 20 20 20 52 ****. ... R
6820: 45 50 41 52 53 45 5f 4d 4f 55 4e 54 50 4f 49 4e EPARSE_MOUNTPOIN
6830: 54 5f 48 45 41 44 45 52 5f 53 49 5a 45 2c 0a 20 T_HEADER_SIZE,.
6840: 20 09 09 09 20 20 20 20 20 4e 55 4c 4c 2c 20 30 ... NULL, 0
6850: 2c 20 26 72 65 74 75 72 6e 65 64 4c 65 6e 67 74 , &returnedLengt
6860: 68 2c 20 4e 55 4c 4c 29 29 20 7b 09 0a 20 20 09 h, NULL)) {.. .
6870: 20 20 20 20 2f 2a 20 45 72 72 6f 72 20 73 65 74 /* Error set
6880: 74 69 6e 67 20 6a 75 6e 63 74 69 6f 6e 20 2a 2f ting junction */
6890: 0a 21 20 09 20 20 20 20 54 63 6c 57 69 6e 43 6f .! . TclWinCo
68a0: 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 nvertError(GetLa
68b0: 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 stError());. .
68c0: 20 20 20 43 6c 6f 73 65 48 61 6e 64 6c 65 28 68 CloseHandle(h
68d0: 46 69 6c 65 29 3b 0a 20 20 09 7d 20 65 6c 73 65 File);. .} else
68e0: 20 7b 0a 20 20 09 20 20 20 20 43 6c 6f 73 65 48 {. . CloseH
68f0: 61 6e 64 6c 65 28 68 46 69 6c 65 29 3b 0a 2d 2d andle(hFile);.--
6900: 2d 20 34 32 37 2c 34 33 33 20 2d 2d 2d 2d 0a 20 - 427,433 ----.
6910: 20 09 09 09 20 20 20 20 20 52 45 50 41 52 53 45 ... REPARSE
6920: 5f 4d 4f 55 4e 54 50 4f 49 4e 54 5f 48 45 41 44 _MOUNTPOINT_HEAD
6930: 45 52 5f 53 49 5a 45 2c 0a 20 20 09 09 09 20 20 ER_SIZE,. ...
6940: 20 20 20 4e 55 4c 4c 2c 20 30 2c 20 26 72 65 74 NULL, 0, &ret
6950: 75 72 6e 65 64 4c 65 6e 67 74 68 2c 20 4e 55 4c urnedLength, NUL
6960: 4c 29 29 20 7b 09 0a 20 20 09 20 20 20 20 2f 2a L)) {.. . /*
6970: 20 45 72 72 6f 72 20 73 65 74 74 69 6e 67 20 6a Error setting j
6980: 75 6e 63 74 69 6f 6e 20 2a 2f 0a 21 20 09 20 20 unction */.! .
6990: 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 Tcl_WinConvert
69a0: 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 Error(GetLastErr
69b0: 6f 72 28 29 29 3b 0a 20 20 09 20 20 20 20 43 6c or());. . Cl
69c0: 6f 73 65 48 61 6e 64 6c 65 28 68 46 69 6c 65 29 oseHandle(hFile)
69d0: 3b 0a 20 20 09 7d 20 65 6c 73 65 20 7b 0a 20 20 ;. .} else {.
69e0: 09 20 20 20 20 43 6c 6f 73 65 48 61 6e 64 6c 65 . CloseHandle
69f0: 28 68 46 69 6c 65 29 3b 0a 2a 2a 2a 2a 2a 2a 2a (hFile);.*******
6a00: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 35 39 30 ********.*** 590
6a10: 2c 35 39 36 20 2a 2a 2a 2a 0a 20 20 09 46 49 4c ,596 ****. .FIL
6a20: 45 5f 46 4c 41 47 5f 4f 50 45 4e 5f 52 45 50 41 E_FLAG_OPEN_REPA
6a30: 52 53 45 5f 50 4f 49 4e 54 7c 46 49 4c 45 5f 46 RSE_POINT|FILE_F
6a40: 4c 41 47 5f 42 41 43 4b 55 50 5f 53 45 4d 41 4e LAG_BACKUP_SEMAN
6a50: 54 49 43 53 2c 20 4e 55 4c 4c 29 3b 0a 20 20 20 TICS, NULL);.
6a60: 20 20 20 69 66 20 28 68 46 69 6c 65 20 3d 3d 20 if (hFile ==
6a70: 49 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 5f 56 INVALID_HANDLE_V
6a80: 41 4c 55 45 29 20 7b 0a 20 20 09 2f 2a 20 45 72 ALUE) {. ./* Er
6a90: 72 6f 72 20 63 72 65 61 74 69 6e 67 20 64 69 72 ror creating dir
6aa0: 65 63 74 6f 72 79 20 2a 2f 0a 21 20 09 54 63 6c ectory */.! .Tcl
6ab0: 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 WinConvertError(
6ac0: 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b GetLastError());
6ad0: 0a 20 20 09 72 65 74 75 72 6e 20 2d 31 3b 0a 20 . .return -1;.
6ae0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 2f 2a 20 }. /*
6af0: 47 65 74 20 74 68 65 20 6c 69 6e 6b 20 2a 2f 0a Get the link */.
6b00: 2d 2d 2d 20 35 39 30 2c 35 39 36 20 2d 2d 2d 2d --- 590,596 ----
6b10: 0a 20 20 09 46 49 4c 45 5f 46 4c 41 47 5f 4f 50 . .FILE_FLAG_OP
6b20: 45 4e 5f 52 45 50 41 52 53 45 5f 50 4f 49 4e 54 EN_REPARSE_POINT
6b30: 7c 46 49 4c 45 5f 46 4c 41 47 5f 42 41 43 4b 55 |FILE_FLAG_BACKU
6b40: 50 5f 53 45 4d 41 4e 54 49 43 53 2c 20 4e 55 4c P_SEMANTICS, NUL
6b50: 4c 29 3b 0a 20 20 20 20 20 20 69 66 20 28 68 46 L);. if (hF
6b60: 69 6c 65 20 3d 3d 20 49 4e 56 41 4c 49 44 5f 48 ile == INVALID_H
6b70: 41 4e 44 4c 45 5f 56 41 4c 55 45 29 20 7b 0a 20 ANDLE_VALUE) {.
6b80: 20 09 2f 2a 20 45 72 72 6f 72 20 63 72 65 61 74 ./* Error creat
6b90: 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 2a 2f ing directory */
6ba0: 0a 21 20 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 .! .Tcl_WinConve
6bb0: 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 rtError(GetLastE
6bc0: 72 72 6f 72 28 29 29 3b 0a 20 20 09 72 65 74 75 rror());. .retu
6bd0: 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 7d 0a 20 rn -1;. }.
6be0: 20 20 20 20 20 2f 2a 20 47 65 74 20 74 68 65 20 /* Get the
6bf0: 6c 69 6e 6b 20 2a 2f 0a 2a 2a 2a 2a 2a 2a 2a 2a link */.********
6c00: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 35 39 38 2c *******.*** 598,
6c10: 36 30 34 20 2a 2a 2a 2a 0a 20 20 09 09 09 20 30 604 ****. ... 0
6c20: 2c 20 62 75 66 66 65 72 2c 20 73 69 7a 65 6f 66 , buffer, sizeof
6c30: 28 44 55 4d 4d 59 5f 52 45 50 41 52 53 45 5f 42 (DUMMY_REPARSE_B
6c40: 55 46 46 45 52 29 2c 20 0a 20 20 09 09 09 20 26 UFFER), . ... &
6c50: 72 65 74 75 72 6e 65 64 4c 65 6e 67 74 68 2c 20 returnedLength,
6c60: 4e 55 4c 4c 29 29 20 7b 09 0a 20 20 09 2f 2a 20 NULL)) {.. ./*
6c70: 45 72 72 6f 72 20 73 65 74 74 69 6e 67 20 6a 75 Error setting ju
6c80: 6e 63 74 69 6f 6e 20 2a 2f 0a 21 20 09 54 63 6c nction */.! .Tcl
6c90: 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 WinConvertError(
6ca0: 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b GetLastError());
6cb0: 0a 20 20 09 43 6c 6f 73 65 48 61 6e 64 6c 65 28 . .CloseHandle(
6cc0: 68 46 69 6c 65 29 3b 0a 20 20 09 72 65 74 75 72 hFile);. .retur
6cd0: 6e 20 2d 31 3b 0a 20 20 20 20 20 20 7d 0a 2d 2d n -1;. }.--
6ce0: 2d 20 35 39 38 2c 36 30 34 20 2d 2d 2d 2d 0a 20 - 598,604 ----.
6cf0: 20 09 09 09 20 30 2c 20 62 75 66 66 65 72 2c 20 ... 0, buffer,
6d00: 73 69 7a 65 6f 66 28 44 55 4d 4d 59 5f 52 45 50 sizeof(DUMMY_REP
6d10: 41 52 53 45 5f 42 55 46 46 45 52 29 2c 20 0a 20 ARSE_BUFFER), .
6d20: 20 09 09 09 20 26 72 65 74 75 72 6e 65 64 4c 65 ... &returnedLe
6d30: 6e 67 74 68 2c 20 4e 55 4c 4c 29 29 20 7b 09 0a ngth, NULL)) {..
6d40: 20 20 09 2f 2a 20 45 72 72 6f 72 20 73 65 74 74 ./* Error sett
6d50: 69 6e 67 20 6a 75 6e 63 74 69 6f 6e 20 2a 2f 0a ing junction */.
6d60: 21 20 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 ! .Tcl_WinConver
6d70: 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 tError(GetLastEr
6d80: 72 6f 72 28 29 29 3b 0a 20 20 09 43 6c 6f 73 65 ror());. .Close
6d90: 48 61 6e 64 6c 65 28 68 46 69 6c 65 29 3b 0a 20 Handle(hFile);.
6da0: 20 09 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 20 .return -1;.
6db0: 20 20 20 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a }.***********
6dc0: 2a 2a 2a 2a 0a 2a 2a 2a 20 36 33 32 2c 36 33 38 ****.*** 632,638
6dd0: 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 2f 2a 20 43 ****. /* C
6de0: 72 65 61 74 65 20 74 68 65 20 64 69 72 65 63 74 reate the direct
6df0: 6f 72 79 20 2d 20 69 74 20 6d 75 73 74 20 6e 6f ory - it must no
6e00: 74 20 61 6c 72 65 61 64 79 20 65 78 69 73 74 20 t already exist
6e10: 2a 2f 0a 20 20 20 20 20 20 69 66 20 28 28 2a 74 */. if ((*t
6e20: 63 6c 57 69 6e 50 72 6f 63 73 2d 3e 63 72 65 61 clWinProcs->crea
6e30: 74 65 44 69 72 65 63 74 6f 72 79 50 72 6f 63 29 teDirectoryProc)
6e40: 28 4c 69 6e 6b 44 69 72 65 63 74 6f 72 79 2c 20 (LinkDirectory,
6e50: 4e 55 4c 4c 29 20 3d 3d 20 30 29 20 7b 0a 20 20 NULL) == 0) {.
6e60: 09 2f 2a 20 45 72 72 6f 72 20 63 72 65 61 74 69 ./* Error creati
6e70: 6e 67 20 64 69 72 65 63 74 6f 72 79 20 2a 2f 0a ng directory */.
6e80: 21 20 09 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 ! .TclWinConvert
6e90: 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 Error(GetLastErr
6ea0: 6f 72 28 29 29 3b 0a 20 20 09 72 65 74 75 72 6e or());. .return
6eb0: 20 2d 31 3b 0a 20 20 20 20 20 20 7d 0a 20 20 20 -1;. }.
6ec0: 20 20 20 68 46 69 6c 65 20 3d 20 28 2a 74 63 6c hFile = (*tcl
6ed0: 57 69 6e 50 72 6f 63 73 2d 3e 63 72 65 61 74 65 WinProcs->create
6ee0: 46 69 6c 65 50 72 6f 63 29 28 4c 69 6e 6b 44 69 FileProc)(LinkDi
6ef0: 72 65 63 74 6f 72 79 2c 20 47 45 4e 45 52 49 43 rectory, GENERIC
6f00: 5f 57 52 49 54 45 2c 20 30 2c 0a 2d 2d 2d 20 36 _WRITE, 0,.--- 6
6f10: 33 32 2c 36 33 38 20 2d 2d 2d 2d 0a 20 20 20 20 32,638 ----.
6f20: 20 20 2f 2a 20 43 72 65 61 74 65 20 74 68 65 20 /* Create the
6f30: 64 69 72 65 63 74 6f 72 79 20 2d 20 69 74 20 6d directory - it m
6f40: 75 73 74 20 6e 6f 74 20 61 6c 72 65 61 64 79 20 ust not already
6f50: 65 78 69 73 74 20 2a 2f 0a 20 20 20 20 20 20 69 exist */. i
6f60: 66 20 28 28 2a 74 63 6c 57 69 6e 50 72 6f 63 73 f ((*tclWinProcs
6f70: 2d 3e 63 72 65 61 74 65 44 69 72 65 63 74 6f 72 ->createDirector
6f80: 79 50 72 6f 63 29 28 4c 69 6e 6b 44 69 72 65 63 yProc)(LinkDirec
6f90: 74 6f 72 79 2c 20 4e 55 4c 4c 29 20 3d 3d 20 30 tory, NULL) == 0
6fa0: 29 20 7b 0a 20 20 09 2f 2a 20 45 72 72 6f 72 20 ) {. ./* Error
6fb0: 63 72 65 61 74 69 6e 67 20 64 69 72 65 63 74 6f creating directo
6fc0: 72 79 20 2a 2f 0a 21 20 09 54 63 6c 5f 57 69 6e ry */.! .Tcl_Win
6fd0: 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 ConvertError(Get
6fe0: 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 LastError());.
6ff0: 09 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 20 20 .return -1;.
7000: 20 20 7d 0a 20 20 20 20 20 20 68 46 69 6c 65 20 }. hFile
7010: 3d 20 28 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d = (*tclWinProcs-
7020: 3e 63 72 65 61 74 65 46 69 6c 65 50 72 6f 63 29 >createFileProc)
7030: 28 4c 69 6e 6b 44 69 72 65 63 74 6f 72 79 2c 20 (LinkDirectory,
7040: 47 45 4e 45 52 49 43 5f 57 52 49 54 45 2c 20 30 GENERIC_WRITE, 0
7050: 2c 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ,.**************
7060: 2a 0a 2a 2a 2a 20 36 34 30 2c 36 34 36 20 2a 2a *.*** 640,646 **
7070: 2a 2a 0a 20 20 09 46 49 4c 45 5f 46 4c 41 47 5f **. .FILE_FLAG_
7080: 4f 50 45 4e 5f 52 45 50 41 52 53 45 5f 50 4f 49 OPEN_REPARSE_POI
7090: 4e 54 7c 46 49 4c 45 5f 46 4c 41 47 5f 42 41 43 NT|FILE_FLAG_BAC
70a0: 4b 55 50 5f 53 45 4d 41 4e 54 49 43 53 2c 20 4e KUP_SEMANTICS, N
70b0: 55 4c 4c 29 3b 0a 20 20 20 20 20 20 69 66 20 28 ULL);. if (
70c0: 68 46 69 6c 65 20 3d 3d 20 49 4e 56 41 4c 49 44 hFile == INVALID
70d0: 5f 48 41 4e 44 4c 45 5f 56 41 4c 55 45 29 20 7b _HANDLE_VALUE) {
70e0: 0a 20 20 09 2f 2a 20 45 72 72 6f 72 20 63 72 65 . ./* Error cre
70f0: 61 74 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 ating directory
7100: 2a 2f 0a 21 20 09 54 63 6c 57 69 6e 43 6f 6e 76 */.! .TclWinConv
7110: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
7120: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 72 65 74 Error());. .ret
7130: 75 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 7d 0a urn -1;. }.
7140: 20 20 20 20 20 20 2f 2a 20 53 65 74 20 74 68 65 /* Set the
7150: 20 6c 69 6e 6b 20 2a 2f 0a 2d 2d 2d 20 36 34 30 link */.--- 640
7160: 2c 36 34 36 20 2d 2d 2d 2d 0a 20 20 09 46 49 4c ,646 ----. .FIL
7170: 45 5f 46 4c 41 47 5f 4f 50 45 4e 5f 52 45 50 41 E_FLAG_OPEN_REPA
7180: 52 53 45 5f 50 4f 49 4e 54 7c 46 49 4c 45 5f 46 RSE_POINT|FILE_F
7190: 4c 41 47 5f 42 41 43 4b 55 50 5f 53 45 4d 41 4e LAG_BACKUP_SEMAN
71a0: 54 49 43 53 2c 20 4e 55 4c 4c 29 3b 0a 20 20 20 TICS, NULL);.
71b0: 20 20 20 69 66 20 28 68 46 69 6c 65 20 3d 3d 20 if (hFile ==
71c0: 49 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 5f 56 INVALID_HANDLE_V
71d0: 41 4c 55 45 29 20 7b 0a 20 20 09 2f 2a 20 45 72 ALUE) {. ./* Er
71e0: 72 6f 72 20 63 72 65 61 74 69 6e 67 20 64 69 72 ror creating dir
71f0: 65 63 74 6f 72 79 20 2a 2f 0a 21 20 09 54 63 6c ectory */.! .Tcl
7200: 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 _WinConvertError
7210: 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 (GetLastError())
7220: 3b 0a 20 20 09 72 65 74 75 72 6e 20 2d 31 3b 0a ;. .return -1;.
7230: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 2f 2a }. /*
7240: 20 53 65 74 20 74 68 65 20 6c 69 6e 6b 20 2a 2f Set the link */
7250: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
7260: 0a 2a 2a 2a 20 36 34 39 2c 36 35 35 20 2a 2a 2a .*** 649,655 ***
7270: 2a 0a 20 20 09 09 09 20 2b 20 52 45 50 41 52 53 *. ... + REPARS
7280: 45 5f 4d 4f 55 4e 54 50 4f 49 4e 54 5f 48 45 41 E_MOUNTPOINT_HEA
7290: 44 45 52 5f 53 49 5a 45 2c 0a 20 20 09 09 09 20 DER_SIZE,. ...
72a0: 4e 55 4c 4c 2c 20 30 2c 20 26 72 65 74 75 72 6e NULL, 0, &return
72b0: 65 64 4c 65 6e 67 74 68 2c 20 4e 55 4c 4c 29 29 edLength, NULL))
72c0: 20 7b 09 0a 20 20 09 2f 2a 20 45 72 72 6f 72 20 {.. ./* Error
72d0: 73 65 74 74 69 6e 67 20 6a 75 6e 63 74 69 6f 6e setting junction
72e0: 20 2a 2f 0a 21 20 09 54 63 6c 57 69 6e 43 6f 6e */.! .TclWinCon
72f0: 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 vertError(GetLas
7300: 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 43 6c tError());. .Cl
7310: 6f 73 65 48 61 6e 64 6c 65 28 68 46 69 6c 65 29 oseHandle(hFile)
7320: 3b 0a 20 20 09 28 2a 74 63 6c 57 69 6e 50 72 6f ;. .(*tclWinPro
7330: 63 73 2d 3e 72 65 6d 6f 76 65 44 69 72 65 63 74 cs->removeDirect
7340: 6f 72 79 50 72 6f 63 29 28 4c 69 6e 6b 44 69 72 oryProc)(LinkDir
7350: 65 63 74 6f 72 79 29 3b 0a 20 20 09 72 65 74 75 ectory);. .retu
7360: 72 6e 20 2d 31 3b 0a 2d 2d 2d 20 36 34 39 2c 36 rn -1;.--- 649,6
7370: 35 35 20 2d 2d 2d 2d 0a 20 20 09 09 09 20 2b 20 55 ----. ... +
7380: 52 45 50 41 52 53 45 5f 4d 4f 55 4e 54 50 4f 49 REPARSE_MOUNTPOI
7390: 4e 54 5f 48 45 41 44 45 52 5f 53 49 5a 45 2c 0a NT_HEADER_SIZE,.
73a0: 20 20 09 09 09 20 4e 55 4c 4c 2c 20 30 2c 20 26 ... NULL, 0, &
73b0: 72 65 74 75 72 6e 65 64 4c 65 6e 67 74 68 2c 20 returnedLength,
73c0: 4e 55 4c 4c 29 29 20 7b 09 0a 20 20 09 2f 2a 20 NULL)) {.. ./*
73d0: 45 72 72 6f 72 20 73 65 74 74 69 6e 67 20 6a 75 Error setting ju
73e0: 6e 63 74 69 6f 6e 20 2a 2f 0a 21 20 09 54 63 6c nction */.! .Tcl
73f0: 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 _WinConvertError
7400: 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 (GetLastError())
7410: 3b 0a 20 20 09 43 6c 6f 73 65 48 61 6e 64 6c 65 ;. .CloseHandle
7420: 28 68 46 69 6c 65 29 3b 0a 20 20 09 28 2a 74 63 (hFile);. .(*tc
7430: 6c 57 69 6e 50 72 6f 63 73 2d 3e 72 65 6d 6f 76 lWinProcs->remov
7440: 65 44 69 72 65 63 74 6f 72 79 50 72 6f 63 29 28 eDirectoryProc)(
7450: 4c 69 6e 6b 44 69 72 65 63 74 6f 72 79 29 3b 0a LinkDirectory);.
7460: 20 20 09 72 65 74 75 72 6e 20 2d 31 3b 0a 2a 2a .return -1;.**
7470: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a *************.**
7480: 2a 20 38 36 38 2c 38 37 34 20 2a 2a 2a 2a 0a 20 * 868,874 ****.
7490: 20 09 09 54 63 6c 5f 44 53 74 72 69 6e 67 46 72 ..Tcl_DStringFr
74a0: 65 65 28 26 64 73 4f 72 69 67 29 3b 0a 20 20 09 ee(&dsOrig);. .
74b0: 09 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a .return TCL_OK;.
74c0: 20 20 09 20 20 20 20 7d 0a 21 20 09 20 20 20 20 . }.! .
74d0: 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 TclWinConvertErr
74e0: 6f 72 28 65 72 72 29 3b 0a 20 20 09 20 20 20 20 or(err);. .
74f0: 54 63 6c 5f 52 65 73 65 74 52 65 73 75 6c 74 28 Tcl_ResetResult(
7500: 69 6e 74 65 72 70 29 3b 0a 20 20 09 20 20 20 20 interp);. .
7510: 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 Tcl_AppendResult
7520: 28 69 6e 74 65 72 70 2c 20 22 63 6f 75 6c 64 6e (interp, "couldn
7530: 27 74 20 72 65 61 64 20 64 69 72 65 63 74 6f 72 't read director
7540: 79 20 5c 22 22 2c 0a 20 20 09 09 20 20 20 20 54 y \"",. .. T
7550: 63 6c 5f 44 53 74 72 69 6e 67 56 61 6c 75 65 28 cl_DStringValue(
7560: 26 64 73 4f 72 69 67 29 2c 20 22 5c 22 3a 20 22 &dsOrig), "\": "
7570: 2c 20 0a 2d 2d 2d 20 38 36 38 2c 38 37 34 20 2d , .--- 868,874 -
7580: 2d 2d 2d 0a 20 20 09 09 54 63 6c 5f 44 53 74 72 ---. ..Tcl_DStr
7590: 69 6e 67 46 72 65 65 28 26 64 73 4f 72 69 67 29 ingFree(&dsOrig)
75a0: 3b 0a 20 20 09 09 72 65 74 75 72 6e 20 54 43 4c ;. ..return TCL
75b0: 5f 4f 4b 3b 0a 20 20 09 20 20 20 20 7d 0a 21 20 _OK;. . }.!
75c0: 09 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 . Tcl_WinConv
75d0: 65 72 74 45 72 72 6f 72 28 65 72 72 29 3b 0a 20 ertError(err);.
75e0: 20 09 20 20 20 20 54 63 6c 5f 52 65 73 65 74 52 . Tcl_ResetR
75f0: 65 73 75 6c 74 28 69 6e 74 65 72 70 29 3b 0a 20 esult(interp);.
7600: 20 09 20 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 . Tcl_Append
7610: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 Result(interp, "
7620: 63 6f 75 6c 64 6e 27 74 20 72 65 61 64 20 64 69 couldn't read di
7630: 72 65 63 74 6f 72 79 20 5c 22 22 2c 0a 20 20 09 rectory \"",. .
7640: 09 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67 . Tcl_DString
7650: 56 61 6c 75 65 28 26 64 73 4f 72 69 67 29 2c 20 Value(&dsOrig),
7660: 22 5c 22 3a 20 22 2c 20 0a 2a 2a 2a 2a 2a 2a 2a "\": ", .*******
7670: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 33 30 ********.*** 130
7680: 36 2c 31 33 31 32 20 2a 2a 2a 2a 0a 20 20 09 20 6,1312 ****. .
7690: 2a 20 46 69 6c 65 20 64 6f 65 73 6e 27 74 20 65 * File doesn't e
76a0: 78 69 73 74 2e 20 0a 20 20 09 20 2a 2f 0a 20 20 xist. . . */.
76b0: 0a 21 20 09 54 63 6c 57 69 6e 43 6f 6e 76 65 72 .! .TclWinConver
76c0: 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 tError(GetLastEr
76d0: 72 6f 72 28 29 29 3b 0a 20 20 09 72 65 74 75 72 ror());. .retur
76e0: 6e 20 2d 31 3b 0a 20 20 20 20 20 20 7d 0a 20 20 n -1;. }.
76f0: 0a 2d 2d 2d 20 31 33 30 36 2c 31 33 31 32 20 2d .--- 1306,1312 -
7700: 2d 2d 2d 0a 20 20 09 20 2a 20 46 69 6c 65 20 64 ---. . * File d
7710: 6f 65 73 6e 27 74 20 65 78 69 73 74 2e 20 0a 20 oesn't exist. .
7720: 20 09 20 2a 2f 0a 20 20 0a 21 20 09 54 63 6c 5f . */. .! .Tcl_
7730: 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 WinConvertError(
7740: 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b GetLastError());
7750: 0a 20 20 09 72 65 74 75 72 6e 20 2d 31 3b 0a 20 . .return -1;.
7760: 20 20 20 20 20 7d 0a 20 20 0a 2a 2a 2a 2a 2a 2a }. .******
7770: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 34 *********.*** 14
7780: 34 33 2c 31 34 34 39 20 2a 2a 2a 2a 0a 20 20 23 43,1449 ****. #
7790: 65 6e 64 69 66 20 2f 2a 20 5f 5f 43 59 47 57 49 endif /* __CYGWI
77a0: 4e 5f 5f 20 2a 2f 0a 20 20 0a 20 20 20 20 20 20 N__ */. .
77b0: 69 66 20 28 72 65 73 75 6c 74 20 3d 3d 20 30 29 if (result == 0)
77c0: 20 7b 0a 21 20 09 54 63 6c 57 69 6e 43 6f 6e 76 {.! .TclWinConv
77d0: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
77e0: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 72 65 74 Error());. .ret
77f0: 75 72 6e 20 2d 31 3b 0a 20 20 20 20 20 20 7d 0a urn -1;. }.
7800: 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a return 0;.
7810: 2d 2d 2d 20 31 34 34 33 2c 31 34 34 39 20 2d 2d --- 1443,1449 --
7820: 2d 2d 0a 20 20 23 65 6e 64 69 66 20 2f 2a 20 5f --. #endif /* _
7830: 5f 43 59 47 57 49 4e 5f 5f 20 2a 2f 0a 20 20 0a _CYGWIN__ */. .
7840: 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 if (result
7850: 20 3d 3d 20 30 29 20 7b 0a 21 20 09 54 63 6c 5f == 0) {.! .Tcl_
7860: 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 WinConvertError(
7870: 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b GetLastError());
7880: 0a 20 20 09 72 65 74 75 72 6e 20 2d 31 3b 0a 20 . .return -1;.
7890: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 72 65 74 }. ret
78a0: 75 72 6e 20 30 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a urn 0;.*********
78b0: 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 35 32 35 2c ******.*** 1525,
78c0: 31 35 33 31 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 1531 ****.
78d0: 63 68 61 72 20 2a 70 3b 0a 20 20 0a 20 20 20 20 char *p;. .
78e0: 20 20 69 66 20 28 28 2a 74 63 6c 57 69 6e 50 72 if ((*tclWinPr
78f0: 6f 63 73 2d 3e 67 65 74 43 75 72 72 65 6e 74 44 ocs->getCurrentD
7900: 69 72 65 63 74 6f 72 79 50 72 6f 63 29 28 4d 41 irectoryProc)(MA
7910: 58 5f 50 41 54 48 2c 20 62 75 66 66 65 72 29 20 X_PATH, buffer)
7920: 3d 3d 20 30 29 20 7b 0a 21 20 09 54 63 6c 57 69 == 0) {.! .TclWi
7930: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 nConvertError(Ge
7940: 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 tLastError());.
7950: 20 09 69 66 20 28 69 6e 74 65 72 70 20 21 3d 20 .if (interp !=
7960: 4e 55 4c 4c 29 20 7b 0a 20 20 09 20 20 20 20 54 NULL) {. . T
7970: 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 cl_AppendResult(
7980: 69 6e 74 65 72 70 2c 0a 20 20 09 09 20 20 20 20 interp,. ..
7990: 22 65 72 72 6f 72 20 67 65 74 74 69 6e 67 20 77 "error getting w
79a0: 6f 72 6b 69 6e 67 20 64 69 72 65 63 74 6f 72 79 orking directory
79b0: 20 6e 61 6d 65 3a 20 22 2c 0a 2d 2d 2d 20 31 35 name: ",.--- 15
79c0: 32 35 2c 31 35 33 31 20 2d 2d 2d 2d 0a 20 20 20 25,1531 ----.
79d0: 20 20 20 63 68 61 72 20 2a 70 3b 0a 20 20 0a 20 char *p;. .
79e0: 20 20 20 20 20 69 66 20 28 28 2a 74 63 6c 57 69 if ((*tclWi
79f0: 6e 50 72 6f 63 73 2d 3e 67 65 74 43 75 72 72 65 nProcs->getCurre
7a00: 6e 74 44 69 72 65 63 74 6f 72 79 50 72 6f 63 29 ntDirectoryProc)
7a10: 28 4d 41 58 5f 50 41 54 48 2c 20 62 75 66 66 65 (MAX_PATH, buffe
7a20: 72 29 20 3d 3d 20 30 29 20 7b 0a 21 20 09 54 63 r) == 0) {.! .Tc
7a30: 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f l_WinConvertErro
7a40: 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 r(GetLastError()
7a50: 29 3b 0a 20 20 09 69 66 20 28 69 6e 74 65 72 70 );. .if (interp
7a60: 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 20 20 09 20 != NULL) {. .
7a70: 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 Tcl_AppendRes
7a80: 75 6c 74 28 69 6e 74 65 72 70 2c 0a 20 20 09 09 ult(interp,. ..
7a90: 20 20 20 20 22 65 72 72 6f 72 20 67 65 74 74 69 "error getti
7aa0: 6e 67 20 77 6f 72 6b 69 6e 67 20 64 69 72 65 63 ng working direc
7ab0: 74 6f 72 79 20 6e 61 6d 65 3a 20 22 2c 0a 0a 2a tory name: ",..*
7ac0: 2a 2a 20 77 69 6e 2f 74 63 6c 57 69 6e 4c 6f 61 ** win/tclWinLoa
7ad0: 64 2e 63 09 31 30 20 4f 63 74 20 32 30 30 32 20 d.c.10 Oct 2002
7ae0: 31 32 3a 32 35 3a 35 33 20 2d 30 30 30 30 09 31 12:25:53 -0000.1
7af0: 2e 31 35 0a 2d 2d 2d 20 77 69 6e 2f 74 63 6c 57 .15.--- win/tclW
7b00: 69 6e 4c 6f 61 64 2e 63 09 34 20 53 65 70 20 32 inLoad.c.4 Sep 2
7b10: 30 30 33 20 32 31 3a 32 30 3a 35 34 20 2d 30 30 003 21:20:54 -00
7b20: 30 30 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 00.*************
7b30: 2a 2a 0a 2a 2a 2a 20 31 31 36 2c 31 32 32 20 2a **.*** 116,122 *
7b40: 2a 2a 2a 0a 20 20 09 09 09 22 20 72 6f 75 74 69 ***. ..." routi
7b50: 6e 65 20 66 61 69 6c 65 64 22 2c 20 28 63 68 61 ne failed", (cha
7b60: 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 20 20 09 09 r *) NULL);. ..
7b70: 62 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 64 65 break;. . de
7b80: 66 61 75 6c 74 3a 0a 21 20 09 09 54 63 6c 57 69 fault:.! ..TclWi
7b90: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 6c 61 nConvertError(la
7ba0: 73 74 45 72 72 6f 72 29 3b 0a 20 20 09 09 54 63 stError);. ..Tc
7bb0: 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 l_AppendResult(i
7bc0: 6e 74 65 72 70 2c 20 54 63 6c 5f 50 6f 73 69 78 nterp, Tcl_Posix
7bd0: 45 72 72 6f 72 28 69 6e 74 65 72 70 29 2c 0a 20 Error(interp),.
7be0: 20 09 09 09 28 63 68 61 72 20 2a 29 20 4e 55 4c ...(char *) NUL
7bf0: 4c 29 3b 0a 20 20 09 7d 0a 2d 2d 2d 20 31 31 36 L);. .}.--- 116
7c00: 2c 31 32 32 20 2d 2d 2d 2d 0a 20 20 09 09 09 22 ,122 ----. ..."
7c10: 20 72 6f 75 74 69 6e 65 20 66 61 69 6c 65 64 22 routine failed"
7c20: 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 29 , (char *) NULL)
7c30: 3b 0a 20 20 09 09 62 72 65 61 6b 3b 0a 20 20 09 ;. ..break;. .
7c40: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 21 20 09 default:.! .
7c50: 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 .Tcl_WinConvertE
7c60: 72 72 6f 72 28 6c 61 73 74 45 72 72 6f 72 29 3b rror(lastError);
7c70: 0a 20 20 09 09 54 63 6c 5f 41 70 70 65 6e 64 52 . ..Tcl_AppendR
7c80: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 54 63 esult(interp, Tc
7c90: 6c 5f 50 6f 73 69 78 45 72 72 6f 72 28 69 6e 74 l_PosixError(int
7ca0: 65 72 70 29 2c 0a 20 20 09 09 09 28 63 68 61 72 erp),. ...(char
7cb0: 20 2a 29 20 4e 55 4c 4c 29 3b 0a 20 20 09 7d 0a *) NULL);. .}.
7cc0: 0a 2a 2a 2a 20 77 69 6e 2f 74 63 6c 57 69 6e 50 .*** win/tclWinP
7cd0: 69 70 65 2e 63 09 31 35 20 41 75 67 20 32 30 30 ipe.c.15 Aug 200
7ce0: 33 20 30 31 3a 34 30 3a 35 39 20 2d 30 30 30 30 3 01:40:59 -0000
7cf0: 09 31 2e 33 36 0a 2d 2d 2d 20 77 69 6e 2f 74 63 .1.36.--- win/tc
7d00: 6c 57 69 6e 50 69 70 65 2e 63 09 34 20 53 65 70 lWinPipe.c.4 Sep
7d10: 20 32 30 30 33 20 32 31 3a 32 30 3a 35 37 20 2d 2003 21:20:57 -
7d20: 30 30 30 30 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0000.***********
7d30: 2a 2a 2a 2a 0a 2a 2a 2a 20 35 39 37 2c 36 30 33 ****.*** 597,603
7d40: 20 2a 2a 2a 2a 0a 20 20 09 20 20 20 20 61 63 63 ****. . acc
7d50: 65 73 73 4d 6f 64 65 20 3d 20 28 47 45 4e 45 52 essMode = (GENER
7d60: 49 43 5f 52 45 41 44 20 7c 20 47 45 4e 45 52 49 IC_READ | GENERI
7d70: 43 5f 57 52 49 54 45 29 3b 0a 20 20 09 20 20 20 C_WRITE);. .
7d80: 20 62 72 65 61 6b 3b 0a 20 20 09 64 65 66 61 75 break;. .defau
7d90: 6c 74 3a 0a 21 20 09 20 20 20 20 54 63 6c 57 69 lt:.! . TclWi
7da0: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 45 52 nConvertError(ER
7db0: 52 4f 52 5f 49 4e 56 41 4c 49 44 5f 46 55 4e 43 ROR_INVALID_FUNC
7dc0: 54 49 4f 4e 29 3b 0a 20 20 09 20 20 20 20 72 65 TION);. . re
7dd0: 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20 20 20 20 turn NULL;.
7de0: 20 7d 0a 20 20 0a 2d 2d 2d 20 35 39 37 2c 36 30 }. .--- 597,60
7df0: 33 20 2d 2d 2d 2d 0a 20 20 09 20 20 20 20 61 63 3 ----. . ac
7e00: 63 65 73 73 4d 6f 64 65 20 3d 20 28 47 45 4e 45 cessMode = (GENE
7e10: 52 49 43 5f 52 45 41 44 20 7c 20 47 45 4e 45 52 RIC_READ | GENER
7e20: 49 43 5f 57 52 49 54 45 29 3b 0a 20 20 09 20 20 IC_WRITE);. .
7e30: 20 20 62 72 65 61 6b 3b 0a 20 20 09 64 65 66 61 break;. .defa
7e40: 75 6c 74 3a 0a 21 20 09 20 20 20 20 54 63 6c 5f ult:.! . Tcl_
7e50: 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 WinConvertError(
7e60: 45 52 52 4f 52 5f 49 4e 56 41 4c 49 44 5f 46 55 ERROR_INVALID_FU
7e70: 4e 43 54 49 4f 4e 29 3b 0a 20 20 09 20 20 20 20 NCTION);. .
7e80: 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20 20 return NULL;.
7e90: 20 20 20 7d 0a 20 20 0a 2a 2a 2a 2a 2a 2a 2a 2a }. .********
7ea0: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 36 36 30 2c *******.*** 660,
7eb0: 36 36 36 20 2a 2a 2a 2a 0a 20 20 09 69 66 20 28 666 ****. .if (
7ec0: 28 65 72 72 20 26 20 30 78 66 66 66 66 4c 29 20 (err & 0xffffL)
7ed0: 3d 3d 20 45 52 52 4f 52 5f 4f 50 45 4e 5f 46 41 == ERROR_OPEN_FA
7ee0: 49 4c 45 44 29 20 7b 0a 20 20 09 20 20 20 20 65 ILED) {. . e
7ef0: 72 72 20 3d 20 28 6d 6f 64 65 20 26 20 4f 5f 43 rr = (mode & O_C
7f00: 52 45 41 54 29 20 3f 20 45 52 52 4f 52 5f 46 49 REAT) ? ERROR_FI
7f10: 4c 45 5f 45 58 49 53 54 53 20 3a 20 45 52 52 4f LE_EXISTS : ERRO
7f20: 52 5f 46 49 4c 45 5f 4e 4f 54 5f 46 4f 55 4e 44 R_FILE_NOT_FOUND
7f30: 3b 0a 20 20 09 7d 0a 21 20 20 20 20 20 20 20 20 ;. .}.!
7f40: 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 TclWinConvertEr
7f50: 72 6f 72 28 65 72 72 29 3b 0a 20 20 20 20 20 20 ror(err);.
7f60: 20 20 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b return NULL;
7f70: 0a 20 20 20 20 20 20 7d 0a 20 20 0a 2d 2d 2d 20 . }. .---
7f80: 36 36 30 2c 36 36 36 20 2d 2d 2d 2d 0a 20 20 09 660,666 ----. .
7f90: 69 66 20 28 28 65 72 72 20 26 20 30 78 66 66 66 if ((err & 0xfff
7fa0: 66 4c 29 20 3d 3d 20 45 52 52 4f 52 5f 4f 50 45 fL) == ERROR_OPE
7fb0: 4e 5f 46 41 49 4c 45 44 29 20 7b 0a 20 20 09 20 N_FAILED) {. .
7fc0: 20 20 20 65 72 72 20 3d 20 28 6d 6f 64 65 20 26 err = (mode &
7fd0: 20 4f 5f 43 52 45 41 54 29 20 3f 20 45 52 52 4f O_CREAT) ? ERRO
7fe0: 52 5f 46 49 4c 45 5f 45 58 49 53 54 53 20 3a 20 R_FILE_EXISTS :
7ff0: 45 52 52 4f 52 5f 46 49 4c 45 5f 4e 4f 54 5f 46 ERROR_FILE_NOT_F
8000: 4f 55 4e 44 3b 0a 20 20 09 7d 0a 21 20 20 20 20 OUND;. .}.!
8010: 20 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 Tcl_WinConv
8020: 65 72 74 45 72 72 6f 72 28 65 72 72 29 3b 0a 20 ertError(err);.
8030: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return
8040: 4e 55 4c 4c 3b 0a 20 20 20 20 20 20 7d 0a 20 20 NULL;. }.
8050: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
8060: 0a 2a 2a 2a 20 37 36 30 2c 37 36 36 20 2a 2a 2a .*** 760,766 ***
8070: 2a 0a 20 20 09 54 63 6c 5f 44 53 74 72 69 6e 67 *. .Tcl_DString
8080: 46 72 65 65 28 26 64 73 74 72 69 6e 67 29 3b 0a Free(&dstring);.
8090: 20 20 20 20 20 20 7d 0a 20 20 0a 21 20 20 20 20 }. .!
80a0: 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 TclWinConvertEr
80b0: 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 ror(GetLastError
80c0: 28 29 29 3b 0a 20 20 20 20 20 20 43 6c 6f 73 65 ());. Close
80d0: 48 61 6e 64 6c 65 28 68 61 6e 64 6c 65 29 3b 0a Handle(handle);.
80e0: 20 20 20 20 20 20 28 2a 74 63 6c 57 69 6e 50 72 (*tclWinPr
80f0: 6f 63 73 2d 3e 64 65 6c 65 74 65 46 69 6c 65 50 ocs->deleteFileP
8100: 72 6f 63 29 28 28 54 43 48 41 52 20 2a 29 20 6e roc)((TCHAR *) n
8110: 61 6d 65 29 3b 0a 20 20 20 20 20 20 72 65 74 75 ame);. retu
8120: 72 6e 20 4e 55 4c 4c 3b 0a 2d 2d 2d 20 37 36 30 rn NULL;.--- 760
8130: 2c 37 36 36 20 2d 2d 2d 2d 0a 20 20 09 54 63 6c ,766 ----. .Tcl
8140: 5f 44 53 74 72 69 6e 67 46 72 65 65 28 26 64 73 _DStringFree(&ds
8150: 74 72 69 6e 67 29 3b 0a 20 20 20 20 20 20 7d 0a tring);. }.
8160: 20 20 0a 21 20 20 20 20 20 54 63 6c 5f 57 69 6e .! Tcl_Win
8170: 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 ConvertError(Get
8180: 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 LastError());.
8190: 20 20 20 20 43 6c 6f 73 65 48 61 6e 64 6c 65 28 CloseHandle(
81a0: 68 61 6e 64 6c 65 29 3b 0a 20 20 20 20 20 20 28 handle);. (
81b0: 2a 74 63 6c 57 69 6e 50 72 6f 63 73 2d 3e 64 65 *tclWinProcs->de
81c0: 6c 65 74 65 46 69 6c 65 50 72 6f 63 29 28 28 54 leteFileProc)((T
81d0: 43 48 41 52 20 2a 29 20 6e 61 6d 65 29 3b 0a 20 CHAR *) name);.
81e0: 20 20 20 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c return NULL
81f0: 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ;.**************
8200: 2a 0a 2a 2a 2a 20 38 32 35 2c 38 33 31 20 2a 2a *.*** 825,831 **
8210: 2a 2a 0a 20 20 09 72 65 74 75 72 6e 20 31 3b 0a **. .return 1;.
8220: 20 20 20 20 20 20 7d 0a 20 20 0a 21 20 20 20 20 }. .!
8230: 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 TclWinConvertEr
8240: 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 ror(GetLastError
8250: 28 29 29 3b 0a 20 20 20 20 20 20 72 65 74 75 72 ());. retur
8260: 6e 20 30 3b 0a 20 20 7d 0a 20 20 0c 0a 2d 2d 2d n 0;. }. ..---
8270: 20 38 32 35 2c 38 33 31 20 2d 2d 2d 2d 0a 20 20 825,831 ----.
8280: 09 72 65 74 75 72 6e 20 31 3b 0a 20 20 20 20 20 .return 1;.
8290: 20 7d 0a 20 20 0a 21 20 20 20 20 20 54 63 6c 5f }. .! Tcl_
82a0: 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 WinConvertError(
82b0: 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b GetLastError());
82c0: 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 3b . return 0;
82d0: 0a 20 20 7d 0a 20 20 0c 0a 2a 2a 2a 2a 2a 2a 2a . }. ..*******
82e0: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 38 36 36 ********.*** 866
82f0: 2c 38 37 32 20 2a 2a 2a 2a 0a 20 20 09 09 09 20 ,872 ****. ...
8300: 20 20 20 26 26 20 28 47 65 74 53 74 64 48 61 6e && (GetStdHan
8310: 64 6c 65 28 53 54 44 5f 45 52 52 4f 52 5f 48 41 dle(STD_ERROR_HA
8320: 4e 44 4c 45 29 20 21 3d 20 66 69 6c 65 50 74 72 NDLE) != filePtr
8330: 2d 3e 68 61 6e 64 6c 65 29 29 29 20 7b 0a 20 20 ->handle))) {.
8340: 09 09 69 66 20 28 66 69 6c 65 50 74 72 2d 3e 68 ..if (filePtr->h
8350: 61 6e 64 6c 65 20 21 3d 20 4e 55 4c 4c 20 26 26 andle != NULL &&
8360: 0a 20 20 09 09 09 43 6c 6f 73 65 48 61 6e 64 6c . ...CloseHandl
8370: 65 28 66 69 6c 65 50 74 72 2d 3e 68 61 6e 64 6c e(filePtr->handl
8380: 65 29 20 3d 3d 20 46 41 4c 53 45 29 20 7b 0a 21 e) == FALSE) {.!
8390: 20 09 09 20 20 20 20 54 63 6c 57 69 6e 43 6f 6e .. TclWinCon
83a0: 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 vertError(GetLas
83b0: 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 09 20 tError());. ..
83c0: 20 20 20 63 6b 66 72 65 65 28 28 63 68 61 72 20 ckfree((char
83d0: 2a 29 20 66 69 6c 65 50 74 72 29 3b 0a 20 20 09 *) filePtr);. .
83e0: 09 20 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 0a . return -1;.
83f0: 20 20 09 09 7d 0a 2d 2d 2d 20 38 36 36 2c 38 37 ..}.--- 866,87
8400: 32 20 2d 2d 2d 2d 0a 20 20 09 09 09 20 20 20 20 2 ----. ...
8410: 26 26 20 28 47 65 74 53 74 64 48 61 6e 64 6c 65 && (GetStdHandle
8420: 28 53 54 44 5f 45 52 52 4f 52 5f 48 41 4e 44 4c (STD_ERROR_HANDL
8430: 45 29 20 21 3d 20 66 69 6c 65 50 74 72 2d 3e 68 E) != filePtr->h
8440: 61 6e 64 6c 65 29 29 29 20 7b 0a 20 20 09 09 69 andle))) {. ..i
8450: 66 20 28 66 69 6c 65 50 74 72 2d 3e 68 61 6e 64 f (filePtr->hand
8460: 6c 65 20 21 3d 20 4e 55 4c 4c 20 26 26 0a 20 20 le != NULL &&.
8470: 09 09 09 43 6c 6f 73 65 48 61 6e 64 6c 65 28 66 ...CloseHandle(f
8480: 69 6c 65 50 74 72 2d 3e 68 61 6e 64 6c 65 29 20 ilePtr->handle)
8490: 3d 3d 20 46 41 4c 53 45 29 20 7b 0a 21 20 09 09 == FALSE) {.! ..
84a0: 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 Tcl_WinConve
84b0: 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 rtError(GetLastE
84c0: 72 72 6f 72 28 29 29 3b 0a 20 20 09 09 20 20 20 rror());. ..
84d0: 20 63 6b 66 72 65 65 28 28 63 68 61 72 20 2a 29 ckfree((char *)
84e0: 20 66 69 6c 65 50 74 72 29 3b 0a 20 20 09 09 20 filePtr);. ..
84f0: 20 20 20 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 return -1;.
8500: 09 09 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ..}.************
8510: 2a 2a 2a 0a 2a 2a 2a 20 31 30 36 36 2c 31 30 37 ***.*** 1066,107
8520: 32 20 2a 2a 2a 2a 0a 20 20 09 09 30 2c 20 54 52 2 ****. ..0, TR
8530: 55 45 2c 20 44 55 50 4c 49 43 41 54 45 5f 53 41 UE, DUPLICATE_SA
8540: 4d 45 5f 41 43 43 45 53 53 29 3b 0a 20 20 20 20 ME_ACCESS);.
8550: 20 20 7d 0a 20 20 20 20 20 20 69 66 20 28 73 74 }. if (st
8560: 61 72 74 49 6e 66 6f 2e 68 53 74 64 49 6e 70 75 artInfo.hStdInpu
8570: 74 20 3d 3d 20 49 4e 56 41 4c 49 44 5f 48 41 4e t == INVALID_HAN
8580: 44 4c 45 5f 56 41 4c 55 45 29 20 7b 0a 21 20 09 DLE_VALUE) {.! .
8590: 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 TclWinConvertErr
85a0: 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 or(GetLastError(
85b0: 29 29 3b 0a 20 20 09 54 63 6c 5f 41 70 70 65 6e ));. .Tcl_Appen
85c0: 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 dResult(interp,
85d0: 22 63 6f 75 6c 64 6e 27 74 20 64 75 70 6c 69 63 "couldn't duplic
85e0: 61 74 65 20 69 6e 70 75 74 20 68 61 6e 64 6c 65 ate input handle
85f0: 3a 20 22 2c 0a 20 20 09 09 54 63 6c 5f 50 6f 73 : ",. ..Tcl_Pos
8600: 69 78 45 72 72 6f 72 28 69 6e 74 65 72 70 29 2c ixError(interp),
8610: 20 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 29 3b (char *) NULL);
8620: 0a 20 20 09 67 6f 74 6f 20 65 6e 64 3b 0a 2d 2d . .goto end;.--
8630: 2d 20 31 30 36 36 2c 31 30 37 32 20 2d 2d 2d 2d - 1066,1072 ----
8640: 0a 20 20 09 09 30 2c 20 54 52 55 45 2c 20 44 55 . ..0, TRUE, DU
8650: 50 4c 49 43 41 54 45 5f 53 41 4d 45 5f 41 43 43 PLICATE_SAME_ACC
8660: 45 53 53 29 3b 0a 20 20 20 20 20 20 7d 0a 20 20 ESS);. }.
8670: 20 20 20 20 69 66 20 28 73 74 61 72 74 49 6e 66 if (startInf
8680: 6f 2e 68 53 74 64 49 6e 70 75 74 20 3d 3d 20 49 o.hStdInput == I
8690: 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 5f 56 41 NVALID_HANDLE_VA
86a0: 4c 55 45 29 20 7b 0a 21 20 09 54 63 6c 5f 57 69 LUE) {.! .Tcl_Wi
86b0: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 nConvertError(Ge
86c0: 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 tLastError());.
86d0: 20 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 .Tcl_AppendResu
86e0: 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 6f 75 6c lt(interp, "coul
86f0: 64 6e 27 74 20 64 75 70 6c 69 63 61 74 65 20 69 dn't duplicate i
8700: 6e 70 75 74 20 68 61 6e 64 6c 65 3a 20 22 2c 0a nput handle: ",.
8710: 20 20 09 09 54 63 6c 5f 50 6f 73 69 78 45 72 72 ..Tcl_PosixErr
8720: 6f 72 28 69 6e 74 65 72 70 29 2c 20 28 63 68 61 or(interp), (cha
8730: 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 20 20 09 67 r *) NULL);. .g
8740: 6f 74 6f 20 65 6e 64 3b 0a 2a 2a 2a 2a 2a 2a 2a oto end;.*******
8750: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 31 30 ********.*** 110
8760: 32 2c 31 31 30 38 20 2a 2a 2a 2a 0a 20 20 09 09 2,1108 ****. ..
8770: 30 2c 20 54 52 55 45 2c 20 44 55 50 4c 49 43 41 0, TRUE, DUPLICA
8780: 54 45 5f 53 41 4d 45 5f 41 43 43 45 53 53 29 3b TE_SAME_ACCESS);
8790: 0a 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 69 . }. i
87a0: 66 20 28 73 74 61 72 74 49 6e 66 6f 2e 68 53 74 f (startInfo.hSt
87b0: 64 4f 75 74 70 75 74 20 3d 3d 20 49 4e 56 41 4c dOutput == INVAL
87c0: 49 44 5f 48 41 4e 44 4c 45 5f 56 41 4c 55 45 29 ID_HANDLE_VALUE)
87d0: 20 7b 0a 21 20 09 54 63 6c 57 69 6e 43 6f 6e 76 {.! .TclWinConv
87e0: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
87f0: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 54 63 6c Error());. .Tcl
8800: 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e _AppendResult(in
8810: 74 65 72 70 2c 20 22 63 6f 75 6c 64 6e 27 74 20 terp, "couldn't
8820: 64 75 70 6c 69 63 61 74 65 20 6f 75 74 70 75 74 duplicate output
8830: 20 68 61 6e 64 6c 65 3a 20 22 2c 0a 20 20 09 09 handle: ",. ..
8840: 54 63 6c 5f 50 6f 73 69 78 45 72 72 6f 72 28 69 Tcl_PosixError(i
8850: 6e 74 65 72 70 29 2c 20 28 63 68 61 72 20 2a 29 nterp), (char *)
8860: 20 4e 55 4c 4c 29 3b 0a 20 20 09 67 6f 74 6f 20 NULL);. .goto
8870: 65 6e 64 3b 0a 2d 2d 2d 20 31 31 30 32 2c 31 31 end;.--- 1102,11
8880: 30 38 20 2d 2d 2d 2d 0a 20 20 09 09 30 2c 20 54 08 ----. ..0, T
8890: 52 55 45 2c 20 44 55 50 4c 49 43 41 54 45 5f 53 RUE, DUPLICATE_S
88a0: 41 4d 45 5f 41 43 43 45 53 53 29 3b 0a 20 20 20 AME_ACCESS);.
88b0: 20 20 20 7d 0a 20 20 20 20 20 20 69 66 20 28 73 }. if (s
88c0: 74 61 72 74 49 6e 66 6f 2e 68 53 74 64 4f 75 74 tartInfo.hStdOut
88d0: 70 75 74 20 3d 3d 20 49 4e 56 41 4c 49 44 5f 48 put == INVALID_H
88e0: 41 4e 44 4c 45 5f 56 41 4c 55 45 29 20 7b 0a 21 ANDLE_VALUE) {.!
88f0: 20 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 .Tcl_WinConvert
8900: 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 72 Error(GetLastErr
8910: 6f 72 28 29 29 3b 0a 20 20 09 54 63 6c 5f 41 70 or());. .Tcl_Ap
8920: 70 65 6e 64 52 65 73 75 6c 74 28 69 6e 74 65 72 pendResult(inter
8930: 70 2c 20 22 63 6f 75 6c 64 6e 27 74 20 64 75 70 p, "couldn't dup
8940: 6c 69 63 61 74 65 20 6f 75 74 70 75 74 20 68 61 licate output ha
8950: 6e 64 6c 65 3a 20 22 2c 0a 20 20 09 09 54 63 6c ndle: ",. ..Tcl
8960: 5f 50 6f 73 69 78 45 72 72 6f 72 28 69 6e 74 65 _PosixError(inte
8970: 72 70 29 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 rp), (char *) NU
8980: 4c 4c 29 3b 0a 20 20 09 67 6f 74 6f 20 65 6e 64 LL);. .goto end
8990: 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ;.**************
89a0: 2a 0a 2a 2a 2a 20 31 31 32 31 2c 31 31 32 37 20 *.*** 1121,1127
89b0: 2a 2a 2a 2a 0a 20 20 09 09 30 2c 20 54 52 55 45 ****. ..0, TRUE
89c0: 2c 20 44 55 50 4c 49 43 41 54 45 5f 53 41 4d 45 , DUPLICATE_SAME
89d0: 5f 41 43 43 45 53 53 29 3b 0a 20 20 20 20 20 20 _ACCESS);.
89e0: 7d 20 0a 20 20 20 20 20 20 69 66 20 28 73 74 61 } . if (sta
89f0: 72 74 49 6e 66 6f 2e 68 53 74 64 45 72 72 6f 72 rtInfo.hStdError
8a00: 20 3d 3d 20 49 4e 56 41 4c 49 44 5f 48 41 4e 44 == INVALID_HAND
8a10: 4c 45 5f 56 41 4c 55 45 29 20 7b 0a 21 20 09 54 LE_VALUE) {.! .T
8a20: 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f clWinConvertErro
8a30: 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 r(GetLastError()
8a40: 29 3b 0a 20 20 09 54 63 6c 5f 41 70 70 65 6e 64 );. .Tcl_Append
8a50: 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 Result(interp, "
8a60: 63 6f 75 6c 64 6e 27 74 20 64 75 70 6c 69 63 61 couldn't duplica
8a70: 74 65 20 65 72 72 6f 72 20 68 61 6e 64 6c 65 3a te error handle:
8a80: 20 22 2c 0a 20 20 09 09 54 63 6c 5f 50 6f 73 69 ",. ..Tcl_Posi
8a90: 78 45 72 72 6f 72 28 69 6e 74 65 72 70 29 2c 20 xError(interp),
8aa0: 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a (char *) NULL);.
8ab0: 20 20 09 67 6f 74 6f 20 65 6e 64 3b 0a 2d 2d 2d .goto end;.---
8ac0: 20 31 31 32 31 2c 31 31 32 37 20 2d 2d 2d 2d 0a 1121,1127 ----.
8ad0: 20 20 09 09 30 2c 20 54 52 55 45 2c 20 44 55 50 ..0, TRUE, DUP
8ae0: 4c 49 43 41 54 45 5f 53 41 4d 45 5f 41 43 43 45 LICATE_SAME_ACCE
8af0: 53 53 29 3b 0a 20 20 20 20 20 20 7d 20 0a 20 20 SS);. } .
8b00: 20 20 20 20 69 66 20 28 73 74 61 72 74 49 6e 66 if (startInf
8b10: 6f 2e 68 53 74 64 45 72 72 6f 72 20 3d 3d 20 49 o.hStdError == I
8b20: 4e 56 41 4c 49 44 5f 48 41 4e 44 4c 45 5f 56 41 NVALID_HANDLE_VA
8b30: 4c 55 45 29 20 7b 0a 21 20 09 54 63 6c 5f 57 69 LUE) {.! .Tcl_Wi
8b40: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 nConvertError(Ge
8b50: 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 tLastError());.
8b60: 20 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 .Tcl_AppendResu
8b70: 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 6f 75 6c lt(interp, "coul
8b80: 64 6e 27 74 20 64 75 70 6c 69 63 61 74 65 20 65 dn't duplicate e
8b90: 72 72 6f 72 20 68 61 6e 64 6c 65 3a 20 22 2c 0a rror handle: ",.
8ba0: 20 20 09 09 54 63 6c 5f 50 6f 73 69 78 45 72 72 ..Tcl_PosixErr
8bb0: 6f 72 28 69 6e 74 65 72 70 29 2c 20 28 63 68 61 or(interp), (cha
8bc0: 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 20 20 09 67 r *) NULL);. .g
8bd0: 6f 74 6f 20 65 6e 64 3b 0a 2a 2a 2a 2a 2a 2a 2a oto end;.*******
8be0: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 32 36 ********.*** 126
8bf0: 30 2c 31 32 36 36 20 2a 2a 2a 2a 0a 20 20 20 20 0,1266 ****.
8c00: 20 20 69 66 20 28 28 2a 74 63 6c 57 69 6e 50 72 if ((*tclWinPr
8c10: 6f 63 73 2d 3e 63 72 65 61 74 65 50 72 6f 63 65 ocs->createProce
8c20: 73 73 50 72 6f 63 29 28 4e 55 4c 4c 2c 20 0a 20 ssProc)(NULL, .
8c30: 20 09 20 20 20 20 28 54 43 48 41 52 20 2a 29 20 . (TCHAR *)
8c40: 54 63 6c 5f 44 53 74 72 69 6e 67 56 61 6c 75 65 Tcl_DStringValue
8c50: 28 26 63 6d 64 4c 69 6e 65 29 2c 20 4e 55 4c 4c (&cmdLine), NULL
8c60: 2c 20 4e 55 4c 4c 2c 20 54 52 55 45 2c 20 0a 20 , NULL, TRUE, .
8c70: 20 09 20 20 20 20 28 44 57 4f 52 44 29 20 63 72 . (DWORD) cr
8c80: 65 61 74 65 46 6c 61 67 73 2c 20 4e 55 4c 4c 2c eateFlags, NULL,
8c90: 20 4e 55 4c 4c 2c 20 26 73 74 61 72 74 49 6e 66 NULL, &startInf
8ca0: 6f 2c 20 26 70 72 6f 63 49 6e 66 6f 29 20 3d 3d o, &procInfo) ==
8cb0: 20 30 29 20 7b 0a 21 20 09 54 63 6c 57 69 6e 43 0) {.! .TclWinC
8cc0: 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c onvertError(GetL
8cd0: 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 astError());. .
8ce0: 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 Tcl_AppendResult
8cf0: 28 69 6e 74 65 72 70 2c 20 22 63 6f 75 6c 64 6e (interp, "couldn
8d00: 27 74 20 65 78 65 63 75 74 65 20 5c 22 22 2c 20 't execute \"",
8d10: 61 72 67 76 5b 30 5d 2c 0a 20 20 09 09 22 5c 22 argv[0],. .."\"
8d20: 3a 20 22 2c 20 54 63 6c 5f 50 6f 73 69 78 45 72 : ", Tcl_PosixEr
8d30: 72 6f 72 28 69 6e 74 65 72 70 29 2c 20 28 63 68 ror(interp), (ch
8d40: 61 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 20 20 09 ar *) NULL);. .
8d50: 67 6f 74 6f 20 65 6e 64 3b 0a 2d 2d 2d 20 31 32 goto end;.--- 12
8d60: 36 30 2c 31 32 36 36 20 2d 2d 2d 2d 0a 20 20 20 60,1266 ----.
8d70: 20 20 20 69 66 20 28 28 2a 74 63 6c 57 69 6e 50 if ((*tclWinP
8d80: 72 6f 63 73 2d 3e 63 72 65 61 74 65 50 72 6f 63 rocs->createProc
8d90: 65 73 73 50 72 6f 63 29 28 4e 55 4c 4c 2c 20 0a essProc)(NULL, .
8da0: 20 20 09 20 20 20 20 28 54 43 48 41 52 20 2a 29 . (TCHAR *)
8db0: 20 54 63 6c 5f 44 53 74 72 69 6e 67 56 61 6c 75 Tcl_DStringValu
8dc0: 65 28 26 63 6d 64 4c 69 6e 65 29 2c 20 4e 55 4c e(&cmdLine), NUL
8dd0: 4c 2c 20 4e 55 4c 4c 2c 20 54 52 55 45 2c 20 0a L, NULL, TRUE, .
8de0: 20 20 09 20 20 20 20 28 44 57 4f 52 44 29 20 63 . (DWORD) c
8df0: 72 65 61 74 65 46 6c 61 67 73 2c 20 4e 55 4c 4c reateFlags, NULL
8e00: 2c 20 4e 55 4c 4c 2c 20 26 73 74 61 72 74 49 6e , NULL, &startIn
8e10: 66 6f 2c 20 26 70 72 6f 63 49 6e 66 6f 29 20 3d fo, &procInfo) =
8e20: 3d 20 30 29 20 7b 0a 21 20 09 54 63 6c 5f 57 69 = 0) {.! .Tcl_Wi
8e30: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 nConvertError(Ge
8e40: 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 tLastError());.
8e50: 20 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 .Tcl_AppendResu
8e60: 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 6f 75 6c lt(interp, "coul
8e70: 64 6e 27 74 20 65 78 65 63 75 74 65 20 5c 22 22 dn't execute \""
8e80: 2c 20 61 72 67 76 5b 30 5d 2c 0a 20 20 09 09 22 , argv[0],. .."
8e90: 5c 22 3a 20 22 2c 20 54 63 6c 5f 50 6f 73 69 78 \": ", Tcl_Posix
8ea0: 45 72 72 6f 72 28 69 6e 74 65 72 70 29 2c 20 28 Error(interp), (
8eb0: 63 68 61 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 20 char *) NULL);.
8ec0: 20 09 67 6f 74 6f 20 65 6e 64 3b 0a 2a 2a 2a 2a .goto end;.****
8ed0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 ***********.***
8ee0: 31 35 31 30 2c 31 35 31 36 20 2a 2a 2a 2a 0a 20 1510,1516 ****.
8ef0: 20 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67 Tcl_DString
8f00: 46 72 65 65 28 26 6e 61 6d 65 42 75 66 29 3b 0a Free(&nameBuf);.
8f10: 20 20 0a 20 20 20 20 20 20 69 66 20 28 61 70 70 . if (app
8f20: 6c 54 79 70 65 20 3d 3d 20 41 50 50 4c 5f 4e 4f lType == APPL_NO
8f30: 4e 45 29 20 7b 0a 21 20 09 54 63 6c 57 69 6e 43 NE) {.! .TclWinC
8f40: 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c onvertError(GetL
8f50: 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 astError());. .
8f60: 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 Tcl_AppendResult
8f70: 28 69 6e 74 65 72 70 2c 20 22 63 6f 75 6c 64 6e (interp, "couldn
8f80: 27 74 20 65 78 65 63 75 74 65 20 5c 22 22 2c 20 't execute \"",
8f90: 6f 72 69 67 69 6e 61 6c 4e 61 6d 65 2c 0a 20 20 originalName,.
8fa0: 09 09 22 5c 22 3a 20 22 2c 20 54 63 6c 5f 50 6f .."\": ", Tcl_Po
8fb0: 73 69 78 45 72 72 6f 72 28 69 6e 74 65 72 70 29 sixError(interp)
8fc0: 2c 20 28 63 68 61 72 20 2a 29 20 4e 55 4c 4c 29 , (char *) NULL)
8fd0: 3b 0a 20 20 09 72 65 74 75 72 6e 20 41 50 50 4c ;. .return APPL
8fe0: 5f 4e 4f 4e 45 3b 0a 2d 2d 2d 20 31 35 31 30 2c _NONE;.--- 1510,
8ff0: 31 35 31 36 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 1516 ----.
9000: 54 63 6c 5f 44 53 74 72 69 6e 67 46 72 65 65 28 Tcl_DStringFree(
9010: 26 6e 61 6d 65 42 75 66 29 3b 0a 20 20 0a 20 20 &nameBuf);. .
9020: 20 20 20 20 69 66 20 28 61 70 70 6c 54 79 70 65 if (applType
9030: 20 3d 3d 20 41 50 50 4c 5f 4e 4f 4e 45 29 20 7b == APPL_NONE) {
9040: 0a 21 20 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 .! .Tcl_WinConve
9050: 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 rtError(GetLastE
9060: 72 72 6f 72 28 29 29 3b 0a 20 20 09 54 63 6c 5f rror());. .Tcl_
9070: 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e 74 AppendResult(int
9080: 65 72 70 2c 20 22 63 6f 75 6c 64 6e 27 74 20 65 erp, "couldn't e
9090: 78 65 63 75 74 65 20 5c 22 22 2c 20 6f 72 69 67 xecute \"", orig
90a0: 69 6e 61 6c 4e 61 6d 65 2c 0a 20 20 09 09 22 5c inalName,. .."\
90b0: 22 3a 20 22 2c 20 54 63 6c 5f 50 6f 73 69 78 45 ": ", Tcl_PosixE
90c0: 72 72 6f 72 28 69 6e 74 65 72 70 29 2c 20 28 63 rror(interp), (c
90d0: 68 61 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 20 20 har *) NULL);.
90e0: 09 72 65 74 75 72 6e 20 41 50 50 4c 5f 4e 4f 4e .return APPL_NON
90f0: 45 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a E;.*************
9100: 2a 2a 0a 2a 2a 2a 20 32 31 36 31 2c 32 31 36 37 **.*** 2161,2167
9110: 20 2a 2a 2a 2a 0a 20 20 09 72 65 74 75 72 6e 20 ****. .return
9120: 62 79 74 65 73 52 65 61 64 3b 0a 20 20 20 20 20 bytesRead;.
9130: 20 7d 0a 20 20 0a 21 20 20 20 20 20 54 63 6c 57 }. .! TclW
9140: 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 inConvertError(G
9150: 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a etLastError());.
9160: 20 20 20 20 20 20 69 66 20 28 65 72 72 6e 6f 20 if (errno
9170: 3d 3d 20 45 50 49 50 45 29 20 7b 0a 20 20 09 69 == EPIPE) {. .i
9180: 6e 66 6f 50 74 72 2d 3e 72 65 61 64 46 6c 61 67 nfoPtr->readFlag
9190: 73 20 7c 3d 20 50 49 50 45 5f 45 4f 46 3b 0a 20 s |= PIPE_EOF;.
91a0: 20 09 72 65 74 75 72 6e 20 30 3b 0a 2d 2d 2d 20 .return 0;.---
91b0: 32 31 36 31 2c 32 31 36 37 20 2d 2d 2d 2d 0a 20 2161,2167 ----.
91c0: 20 09 72 65 74 75 72 6e 20 62 79 74 65 73 52 65 .return bytesRe
91d0: 61 64 3b 0a 20 20 20 20 20 20 7d 0a 20 20 0a 21 ad;. }. .!
91e0: 20 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 Tcl_WinConv
91f0: 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 ertError(GetLast
9200: 45 72 72 6f 72 28 29 29 3b 0a 20 20 20 20 20 20 Error());.
9210: 69 66 20 28 65 72 72 6e 6f 20 3d 3d 20 45 50 49 if (errno == EPI
9220: 50 45 29 20 7b 0a 20 20 09 69 6e 66 6f 50 74 72 PE) {. .infoPtr
9230: 2d 3e 72 65 61 64 46 6c 61 67 73 20 7c 3d 20 50 ->readFlags |= P
9240: 49 50 45 5f 45 4f 46 3b 0a 20 20 09 72 65 74 75 IPE_EOF;. .retu
9250: 72 6e 20 30 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a rn 0;.**********
9260: 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 32 32 31 36 2c 32 *****.*** 2216,2
9270: 32 32 32 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 20 222 ****.
9280: 2a 2f 0a 20 20 0a 20 20 20 20 20 20 69 66 20 28 */. . if (
9290: 69 6e 66 6f 50 74 72 2d 3e 77 72 69 74 65 45 72 infoPtr->writeEr
92a0: 72 6f 72 29 20 7b 0a 21 20 09 54 63 6c 57 69 6e ror) {.! .TclWin
92b0: 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 69 6e 66 ConvertError(inf
92c0: 6f 50 74 72 2d 3e 77 72 69 74 65 45 72 72 6f 72 oPtr->writeError
92d0: 29 3b 0a 20 20 09 69 6e 66 6f 50 74 72 2d 3e 77 );. .infoPtr->w
92e0: 72 69 74 65 45 72 72 6f 72 20 3d 20 30 3b 0a 20 riteError = 0;.
92f0: 20 09 67 6f 74 6f 20 65 72 72 6f 72 3b 0a 20 20 .goto error;.
9300: 20 20 20 20 7d 0a 2d 2d 2d 20 32 32 31 36 2c 32 }.--- 2216,2
9310: 32 32 32 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 222 ----.
9320: 2a 2f 0a 20 20 0a 20 20 20 20 20 20 69 66 20 28 */. . if (
9330: 69 6e 66 6f 50 74 72 2d 3e 77 72 69 74 65 45 72 infoPtr->writeEr
9340: 72 6f 72 29 20 7b 0a 21 20 09 54 63 6c 5f 57 69 ror) {.! .Tcl_Wi
9350: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 69 6e nConvertError(in
9360: 66 6f 50 74 72 2d 3e 77 72 69 74 65 45 72 72 6f foPtr->writeErro
9370: 72 29 3b 0a 20 20 09 69 6e 66 6f 50 74 72 2d 3e r);. .infoPtr->
9380: 77 72 69 74 65 45 72 72 6f 72 20 3d 20 30 3b 0a writeError = 0;.
9390: 20 20 09 67 6f 74 6f 20 65 72 72 6f 72 3b 0a 20 .goto error;.
93a0: 20 20 20 20 20 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a }.*********
93b0: 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 32 32 35 31 2c ******.*** 2251,
93c0: 32 32 35 37 20 2a 2a 2a 2a 0a 20 20 0a 20 20 09 2257 ****. . .
93d0: 69 66 20 28 57 72 69 74 65 46 69 6c 65 28 66 69 if (WriteFile(fi
93e0: 6c 65 50 74 72 2d 3e 68 61 6e 64 6c 65 2c 20 28 lePtr->handle, (
93f0: 4c 50 56 4f 49 44 29 20 62 75 66 2c 20 28 44 57 LPVOID) buf, (DW
9400: 4f 52 44 29 20 74 6f 57 72 69 74 65 2c 0a 20 20 ORD) toWrite,.
9410: 09 09 26 62 79 74 65 73 57 72 69 74 74 65 6e 2c ..&bytesWritten,
9420: 20 28 4c 50 4f 56 45 52 4c 41 50 50 45 44 29 20 (LPOVERLAPPED)
9430: 4e 55 4c 4c 29 20 3d 3d 20 46 41 4c 53 45 29 20 NULL) == FALSE)
9440: 7b 0a 21 20 09 20 20 20 20 54 63 6c 57 69 6e 43 {.! . TclWinC
9450: 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c onvertError(GetL
9460: 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 astError());. .
9470: 20 20 20 20 67 6f 74 6f 20 65 72 72 6f 72 3b 0a goto error;.
9480: 20 20 09 7d 0a 20 20 20 20 20 20 7d 0a 2d 2d 2d .}. }.---
9490: 20 32 32 35 31 2c 32 32 35 37 20 2d 2d 2d 2d 0a 2251,2257 ----.
94a0: 20 20 0a 20 20 09 69 66 20 28 57 72 69 74 65 46 . .if (WriteF
94b0: 69 6c 65 28 66 69 6c 65 50 74 72 2d 3e 68 61 6e ile(filePtr->han
94c0: 64 6c 65 2c 20 28 4c 50 56 4f 49 44 29 20 62 75 dle, (LPVOID) bu
94d0: 66 2c 20 28 44 57 4f 52 44 29 20 74 6f 57 72 69 f, (DWORD) toWri
94e0: 74 65 2c 0a 20 20 09 09 26 62 79 74 65 73 57 72 te,. ..&bytesWr
94f0: 69 74 74 65 6e 2c 20 28 4c 50 4f 56 45 52 4c 41 itten, (LPOVERLA
9500: 50 50 45 44 29 20 4e 55 4c 4c 29 20 3d 3d 20 46 PPED) NULL) == F
9510: 41 4c 53 45 29 20 7b 0a 21 20 09 20 20 20 20 54 ALSE) {.! . T
9520: 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 cl_WinConvertErr
9530: 6f 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 or(GetLastError(
9540: 29 29 3b 0a 20 20 09 20 20 20 20 67 6f 74 6f 20 ));. . goto
9550: 65 72 72 6f 72 3b 0a 20 20 09 7d 0a 20 20 20 20 error;. .}.
9560: 20 20 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a }.************
9570: 2a 2a 2a 0a 2a 2a 2a 20 32 37 36 38 2c 32 37 37 ***.*** 2768,277
9580: 34 20 2a 2a 2a 2a 0a 20 20 0a 20 20 09 69 66 20 4 ****. . .if
9590: 28 50 65 65 6b 4e 61 6d 65 64 50 69 70 65 28 68 (PeekNamedPipe(h
95a0: 61 6e 64 6c 65 2c 20 28 4c 50 56 4f 49 44 29 20 andle, (LPVOID)
95b0: 4e 55 4c 4c 2c 20 28 44 57 4f 52 44 29 20 30 2c NULL, (DWORD) 0,
95c0: 0a 20 20 09 09 28 4c 50 44 57 4f 52 44 29 20 4e . ..(LPDWORD) N
95d0: 55 4c 4c 2c 20 26 63 6f 75 6e 74 2c 20 28 4c 50 ULL, &count, (LP
95e0: 44 57 4f 52 44 29 20 4e 55 4c 4c 29 20 21 3d 20 DWORD) NULL) !=
95f0: 54 52 55 45 29 20 7b 0a 21 20 09 20 20 20 20 54 TRUE) {.! . T
9600: 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f clWinConvertErro
9610: 72 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 r(GetLastError()
9620: 29 3b 0a 20 20 09 20 20 20 20 2f 2a 0a 20 20 09 );. . /*. .
9630: 20 20 20 20 20 2a 20 43 68 65 63 6b 20 74 6f 20 * Check to
9640: 73 65 65 20 69 66 20 74 68 65 20 70 65 65 6b 20 see if the peek
9650: 66 61 69 6c 65 64 20 62 65 63 61 75 73 65 20 6f failed because o
9660: 66 20 45 4f 46 2e 0a 20 20 09 20 20 20 20 20 2a f EOF.. . *
9670: 2f 0a 2d 2d 2d 20 32 37 36 38 2c 32 37 37 34 20 /.--- 2768,2774
9680: 2d 2d 2d 2d 0a 20 20 0a 20 20 09 69 66 20 28 50 ----. . .if (P
9690: 65 65 6b 4e 61 6d 65 64 50 69 70 65 28 68 61 6e eekNamedPipe(han
96a0: 64 6c 65 2c 20 28 4c 50 56 4f 49 44 29 20 4e 55 dle, (LPVOID) NU
96b0: 4c 4c 2c 20 28 44 57 4f 52 44 29 20 30 2c 0a 20 LL, (DWORD) 0,.
96c0: 20 09 09 28 4c 50 44 57 4f 52 44 29 20 4e 55 4c ..(LPDWORD) NUL
96d0: 4c 2c 20 26 63 6f 75 6e 74 2c 20 28 4c 50 44 57 L, &count, (LPDW
96e0: 4f 52 44 29 20 4e 55 4c 4c 29 20 21 3d 20 54 52 ORD) NULL) != TR
96f0: 55 45 29 20 7b 0a 21 20 09 20 20 20 20 54 63 6c UE) {.! . Tcl
9700: 5f 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 _WinConvertError
9710: 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 (GetLastError())
9720: 3b 0a 20 20 09 20 20 20 20 2f 2a 0a 20 20 09 20 ;. . /*. .
9730: 20 20 20 20 2a 20 43 68 65 63 6b 20 74 6f 20 73 * Check to s
9740: 65 65 20 69 66 20 74 68 65 20 70 65 65 6b 20 66 ee if the peek f
9750: 61 69 6c 65 64 20 62 65 63 61 75 73 65 20 6f 66 ailed because of
9760: 20 45 4f 46 2e 0a 20 20 09 20 20 20 20 20 2a 2f EOF.. . */
9770: 0a 0a 2a 2a 2a 20 77 69 6e 2f 74 63 6c 57 69 6e ..*** win/tclWin
9780: 53 65 72 69 61 6c 2e 63 09 31 39 20 41 75 67 20 Serial.c.19 Aug
9790: 32 30 30 33 20 31 39 3a 33 39 3a 35 36 20 2d 30 2003 19:39:56 -0
97a0: 30 30 30 09 31 2e 32 38 0a 2d 2d 2d 20 77 69 6e 000.1.28.--- win
97b0: 2f 74 63 6c 57 69 6e 53 65 72 69 61 6c 2e 63 09 /tclWinSerial.c.
97c0: 34 20 53 65 70 20 32 30 30 33 20 32 31 3a 32 31 4 Sep 2003 21:21
97d0: 3a 30 30 20 2d 30 30 30 30 0a 2a 2a 2a 2a 2a 2a :00 -0000.******
97e0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 36 38 *********.*** 68
97f0: 36 2c 36 39 32 20 2a 2a 2a 2a 0a 20 20 09 20 20 6,692 ****. .
9800: 20 20 26 26 20 28 47 65 74 53 74 64 48 61 6e 64 && (GetStdHand
9810: 6c 65 28 53 54 44 5f 4f 55 54 50 55 54 5f 48 41 le(STD_OUTPUT_HA
9820: 4e 44 4c 45 29 20 21 3d 20 73 65 72 69 61 6c 50 NDLE) != serialP
9830: 74 72 2d 3e 68 61 6e 64 6c 65 29 0a 20 20 09 20 tr->handle). .
9840: 20 20 20 26 26 20 28 47 65 74 53 74 64 48 61 6e && (GetStdHan
9850: 64 6c 65 28 53 54 44 5f 45 52 52 4f 52 5f 48 41 dle(STD_ERROR_HA
9860: 4e 44 4c 45 29 20 21 3d 20 73 65 72 69 61 6c 50 NDLE) != serialP
9870: 74 72 2d 3e 68 61 6e 64 6c 65 29 29 29 20 7b 0a tr->handle))) {.
9880: 20 20 09 69 66 20 28 43 6c 6f 73 65 48 61 6e 64 .if (CloseHand
9890: 6c 65 28 73 65 72 69 61 6c 50 74 72 2d 3e 68 61 le(serialPtr->ha
98a0: 6e 64 6c 65 29 20 3d 3d 20 46 41 4c 53 45 29 20 ndle) == FALSE)
98b0: 7b 0a 21 20 09 20 20 20 20 54 63 6c 57 69 6e 43 {.! . TclWinC
98c0: 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c onvertError(GetL
98d0: 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 astError());. .
98e0: 20 20 20 20 65 72 72 6f 72 43 6f 64 65 20 3d 20 errorCode =
98f0: 65 72 72 6e 6f 3b 0a 20 20 09 7d 0a 20 20 20 20 errno;. .}.
9900: 20 20 7d 0a 2d 2d 2d 20 36 38 36 2c 36 39 32 20 }.--- 686,692
9910: 2d 2d 2d 2d 0a 20 20 09 20 20 20 20 26 26 20 28 ----. . && (
9920: 47 65 74 53 74 64 48 61 6e 64 6c 65 28 53 54 44 GetStdHandle(STD
9930: 5f 4f 55 54 50 55 54 5f 48 41 4e 44 4c 45 29 20 _OUTPUT_HANDLE)
9940: 21 3d 20 73 65 72 69 61 6c 50 74 72 2d 3e 68 61 != serialPtr->ha
9950: 6e 64 6c 65 29 0a 20 20 09 20 20 20 20 26 26 20 ndle). . &&
9960: 28 47 65 74 53 74 64 48 61 6e 64 6c 65 28 53 54 (GetStdHandle(ST
9970: 44 5f 45 52 52 4f 52 5f 48 41 4e 44 4c 45 29 20 D_ERROR_HANDLE)
9980: 21 3d 20 73 65 72 69 61 6c 50 74 72 2d 3e 68 61 != serialPtr->ha
9990: 6e 64 6c 65 29 29 29 20 7b 0a 20 20 09 69 66 20 ndle))) {. .if
99a0: 28 43 6c 6f 73 65 48 61 6e 64 6c 65 28 73 65 72 (CloseHandle(ser
99b0: 69 61 6c 50 74 72 2d 3e 68 61 6e 64 6c 65 29 20 ialPtr->handle)
99c0: 3d 3d 20 46 41 4c 53 45 29 20 7b 0a 21 20 09 20 == FALSE) {.! .
99d0: 20 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 Tcl_WinConver
99e0: 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 72 tError(GetLastEr
99f0: 72 6f 72 28 29 29 3b 0a 20 20 09 20 20 20 20 65 ror());. . e
9a00: 72 72 6f 72 43 6f 64 65 20 3d 20 65 72 72 6e 6f rrorCode = errno
9a10: 3b 0a 20 20 09 7d 0a 20 20 20 20 20 20 7d 0a 2a ;. .}. }.*
9a20: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a **************.*
9a30: 2a 2a 20 39 35 36 2c 39 36 32 20 2a 2a 2a 2a 0a ** 956,962 ****.
9a40: 20 20 20 20 20 20 72 65 74 75 72 6e 20 62 79 74 return byt
9a50: 65 73 52 65 61 64 3b 0a 20 20 0a 20 20 20 20 65 esRead;. . e
9a60: 72 72 6f 72 3a 0a 21 20 20 20 20 20 54 63 6c 57 rror:.! TclW
9a70: 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 inConvertError(G
9a80: 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a etLastError());.
9a90: 20 20 20 20 20 20 2a 65 72 72 6f 72 43 6f 64 65 *errorCode
9aa0: 20 3d 20 65 72 72 6e 6f 3b 0a 20 20 20 20 20 20 = errno;.
9ab0: 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 0a 2d 2d return -1;. .--
9ac0: 2d 20 39 35 36 2c 39 36 32 20 2d 2d 2d 2d 0a 20 - 956,962 ----.
9ad0: 20 20 20 20 20 72 65 74 75 72 6e 20 62 79 74 65 return byte
9ae0: 73 52 65 61 64 3b 0a 20 20 0a 20 20 20 20 65 72 sRead;. . er
9af0: 72 6f 72 3a 0a 21 20 20 20 20 20 54 63 6c 5f 57 ror:.! Tcl_W
9b00: 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 inConvertError(G
9b10: 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a etLastError());.
9b20: 20 20 20 20 20 20 2a 65 72 72 6f 72 43 6f 64 65 *errorCode
9b30: 20 3d 20 65 72 72 6e 6f 3b 0a 20 20 20 20 20 20 = errno;.
9b40: 72 65 74 75 72 6e 20 2d 31 3b 0a 20 20 0a 2a 2a return -1;. .**
9b50: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a *************.**
9b60: 2a 20 31 30 33 35 2c 31 30 34 31 20 2a 2a 2a 2a * 1035,1041 ****
9b70: 0a 20 20 20 20 20 20 20 2a 2f 0a 20 20 0a 20 20 . */. .
9b80: 20 20 20 20 69 66 20 28 69 6e 66 6f 50 74 72 2d if (infoPtr-
9b90: 3e 77 72 69 74 65 45 72 72 6f 72 29 20 7b 0a 21 >writeError) {.!
9ba0: 20 09 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 45 .TclWinConvertE
9bb0: 72 72 6f 72 28 69 6e 66 6f 50 74 72 2d 3e 77 72 rror(infoPtr->wr
9bc0: 69 74 65 45 72 72 6f 72 29 3b 0a 20 20 09 69 6e iteError);. .in
9bd0: 66 6f 50 74 72 2d 3e 77 72 69 74 65 45 72 72 6f foPtr->writeErro
9be0: 72 20 3d 20 30 3b 0a 20 20 09 67 6f 74 6f 20 65 r = 0;. .goto e
9bf0: 72 72 6f 72 31 3b 0a 20 20 20 20 20 20 7d 0a 2d rror1;. }.-
9c00: 2d 2d 20 31 30 33 35 2c 31 30 34 31 20 2d 2d 2d -- 1035,1041 ---
9c10: 2d 0a 20 20 20 20 20 20 20 2a 2f 0a 20 20 0a 20 -. */. .
9c20: 20 20 20 20 20 69 66 20 28 69 6e 66 6f 50 74 72 if (infoPtr
9c30: 2d 3e 77 72 69 74 65 45 72 72 6f 72 29 20 7b 0a ->writeError) {.
9c40: 21 20 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 ! .Tcl_WinConver
9c50: 74 45 72 72 6f 72 28 69 6e 66 6f 50 74 72 2d 3e tError(infoPtr->
9c60: 77 72 69 74 65 45 72 72 6f 72 29 3b 0a 20 20 09 writeError);. .
9c70: 69 6e 66 6f 50 74 72 2d 3e 77 72 69 74 65 45 72 infoPtr->writeEr
9c80: 72 6f 72 20 3d 20 30 3b 0a 20 20 09 67 6f 74 6f ror = 0;. .goto
9c90: 20 65 72 72 6f 72 31 3b 0a 20 20 20 20 20 20 7d error1;. }
9ca0: 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a .***************
9cb0: 0a 2a 2a 2a 20 31 30 39 32 2c 31 30 39 38 20 2a .*** 1092,1098 *
9cc0: 2a 2a 2a 0a 20 20 20 20 20 20 72 65 74 75 72 6e ***. return
9cd0: 20 28 69 6e 74 29 20 62 79 74 65 73 57 72 69 74 (int) bytesWrit
9ce0: 74 65 6e 3b 0a 20 20 0a 20 20 20 20 77 72 69 74 ten;. . writ
9cf0: 65 45 72 72 6f 72 3a 0a 21 20 20 20 20 20 54 63 eError:.! Tc
9d00: 6c 57 69 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 lWinConvertError
9d10: 28 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 (GetLastError())
9d20: 3b 0a 20 20 0a 20 20 20 20 65 72 72 6f 72 3a 0a ;. . error:.
9d30: 20 20 20 20 20 20 2f 2a 20 0a 2d 2d 2d 20 31 30 /* .--- 10
9d40: 39 32 2c 31 30 39 38 20 2d 2d 2d 2d 0a 20 20 20 92,1098 ----.
9d50: 20 20 20 72 65 74 75 72 6e 20 28 69 6e 74 29 20 return (int)
9d60: 62 79 74 65 73 57 72 69 74 74 65 6e 3b 0a 20 20 bytesWritten;.
9d70: 0a 20 20 20 20 77 72 69 74 65 45 72 72 6f 72 3a . writeError:
9d80: 0a 21 20 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f .! Tcl_WinCo
9d90: 6e 76 65 72 74 45 72 72 6f 72 28 47 65 74 4c 61 nvertError(GetLa
9da0: 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 0a 20 stError());. .
9db0: 20 20 20 65 72 72 6f 72 3a 0a 20 20 20 20 20 20 error:.
9dc0: 2f 2a 20 0a 0a 2a 2a 2a 20 77 69 6e 2f 74 63 6c /* ..*** win/tcl
9dd0: 57 69 6e 53 6f 63 6b 2e 63 09 32 37 20 41 75 67 WinSock.c.27 Aug
9de0: 20 32 30 30 33 20 31 39 3a 34 35 3a 31 38 20 2d 2003 19:45:18 -
9df0: 30 30 30 30 09 31 2e 33 38 0a 2d 2d 2d 20 77 69 0000.1.38.--- wi
9e00: 6e 2f 74 63 6c 57 69 6e 53 6f 63 6b 2e 63 09 34 n/tclWinSock.c.4
9e10: 20 53 65 70 20 32 30 30 33 20 32 31 3a 32 31 3a Sep 2003 21:21:
9e20: 30 33 20 2d 30 30 30 30 0a 2a 2a 2a 2a 2a 2a 2a 03 -0000.*******
9e30: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 34 34 31 ********.*** 441
9e40: 2c 34 34 37 20 2a 2a 2a 2a 0a 20 20 09 77 69 6e ,447 ****. .win
9e50: 64 6f 77 43 6c 61 73 73 2e 68 43 75 72 73 6f 72 dowClass.hCursor
9e60: 20 3d 20 4e 55 4c 4c 3b 0a 20 20 0a 20 20 09 69 = NULL;. . .i
9e70: 66 20 28 21 52 65 67 69 73 74 65 72 43 6c 61 73 f (!RegisterClas
9e80: 73 41 28 26 77 69 6e 64 6f 77 43 6c 61 73 73 29 sA(&windowClass)
9e90: 29 20 7b 0a 21 20 09 20 20 20 20 54 63 6c 57 69 ) {.! . TclWi
9ea0: 6e 43 6f 6e 76 65 72 74 45 72 72 6f 72 28 47 65 nConvertError(Ge
9eb0: 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 tLastError());.
9ec0: 20 09 20 20 20 20 67 6f 74 6f 20 75 6e 6c 6f 61 . goto unloa
9ed0: 64 4c 69 62 72 61 72 79 3b 0a 20 20 09 7d 0a 20 dLibrary;. .}.
9ee0: 20 0a 2d 2d 2d 20 34 34 31 2c 34 34 37 20 2d 2d .--- 441,447 --
9ef0: 2d 2d 0a 20 20 09 77 69 6e 64 6f 77 43 6c 61 73 --. .windowClas
9f00: 73 2e 68 43 75 72 73 6f 72 20 3d 20 4e 55 4c 4c s.hCursor = NULL
9f10: 3b 0a 20 20 0a 20 20 09 69 66 20 28 21 52 65 67 ;. . .if (!Reg
9f20: 69 73 74 65 72 43 6c 61 73 73 41 28 26 77 69 6e isterClassA(&win
9f30: 64 6f 77 43 6c 61 73 73 29 29 20 7b 0a 21 20 09 dowClass)) {.! .
9f40: 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 Tcl_WinConve
9f50: 72 74 45 72 72 6f 72 28 47 65 74 4c 61 73 74 45 rtError(GetLastE
9f60: 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 20 20 20 rror());. .
9f70: 67 6f 74 6f 20 75 6e 6c 6f 61 64 4c 69 62 72 61 goto unloadLibra
9f80: 72 79 3b 0a 20 20 09 7d 0a 20 20 0a 2a 2a 2a 2a ry;. .}. .****
9f90: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 ***********.***
9fa0: 34 35 36 2c 34 36 32 20 2a 2a 2a 2a 0a 20 20 23 456,462 ****. #
9fb0: 64 65 66 69 6e 65 20 57 53 41 5f 56 45 52 53 49 define WSA_VERSI
9fc0: 4f 4e 5f 52 45 51 44 20 20 20 20 4d 41 4b 45 57 ON_REQD MAKEW
9fd0: 4f 52 44 28 57 53 41 5f 56 45 52 53 49 4f 4e 5f ORD(WSA_VERSION_
9fe0: 4d 41 4a 4f 52 2c 20 57 53 41 5f 56 45 52 53 49 MAJOR, WSA_VERSI
9ff0: 4f 4e 5f 4d 49 4e 4f 52 29 0a 20 20 0a 20 20 09 ON_MINOR). . .
a000: 69 66 20 28 28 65 72 72 20 3d 20 77 69 6e 53 6f if ((err = winSo
a010: 63 6b 2e 57 53 41 53 74 61 72 74 75 70 28 57 53 ck.WSAStartup(WS
a020: 41 5f 56 45 52 53 49 4f 4e 5f 52 45 51 44 2c 20 A_VERSION_REQD,
a030: 26 77 73 61 44 61 74 61 29 29 20 21 3d 20 30 29 &wsaData)) != 0)
a040: 20 7b 0a 21 20 09 20 20 20 20 54 63 6c 57 69 6e {.! . TclWin
a050: 43 6f 6e 76 65 72 74 57 53 41 45 72 72 6f 72 28 ConvertWSAError(
a060: 65 72 72 29 3b 0a 20 20 09 20 20 20 20 67 6f 74 err);. . got
a070: 6f 20 75 6e 6c 6f 61 64 4c 69 62 72 61 72 79 3b o unloadLibrary;
a080: 0a 20 20 09 7d 0a 20 20 0a 2d 2d 2d 20 34 35 36 . .}. .--- 456
a090: 2c 34 36 32 20 2d 2d 2d 2d 0a 20 20 23 64 65 66 ,462 ----. #def
a0a0: 69 6e 65 20 57 53 41 5f 56 45 52 53 49 4f 4e 5f ine WSA_VERSION_
a0b0: 52 45 51 44 20 20 20 20 4d 41 4b 45 57 4f 52 44 REQD MAKEWORD
a0c0: 28 57 53 41 5f 56 45 52 53 49 4f 4e 5f 4d 41 4a (WSA_VERSION_MAJ
a0d0: 4f 52 2c 20 57 53 41 5f 56 45 52 53 49 4f 4e 5f OR, WSA_VERSION_
a0e0: 4d 49 4e 4f 52 29 0a 20 20 0a 20 20 09 69 66 20 MINOR). . .if
a0f0: 28 28 65 72 72 20 3d 20 77 69 6e 53 6f 63 6b 2e ((err = winSock.
a100: 57 53 41 53 74 61 72 74 75 70 28 57 53 41 5f 56 WSAStartup(WSA_V
a110: 45 52 53 49 4f 4e 5f 52 45 51 44 2c 20 26 77 73 ERSION_REQD, &ws
a120: 61 44 61 74 61 29 29 20 21 3d 20 30 29 20 7b 0a aData)) != 0) {.
a130: 21 20 09 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f ! . Tcl_WinCo
a140: 6e 76 65 72 74 57 53 41 45 72 72 6f 72 28 65 72 nvertWSAError(er
a150: 72 29 3b 0a 20 20 09 20 20 20 20 67 6f 74 6f 20 r);. . goto
a160: 75 6e 6c 6f 61 64 4c 69 62 72 61 72 79 3b 0a 20 unloadLibrary;.
a170: 20 09 7d 0a 20 20 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a .}. .*********
a180: 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 34 36 38 2c 34 ******.*** 468,4
a190: 37 34 20 2a 2a 2a 2a 0a 20 20 0a 20 20 09 69 66 74 ****. . .if
a1a0: 20 28 4d 41 4b 45 57 4f 52 44 28 48 49 42 59 54 (MAKEWORD(HIBYT
a1b0: 45 28 77 73 61 44 61 74 61 2e 77 56 65 72 73 69 E(wsaData.wVersi
a1c0: 6f 6e 29 2c 20 4c 4f 42 59 54 45 28 77 73 61 44 on), LOBYTE(wsaD
a1d0: 61 74 61 2e 77 56 65 72 73 69 6f 6e 29 29 0a 20 ata.wVersion)).
a1e0: 20 09 09 3c 20 4d 41 4b 45 57 4f 52 44 28 57 53 ..< MAKEWORD(WS
a1f0: 41 5f 56 45 52 53 49 4f 4e 5f 4d 49 4e 4f 52 2c A_VERSION_MINOR,
a200: 20 57 53 41 5f 56 45 52 53 49 4f 4e 5f 4d 41 4a WSA_VERSION_MAJ
a210: 4f 52 29 29 20 7b 0a 21 20 09 20 20 20 20 54 63 OR)) {.! . Tc
a220: 6c 57 69 6e 43 6f 6e 76 65 72 74 57 53 41 45 72 lWinConvertWSAEr
a230: 72 6f 72 28 57 53 41 56 45 52 4e 4f 54 53 55 50 ror(WSAVERNOTSUP
a240: 50 4f 52 54 45 44 29 3b 0a 20 20 09 20 20 20 20 PORTED);. .
a250: 77 69 6e 53 6f 63 6b 2e 57 53 41 43 6c 65 61 6e winSock.WSAClean
a260: 75 70 28 29 3b 0a 20 20 09 20 20 20 20 67 6f 74 up();. . got
a270: 6f 20 75 6e 6c 6f 61 64 4c 69 62 72 61 72 79 3b o unloadLibrary;
a280: 0a 20 20 09 7d 0a 2d 2d 2d 20 34 36 38 2c 34 37 . .}.--- 468,47
a290: 34 20 2d 2d 2d 2d 0a 20 20 0a 20 20 09 69 66 20 4 ----. . .if
a2a0: 28 4d 41 4b 45 57 4f 52 44 28 48 49 42 59 54 45 (MAKEWORD(HIBYTE
a2b0: 28 77 73 61 44 61 74 61 2e 77 56 65 72 73 69 6f (wsaData.wVersio
a2c0: 6e 29 2c 20 4c 4f 42 59 54 45 28 77 73 61 44 61 n), LOBYTE(wsaDa
a2d0: 74 61 2e 77 56 65 72 73 69 6f 6e 29 29 0a 20 20 ta.wVersion)).
a2e0: 09 09 3c 20 4d 41 4b 45 57 4f 52 44 28 57 53 41 ..< MAKEWORD(WSA
a2f0: 5f 56 45 52 53 49 4f 4e 5f 4d 49 4e 4f 52 2c 20 _VERSION_MINOR,
a300: 57 53 41 5f 56 45 52 53 49 4f 4e 5f 4d 41 4a 4f WSA_VERSION_MAJO
a310: 52 29 29 20 7b 0a 21 20 09 20 20 20 20 54 63 6c R)) {.! . Tcl
a320: 5f 57 69 6e 43 6f 6e 76 65 72 74 57 53 41 45 72 _WinConvertWSAEr
a330: 72 6f 72 28 57 53 41 56 45 52 4e 4f 54 53 55 50 ror(WSAVERNOTSUP
a340: 50 4f 52 54 45 44 29 3b 0a 20 20 09 20 20 20 20 PORTED);. .
a350: 77 69 6e 53 6f 63 6b 2e 57 53 41 43 6c 65 61 6e winSock.WSAClean
a360: 75 70 28 29 3b 0a 20 20 09 20 20 20 20 67 6f 74 up();. . got
a370: 6f 20 75 6e 6c 6f 61 64 4c 69 62 72 61 72 79 3b o unloadLibrary;
a380: 0a 20 20 09 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a . .}.**********
a390: 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 39 38 35 2c 39 39 *****.*** 985,99
a3a0: 31 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 20 20 20 1 ****.
a3b0: 20 20 2a 2f 0a 20 20 20 20 20 20 0a 20 20 20 20 */. .
a3c0: 20 20 20 20 20 20 69 66 20 28 77 69 6e 53 6f 63 if (winSoc
a3d0: 6b 2e 63 6c 6f 73 65 73 6f 63 6b 65 74 28 69 6e k.closesocket(in
a3e0: 66 6f 50 74 72 2d 3e 73 6f 63 6b 65 74 29 20 3d foPtr->socket) =
a3f0: 3d 20 53 4f 43 4b 45 54 5f 45 52 52 4f 52 29 20 = SOCKET_ERROR)
a400: 7b 0a 21 20 20 20 20 20 20 20 20 20 20 20 20 20 {.!
a410: 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 57 53 41 TclWinConvertWSA
a420: 45 72 72 6f 72 28 28 44 57 4f 52 44 29 20 77 69 Error((DWORD) wi
a430: 6e 53 6f 63 6b 2e 57 53 41 47 65 74 4c 61 73 74 nSock.WSAGetLast
a440: 45 72 72 6f 72 28 29 29 3b 0a 20 20 20 20 20 20 Error());.
a450: 20 20 20 20 20 20 20 20 65 72 72 6f 72 43 6f 64 errorCod
a460: 65 20 3d 20 54 63 6c 5f 47 65 74 45 72 72 6e 6f e = Tcl_GetErrno
a470: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 7d 0a ();. }.
a480: 20 20 20 20 20 20 7d 0a 2d 2d 2d 20 39 38 35 2c }.--- 985,
a490: 39 39 31 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 991 ----.
a4a0: 20 20 20 20 2a 2f 0a 20 20 20 20 20 20 0a 20 20 */. .
a4b0: 20 20 20 20 20 20 20 20 69 66 20 28 77 69 6e 53 if (winS
a4c0: 6f 63 6b 2e 63 6c 6f 73 65 73 6f 63 6b 65 74 28 ock.closesocket(
a4d0: 69 6e 66 6f 50 74 72 2d 3e 73 6f 63 6b 65 74 29 infoPtr->socket)
a4e0: 20 3d 3d 20 53 4f 43 4b 45 54 5f 45 52 52 4f 52 == SOCKET_ERROR
a4f0: 29 20 7b 0a 21 20 20 20 20 20 20 20 20 20 20 20 ) {.!
a500: 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 Tcl_WinConvert
a510: 57 53 41 45 72 72 6f 72 28 28 44 57 4f 52 44 29 WSAError((DWORD)
a520: 20 77 69 6e 53 6f 63 6b 2e 57 53 41 47 65 74 4c winSock.WSAGetL
a530: 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 20 astError());.
a540: 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 error
a550: 43 6f 64 65 20 3d 20 54 63 6c 5f 47 65 74 45 72 Code = Tcl_GetEr
a560: 72 6e 6f 28 29 3b 0a 20 20 20 20 20 20 20 20 20 rno();.
a570: 20 7d 0a 20 20 20 20 20 20 7d 0a 2a 2a 2a 2a 2a }. }.*****
a580: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 **********.*** 1
a590: 31 39 37 2c 31 32 30 33 20 2a 2a 2a 2a 0a 20 20 197,1203 ****.
a5a0: 0a 20 20 09 69 66 20 28 77 69 6e 53 6f 63 6b 2e . .if (winSock.
a5b0: 63 6f 6e 6e 65 63 74 28 73 6f 63 6b 2c 20 28 53 connect(sock, (S
a5c0: 4f 43 4b 41 44 44 52 20 2a 29 20 26 73 6f 63 6b OCKADDR *) &sock
a5d0: 61 64 64 72 2c 0a 20 20 09 09 73 69 7a 65 6f 66 addr,. ..sizeof
a5e0: 28 53 4f 43 4b 41 44 44 52 5f 49 4e 29 29 20 3d (SOCKADDR_IN)) =
a5f0: 3d 20 53 4f 43 4b 45 54 5f 45 52 52 4f 52 29 20 = SOCKET_ERROR)
a600: 7b 0a 21 20 20 20 20 20 20 20 20 20 20 20 20 20 {.!
a610: 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 57 53 41 TclWinConvertWSA
a620: 45 72 72 6f 72 28 28 44 57 4f 52 44 29 20 77 69 Error((DWORD) wi
a630: 6e 53 6f 63 6b 2e 57 53 41 47 65 74 4c 61 73 74 nSock.WSAGetLast
a640: 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 20 20 Error());. .
a650: 20 69 66 20 28 54 63 6c 5f 47 65 74 45 72 72 6e if (Tcl_GetErrn
a660: 6f 28 29 20 21 3d 20 45 57 4f 55 4c 44 42 4c 4f o() != EWOULDBLO
a670: 43 4b 29 20 7b 0a 20 20 09 09 67 6f 74 6f 20 65 CK) {. ..goto e
a680: 72 72 6f 72 3b 0a 20 20 09 20 20 20 20 7d 0a 2d rror;. . }.-
a690: 2d 2d 20 31 31 39 37 2c 31 32 30 33 20 2d 2d 2d -- 1197,1203 ---
a6a0: 2d 0a 20 20 0a 20 20 09 69 66 20 28 77 69 6e 53 -. . .if (winS
a6b0: 6f 63 6b 2e 63 6f 6e 6e 65 63 74 28 73 6f 63 6b ock.connect(sock
a6c0: 2c 20 28 53 4f 43 4b 41 44 44 52 20 2a 29 20 26 , (SOCKADDR *) &
a6d0: 73 6f 63 6b 61 64 64 72 2c 0a 20 20 09 09 73 69 sockaddr,. ..si
a6e0: 7a 65 6f 66 28 53 4f 43 4b 41 44 44 52 5f 49 4e zeof(SOCKADDR_IN
a6f0: 29 29 20 3d 3d 20 53 4f 43 4b 45 54 5f 45 52 52 )) == SOCKET_ERR
a700: 4f 52 29 20 7b 0a 21 20 20 20 20 20 20 20 20 20 OR) {.!
a710: 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 Tcl_WinConve
a720: 72 74 57 53 41 45 72 72 6f 72 28 28 44 57 4f 52 rtWSAError((DWOR
a730: 44 29 20 77 69 6e 53 6f 63 6b 2e 57 53 41 47 65 D) winSock.WSAGe
a740: 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 tLastError());.
a750: 20 09 20 20 20 20 69 66 20 28 54 63 6c 5f 47 65 . if (Tcl_Ge
a760: 74 45 72 72 6e 6f 28 29 20 21 3d 20 45 57 4f 55 tErrno() != EWOU
a770: 4c 44 42 4c 4f 43 4b 29 20 7b 0a 20 20 09 09 67 LDBLOCK) {. ..g
a780: 6f 74 6f 20 65 72 72 6f 72 3b 0a 20 20 09 20 20 oto error;. .
a790: 20 20 7d 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a }.************
a7a0: 2a 2a 2a 0a 2a 2a 2a 20 31 32 33 39 2c 31 32 34 ***.*** 1239,124
a7b0: 35 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 72 65 74 5 ****. ret
a7c0: 75 72 6e 20 69 6e 66 6f 50 74 72 3b 0a 20 20 0a urn infoPtr;. .
a7d0: 20 20 65 72 72 6f 72 3a 0a 21 20 20 20 20 20 54 error:.! T
a7e0: 63 6c 57 69 6e 43 6f 6e 76 65 72 74 57 53 41 45 clWinConvertWSAE
a7f0: 72 72 6f 72 28 28 44 57 4f 52 44 29 20 77 69 6e rror((DWORD) win
a800: 53 6f 63 6b 2e 57 53 41 47 65 74 4c 61 73 74 45 Sock.WSAGetLastE
a810: 72 72 6f 72 28 29 29 3b 0a 20 20 20 20 20 20 69 rror());. i
a820: 66 20 28 69 6e 74 65 72 70 20 21 3d 20 4e 55 4c f (interp != NUL
a830: 4c 29 20 7b 0a 20 20 09 54 63 6c 5f 41 70 70 65 L) {. .Tcl_Appe
a840: 6e 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c ndResult(interp,
a850: 20 22 63 6f 75 6c 64 6e 27 74 20 6f 70 65 6e 20 "couldn't open
a860: 73 6f 63 6b 65 74 3a 20 22 2c 0a 20 20 09 09 54 socket: ",. ..T
a870: 63 6c 5f 50 6f 73 69 78 45 72 72 6f 72 28 69 6e cl_PosixError(in
a880: 74 65 72 70 29 2c 20 28 63 68 61 72 20 2a 29 20 terp), (char *)
a890: 4e 55 4c 4c 29 3b 0a 2d 2d 2d 20 31 32 33 39 2c NULL);.--- 1239,
a8a0: 31 32 34 35 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 1245 ----.
a8b0: 72 65 74 75 72 6e 20 69 6e 66 6f 50 74 72 3b 0a return infoPtr;.
a8c0: 20 20 0a 20 20 65 72 72 6f 72 3a 0a 21 20 20 20 . error:.!
a8d0: 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 Tcl_WinConvert
a8e0: 57 53 41 45 72 72 6f 72 28 28 44 57 4f 52 44 29 WSAError((DWORD)
a8f0: 20 77 69 6e 53 6f 63 6b 2e 57 53 41 47 65 74 4c winSock.WSAGetL
a900: 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 20 astError());.
a910: 20 20 20 69 66 20 28 69 6e 74 65 72 70 20 21 3d if (interp !=
a920: 20 4e 55 4c 4c 29 20 7b 0a 20 20 09 54 63 6c 5f NULL) {. .Tcl_
a930: 41 70 70 65 6e 64 52 65 73 75 6c 74 28 69 6e 74 AppendResult(int
a940: 65 72 70 2c 20 22 63 6f 75 6c 64 6e 27 74 20 6f erp, "couldn't o
a950: 70 65 6e 20 73 6f 63 6b 65 74 3a 20 22 2c 0a 20 pen socket: ",.
a960: 20 09 09 54 63 6c 5f 50 6f 73 69 78 45 72 72 6f ..Tcl_PosixErro
a970: 72 28 69 6e 74 65 72 70 29 2c 20 28 63 68 61 72 r(interp), (char
a980: 20 2a 29 20 4e 55 4c 4c 29 3b 0a 2a 2a 2a 2a 2a *) NULL);.*****
a990: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 **********.*** 1
a9a0: 37 37 38 2c 31 37 38 34 20 2a 2a 2a 2a 0a 20 20 778,1784 ****.
a9b0: 20 20 0a 20 20 09 65 72 72 6f 72 20 3d 20 77 69 . .error = wi
a9c0: 6e 53 6f 63 6b 2e 57 53 41 47 65 74 4c 61 73 74 nSock.WSAGetLast
a9d0: 45 72 72 6f 72 28 29 3b 0a 20 20 09 69 66 20 28 Error();. .if (
a9e0: 28 69 6e 66 6f 50 74 72 2d 3e 66 6c 61 67 73 20 (infoPtr->flags
a9f0: 26 20 53 4f 43 4b 45 54 5f 41 53 59 4e 43 29 20 & SOCKET_ASYNC)
aa00: 7c 7c 20 28 65 72 72 6f 72 20 21 3d 20 57 53 41 || (error != WSA
aa10: 45 57 4f 55 4c 44 42 4c 4f 43 4b 29 29 20 7b 0a EWOULDBLOCK)) {.
aa20: 21 20 09 20 20 20 20 54 63 6c 57 69 6e 43 6f 6e ! . TclWinCon
aa30: 76 65 72 74 57 53 41 45 72 72 6f 72 28 65 72 72 vertWSAError(err
aa40: 6f 72 29 3b 0a 20 20 09 20 20 20 20 2a 65 72 72 or);. . *err
aa50: 6f 72 43 6f 64 65 50 74 72 20 3d 20 54 63 6c 5f orCodePtr = Tcl_
aa60: 47 65 74 45 72 72 6e 6f 28 29 3b 0a 20 20 09 20 GetErrno();. .
aa70: 20 20 20 62 79 74 65 73 52 65 61 64 20 3d 20 2d bytesRead = -
aa80: 31 3b 0a 20 20 09 20 20 20 20 62 72 65 61 6b 3b 1;. . break;
aa90: 0a 2d 2d 2d 20 31 37 37 38 2c 31 37 38 34 20 2d .--- 1778,1784 -
aaa0: 2d 2d 2d 0a 20 20 20 20 0a 20 20 09 65 72 72 6f ---. . .erro
aab0: 72 20 3d 20 77 69 6e 53 6f 63 6b 2e 57 53 41 47 r = winSock.WSAG
aac0: 65 74 4c 61 73 74 45 72 72 6f 72 28 29 3b 0a 20 etLastError();.
aad0: 20 09 69 66 20 28 28 69 6e 66 6f 50 74 72 2d 3e .if ((infoPtr->
aae0: 66 6c 61 67 73 20 26 20 53 4f 43 4b 45 54 5f 41 flags & SOCKET_A
aaf0: 53 59 4e 43 29 20 7c 7c 20 28 65 72 72 6f 72 20 SYNC) || (error
ab00: 21 3d 20 57 53 41 45 57 4f 55 4c 44 42 4c 4f 43 != WSAEWOULDBLOC
ab10: 4b 29 29 20 7b 0a 21 20 09 20 20 20 20 54 63 6c K)) {.! . Tcl
ab20: 5f 57 69 6e 43 6f 6e 76 65 72 74 57 53 41 45 72 _WinConvertWSAEr
ab30: 72 6f 72 28 65 72 72 6f 72 29 3b 0a 20 20 09 20 ror(error);. .
ab40: 20 20 20 2a 65 72 72 6f 72 43 6f 64 65 50 74 72 *errorCodePtr
ab50: 20 3d 20 54 63 6c 5f 47 65 74 45 72 72 6e 6f 28 = Tcl_GetErrno(
ab60: 29 3b 0a 20 20 09 20 20 20 20 62 79 74 65 73 52 );. . bytesR
ab70: 65 61 64 20 3d 20 2d 31 3b 0a 20 20 09 20 20 20 ead = -1;. .
ab80: 20 62 72 65 61 6b 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a break;.********
ab90: 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 38 38 39 *******.*** 1889
aba0: 2c 31 38 39 35 20 2a 2a 2a 2a 0a 20 20 09 09 62 ,1895 ****. ..b
abb0: 72 65 61 6b 3b 0a 20 20 09 20 20 20 20 7d 20 0a reak;. . } .
abc0: 20 20 09 7d 20 65 6c 73 65 20 7b 0a 21 20 09 20 .} else {.! .
abd0: 20 20 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 TclWinConvert
abe0: 57 53 41 45 72 72 6f 72 28 65 72 72 6f 72 29 3b WSAError(error);
abf0: 0a 20 20 09 20 20 20 20 2a 65 72 72 6f 72 43 6f . . *errorCo
ac00: 64 65 50 74 72 20 3d 20 54 63 6c 5f 47 65 74 45 dePtr = Tcl_GetE
ac10: 72 72 6e 6f 28 29 3b 0a 20 20 09 20 20 20 20 62 rrno();. . b
ac20: 79 74 65 73 57 72 69 74 74 65 6e 20 3d 20 2d 31 ytesWritten = -1
ac30: 3b 0a 20 20 09 20 20 20 20 62 72 65 61 6b 3b 0a ;. . break;.
ac40: 2d 2d 2d 20 31 38 38 39 2c 31 38 39 35 20 2d 2d --- 1889,1895 --
ac50: 2d 2d 0a 20 20 09 09 62 72 65 61 6b 3b 0a 20 20 --. ..break;.
ac60: 09 20 20 20 20 7d 20 0a 20 20 09 7d 20 65 6c 73 . } . .} els
ac70: 65 20 7b 0a 21 20 09 20 20 20 20 54 63 6c 5f 57 e {.! . Tcl_W
ac80: 69 6e 43 6f 6e 76 65 72 74 57 53 41 45 72 72 6f inConvertWSAErro
ac90: 72 28 65 72 72 6f 72 29 3b 0a 20 20 09 20 20 20 r(error);. .
aca0: 20 2a 65 72 72 6f 72 43 6f 64 65 50 74 72 20 3d *errorCodePtr =
acb0: 20 54 63 6c 5f 47 65 74 45 72 72 6e 6f 28 29 3b Tcl_GetErrno();
acc0: 0a 20 20 09 20 20 20 20 62 79 74 65 73 57 72 69 . . bytesWri
acd0: 74 74 65 6e 20 3d 20 2d 31 3b 0a 20 20 09 20 20 tten = -1;. .
ace0: 20 20 62 72 65 61 6b 3b 0a 2a 2a 2a 2a 2a 2a 2a break;.*******
acf0: 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 31 39 36 ********.*** 196
ad00: 37 2c 31 39 37 33 20 2a 2a 2a 2a 0a 20 20 09 72 7,1973 ****. .r
ad10: 74 6e 20 3d 20 77 69 6e 53 6f 63 6b 2e 73 65 74 tn = winSock.set
ad20: 73 6f 63 6b 6f 70 74 28 73 6f 63 6b 2c 20 53 4f sockopt(sock, SO
ad30: 4c 5f 53 4f 43 4b 45 54 2c 20 53 4f 5f 4b 45 45 L_SOCKET, SO_KEE
ad40: 50 41 4c 49 56 45 2c 0a 20 20 09 09 28 63 6f 6e PALIVE,. ..(con
ad50: 73 74 20 63 68 61 72 20 2a 29 20 26 76 61 6c 2c st char *) &val,
ad60: 20 73 69 7a 65 6f 66 28 42 4f 4f 4c 29 29 3b 0a sizeof(BOOL));.
ad70: 20 20 09 69 66 20 28 72 74 6e 20 21 3d 20 30 29 .if (rtn != 0)
ad80: 20 7b 0a 21 20 09 20 20 20 20 54 63 6c 57 69 6e {.! . TclWin
ad90: 43 6f 6e 76 65 72 74 57 53 41 45 72 72 6f 72 28 ConvertWSAError(
ada0: 77 69 6e 53 6f 63 6b 2e 57 53 41 47 65 74 4c 61 winSock.WSAGetLa
adb0: 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 stError());. .
adc0: 20 20 20 69 66 20 28 69 6e 74 65 72 70 29 20 7b if (interp) {
add0: 0a 20 20 09 09 54 63 6c 5f 41 70 70 65 6e 64 52 . ..Tcl_AppendR
ade0: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 esult(interp, "c
adf0: 6f 75 6c 64 6e 27 74 20 73 65 74 20 73 6f 63 6b ouldn't set sock
ae00: 65 74 20 6f 70 74 69 6f 6e 3a 20 22 2c 0a 20 20 et option: ",.
ae10: 09 09 09 54 63 6c 5f 50 6f 73 69 78 45 72 72 6f ...Tcl_PosixErro
ae20: 72 28 69 6e 74 65 72 70 29 2c 20 4e 55 4c 4c 29 r(interp), NULL)
ae30: 3b 0a 2d 2d 2d 20 31 39 36 37 2c 31 39 37 33 20 ;.--- 1967,1973
ae40: 2d 2d 2d 2d 0a 20 20 09 72 74 6e 20 3d 20 77 69 ----. .rtn = wi
ae50: 6e 53 6f 63 6b 2e 73 65 74 73 6f 63 6b 6f 70 74 nSock.setsockopt
ae60: 28 73 6f 63 6b 2c 20 53 4f 4c 5f 53 4f 43 4b 45 (sock, SOL_SOCKE
ae70: 54 2c 20 53 4f 5f 4b 45 45 50 41 4c 49 56 45 2c T, SO_KEEPALIVE,
ae80: 0a 20 20 09 09 28 63 6f 6e 73 74 20 63 68 61 72 . ..(const char
ae90: 20 2a 29 20 26 76 61 6c 2c 20 73 69 7a 65 6f 66 *) &val, sizeof
aea0: 28 42 4f 4f 4c 29 29 3b 0a 20 20 09 69 66 20 28 (BOOL));. .if (
aeb0: 72 74 6e 20 21 3d 20 30 29 20 7b 0a 21 20 09 20 rtn != 0) {.! .
aec0: 20 20 20 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 Tcl_WinConver
aed0: 74 57 53 41 45 72 72 6f 72 28 77 69 6e 53 6f 63 tWSAError(winSoc
aee0: 6b 2e 57 53 41 47 65 74 4c 61 73 74 45 72 72 6f k.WSAGetLastErro
aef0: 72 28 29 29 3b 0a 20 20 09 20 20 20 20 69 66 20 r());. . if
af00: 28 69 6e 74 65 72 70 29 20 7b 0a 20 20 09 09 54 (interp) {. ..T
af10: 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 28 cl_AppendResult(
af20: 69 6e 74 65 72 70 2c 20 22 63 6f 75 6c 64 6e 27 interp, "couldn'
af30: 74 20 73 65 74 20 73 6f 63 6b 65 74 20 6f 70 74 t set socket opt
af40: 69 6f 6e 3a 20 22 2c 0a 20 20 09 09 09 54 63 6c ion: ",. ...Tcl
af50: 5f 50 6f 73 69 78 45 72 72 6f 72 28 69 6e 74 65 _PosixError(inte
af60: 72 70 29 2c 20 4e 55 4c 4c 29 3b 0a 2a 2a 2a 2a rp), NULL);.****
af70: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 ***********.***
af80: 31 39 38 34 2c 31 39 39 30 20 2a 2a 2a 2a 0a 20 1984,1990 ****.
af90: 20 09 72 74 6e 20 3d 20 77 69 6e 53 6f 63 6b 2e .rtn = winSock.
afa0: 73 65 74 73 6f 63 6b 6f 70 74 28 73 6f 63 6b 2c setsockopt(sock,
afb0: 20 49 50 50 52 4f 54 4f 5f 54 43 50 2c 20 54 43 IPPROTO_TCP, TC
afc0: 50 5f 4e 4f 44 45 4c 41 59 2c 0a 20 20 09 09 28 P_NODELAY,. ..(
afd0: 63 6f 6e 73 74 20 63 68 61 72 20 2a 29 20 26 76 const char *) &v
afe0: 61 6c 2c 20 73 69 7a 65 6f 66 28 42 4f 4f 4c 29 al, sizeof(BOOL)
aff0: 29 3b 0a 20 20 09 69 66 20 28 72 74 6e 20 21 3d );. .if (rtn !=
b000: 20 30 29 20 7b 0a 21 20 09 20 20 20 20 54 63 6c 0) {.! . Tcl
b010: 57 69 6e 43 6f 6e 76 65 72 74 57 53 41 45 72 72 WinConvertWSAErr
b020: 6f 72 28 77 69 6e 53 6f 63 6b 2e 57 53 41 47 65 or(winSock.WSAGe
b030: 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 tLastError());.
b040: 20 09 20 20 20 20 69 66 20 28 69 6e 74 65 72 70 . if (interp
b050: 29 20 7b 0a 20 20 09 09 54 63 6c 5f 41 70 70 65 ) {. ..Tcl_Appe
b060: 6e 64 52 65 73 75 6c 74 28 69 6e 74 65 72 70 2c ndResult(interp,
b070: 20 22 63 6f 75 6c 64 6e 27 74 20 73 65 74 20 73 "couldn't set s
b080: 6f 63 6b 65 74 20 6f 70 74 69 6f 6e 3a 20 22 2c ocket option: ",
b090: 0a 20 20 09 09 09 54 63 6c 5f 50 6f 73 69 78 45 . ...Tcl_PosixE
b0a0: 72 72 6f 72 28 69 6e 74 65 72 70 29 2c 20 4e 55 rror(interp), NU
b0b0: 4c 4c 29 3b 0a 2d 2d 2d 20 31 39 38 34 2c 31 39 LL);.--- 1984,19
b0c0: 39 30 20 2d 2d 2d 2d 0a 20 20 09 72 74 6e 20 3d 90 ----. .rtn =
b0d0: 20 77 69 6e 53 6f 63 6b 2e 73 65 74 73 6f 63 6b winSock.setsock
b0e0: 6f 70 74 28 73 6f 63 6b 2c 20 49 50 50 52 4f 54 opt(sock, IPPROT
b0f0: 4f 5f 54 43 50 2c 20 54 43 50 5f 4e 4f 44 45 4c O_TCP, TCP_NODEL
b100: 41 59 2c 0a 20 20 09 09 28 63 6f 6e 73 74 20 63 AY,. ..(const c
b110: 68 61 72 20 2a 29 20 26 76 61 6c 2c 20 73 69 7a har *) &val, siz
b120: 65 6f 66 28 42 4f 4f 4c 29 29 3b 0a 20 20 09 69 eof(BOOL));. .i
b130: 66 20 28 72 74 6e 20 21 3d 20 30 29 20 7b 0a 21 f (rtn != 0) {.!
b140: 20 09 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f 6e . Tcl_WinCon
b150: 76 65 72 74 57 53 41 45 72 72 6f 72 28 77 69 6e vertWSAError(win
b160: 53 6f 63 6b 2e 57 53 41 47 65 74 4c 61 73 74 45 Sock.WSAGetLastE
b170: 72 72 6f 72 28 29 29 3b 0a 20 20 09 20 20 20 20 rror());. .
b180: 69 66 20 28 69 6e 74 65 72 70 29 20 7b 0a 20 20 if (interp) {.
b190: 09 09 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 ..Tcl_AppendResu
b1a0: 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 6f 75 6c lt(interp, "coul
b1b0: 64 6e 27 74 20 73 65 74 20 73 6f 63 6b 65 74 20 dn't set socket
b1c0: 6f 70 74 69 6f 6e 3a 20 22 2c 0a 20 20 09 09 09 option: ",. ...
b1d0: 54 63 6c 5f 50 6f 73 69 78 45 72 72 6f 72 28 69 Tcl_PosixError(i
b1e0: 6e 74 65 72 70 29 2c 20 4e 55 4c 4c 29 3b 0a 2a nterp), NULL);.*
b1f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a **************.*
b200: 2a 2a 20 32 30 37 33 2c 32 30 37 39 20 2a 2a 2a ** 2073,2079 ***
b210: 2a 0a 20 20 09 20 20 20 20 65 72 72 20 3d 20 77 *. . err = w
b220: 69 6e 53 6f 63 6b 2e 57 53 41 47 65 74 4c 61 73 inSock.WSAGetLas
b230: 74 45 72 72 6f 72 28 29 3b 0a 20 20 09 7d 0a 20 tError();. .}.
b240: 20 09 69 66 20 28 65 72 72 29 20 7b 0a 21 20 09 .if (err) {.! .
b250: 20 20 20 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 TclWinConver
b260: 74 57 53 41 45 72 72 6f 72 28 65 72 72 29 3b 0a tWSAError(err);.
b270: 20 20 09 20 20 20 20 54 63 6c 5f 44 53 74 72 69 . Tcl_DStri
b280: 6e 67 41 70 70 65 6e 64 28 64 73 50 74 72 2c 20 ngAppend(dsPtr,
b290: 54 63 6c 5f 45 72 72 6e 6f 4d 73 67 28 54 63 6c Tcl_ErrnoMsg(Tcl
b2a0: 5f 47 65 74 45 72 72 6e 6f 28 29 29 2c 20 2d 31 _GetErrno()), -1
b2b0: 29 3b 0a 20 20 09 7d 0a 20 20 09 72 65 74 75 72 );. .}. .retur
b2c0: 6e 20 54 43 4c 5f 4f 4b 3b 0a 2d 2d 2d 20 32 30 n TCL_OK;.--- 20
b2d0: 37 33 2c 32 30 37 39 20 2d 2d 2d 2d 0a 20 20 09 73,2079 ----. .
b2e0: 20 20 20 20 65 72 72 20 3d 20 77 69 6e 53 6f 63 err = winSoc
b2f0: 6b 2e 57 53 41 47 65 74 4c 61 73 74 45 72 72 6f k.WSAGetLastErro
b300: 72 28 29 3b 0a 20 20 09 7d 0a 20 20 09 69 66 20 r();. .}. .if
b310: 28 65 72 72 29 20 7b 0a 21 20 09 20 20 20 20 54 (err) {.! . T
b320: 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 57 53 41 cl_WinConvertWSA
b330: 45 72 72 6f 72 28 65 72 72 29 3b 0a 20 20 09 20 Error(err);. .
b340: 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67 41 70 Tcl_DStringAp
b350: 70 65 6e 64 28 64 73 50 74 72 2c 20 54 63 6c 5f pend(dsPtr, Tcl_
b360: 45 72 72 6e 6f 4d 73 67 28 54 63 6c 5f 47 65 74 ErrnoMsg(Tcl_Get
b370: 45 72 72 6e 6f 28 29 29 2c 20 2d 31 29 3b 0a 20 Errno()), -1);.
b380: 20 09 7d 0a 20 20 09 72 65 74 75 72 6e 20 54 43 .}. .return TC
b390: 4c 5f 4f 4b 3b 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a L_OK;.**********
b3a0: 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 32 31 31 39 2c 32 *****.*** 2119,2
b3b0: 31 32 35 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 20 125 ****.
b3c0: 20 20 20 20 20 20 20 20 2a 20 6e 6f 20 70 65 65 * no pee
b3d0: 72 29 2e 20 7b 63 6f 70 69 65 64 20 66 72 6f 6d r). {copied from
b3e0: 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 43 68 61 unix/tclUnixCha
b3f0: 6e 2e 63 7d 0a 20 20 20 20 20 20 20 20 20 20 20 n.c}.
b400: 20 20 20 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 */.
b410: 20 20 20 20 20 69 66 20 28 6c 65 6e 29 20 7b 0a if (len) {.
b420: 21 20 09 09 54 63 6c 57 69 6e 43 6f 6e 76 65 72 ! ..TclWinConver
b430: 74 57 53 41 45 72 72 6f 72 28 28 44 57 4f 52 44 tWSAError((DWORD
b440: 29 20 77 69 6e 53 6f 63 6b 2e 57 53 41 47 65 74 ) winSock.WSAGet
b450: 4c 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 LastError());.
b460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b470: 69 66 20 28 69 6e 74 65 72 70 29 20 7b 0a 20 20 if (interp) {.
b480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b490: 20 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 52 65 Tcl_AppendRe
b4a0: 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 61 sult(interp, "ca
b4b0: 6e 27 74 20 67 65 74 20 70 65 65 72 6e 61 6d 65 n't get peername
b4c0: 3a 20 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 : ",.
b4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 54 63 6c 5f Tcl_
b4f0: 50 6f 73 69 78 45 72 72 6f 72 28 69 6e 74 65 72 PosixError(inter
b500: 70 29 2c 0a 2d 2d 2d 20 32 31 31 39 2c 32 31 32 p),.--- 2119,212
b510: 35 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 5 ----.
b520: 20 20 20 20 20 20 2a 20 6e 6f 20 70 65 65 72 29 * no peer)
b530: 2e 20 7b 63 6f 70 69 65 64 20 66 72 6f 6d 20 75 . {copied from u
b540: 6e 69 78 2f 74 63 6c 55 6e 69 78 43 68 61 6e 2e nix/tclUnixChan.
b550: 63 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 c}.
b560: 20 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 */.
b570: 20 20 20 69 66 20 28 6c 65 6e 29 20 7b 0a 21 20 if (len) {.!
b580: 09 09 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 ..Tcl_WinConvert
b590: 57 53 41 45 72 72 6f 72 28 28 44 57 4f 52 44 29 WSAError((DWORD)
b5a0: 20 77 69 6e 53 6f 63 6b 2e 57 53 41 47 65 74 4c winSock.WSAGetL
b5b0: 61 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 20 astError());.
b5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
b5d0: 66 20 28 69 6e 74 65 72 70 29 20 7b 0a 20 20 20 f (interp) {.
b5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b5f0: 20 20 20 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 Tcl_AppendRes
b600: 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 61 6e ult(interp, "can
b610: 27 74 20 67 65 74 20 70 65 65 72 6e 61 6d 65 3a 't get peername:
b620: 20 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ",.
b630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
b640: 20 20 20 20 20 20 20 20 20 20 20 54 63 6c 5f 50 Tcl_P
b650: 6f 73 69 78 45 72 72 6f 72 28 69 6e 74 65 72 70 osixError(interp
b660: 29 2c 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ),.*************
b670: 2a 2a 0a 2a 2a 2a 20 32 31 36 33 2c 32 31 36 39 **.*** 2163,2169
b680: 20 2a 2a 2a 2a 0a 20 20 20 20 20 20 20 20 20 20 ****.
b690: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }.
b6a0: 7d 20 65 6c 73 65 20 7b 0a 20 20 09 20 20 20 20 } else {. .
b6b0: 69 66 20 28 69 6e 74 65 72 70 29 20 7b 0a 21 20 if (interp) {.!
b6c0: 09 09 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 57 ..TclWinConvertW
b6d0: 53 41 45 72 72 6f 72 28 28 44 57 4f 52 44 29 20 SAError((DWORD)
b6e0: 77 69 6e 53 6f 63 6b 2e 57 53 41 47 65 74 4c 61 winSock.WSAGetLa
b6f0: 73 74 45 72 72 6f 72 28 29 29 3b 0a 20 20 09 09 stError());. ..
b700: 54 63 6c 5f 41 70 70 65 6e 64 52 65 73 75 6c 74 Tcl_AppendResult
b710: 28 69 6e 74 65 72 70 2c 20 22 63 61 6e 27 74 20 (interp, "can't
b720: 67 65 74 20 73 6f 63 6b 6e 61 6d 65 3a 20 22 2c get sockname: ",
b730: 0a 20 20 09 09 09 09 20 54 63 6c 5f 50 6f 73 69 . .... Tcl_Posi
b740: 78 45 72 72 6f 72 28 69 6e 74 65 72 70 29 2c 0a xError(interp),.
b750: 20 20 09 09 09 09 20 28 63 68 61 72 20 2a 29 20 .... (char *)
b760: 4e 55 4c 4c 29 3b 0a 2d 2d 2d 20 32 31 36 33 2c NULL);.--- 2163,
b770: 32 31 36 39 20 2d 2d 2d 2d 0a 20 20 20 20 20 20 2169 ----.
b780: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }.
b790: 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 20 20 09 } else {. .
b7a0: 20 20 20 20 69 66 20 28 69 6e 74 65 72 70 29 20 if (interp)
b7b0: 7b 0a 21 20 09 09 54 63 6c 5f 57 69 6e 43 6f 6e {.! ..Tcl_WinCon
b7c0: 76 65 72 74 57 53 41 45 72 72 6f 72 28 28 44 57 vertWSAError((DW
b7d0: 4f 52 44 29 20 77 69 6e 53 6f 63 6b 2e 57 53 41 ORD) winSock.WSA
b7e0: 47 65 74 4c 61 73 74 45 72 72 6f 72 28 29 29 3b GetLastError());
b7f0: 0a 20 20 09 09 54 63 6c 5f 41 70 70 65 6e 64 52 . ..Tcl_AppendR
b800: 65 73 75 6c 74 28 69 6e 74 65 72 70 2c 20 22 63 esult(interp, "c
b810: 61 6e 27 74 20 67 65 74 20 73 6f 63 6b 6e 61 6d an't get socknam
b820: 65 3a 20 22 2c 0a 20 20 09 09 09 09 20 54 63 6c e: ",. .... Tcl
b830: 5f 50 6f 73 69 78 45 72 72 6f 72 28 69 6e 74 65 _PosixError(inte
b840: 72 70 29 2c 0a 20 20 09 09 09 09 20 28 63 68 61 rp),. .... (cha
b850: 72 20 2a 29 20 4e 55 4c 4c 29 3b 0a 2a 2a 2a 2a r *) NULL);.****
b860: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a 2a 2a 20 ***********.***
b870: 32 34 35 35 2c 32 34 36 31 20 2a 2a 2a 2a 0a 20 2455,2461 ****.
b880: 20 09 09 09 20 2a 2f 0a 20 20 0a 20 20 09 09 09 ... */. . ...
b890: 69 66 20 28 65 72 72 6f 72 20 21 3d 20 45 52 52 if (error != ERR
b8a0: 4f 52 5f 53 55 43 43 45 53 53 29 20 7b 0a 21 20 OR_SUCCESS) {.!
b8b0: 09 09 09 20 20 20 20 54 63 6c 57 69 6e 43 6f 6e ... TclWinCon
b8c0: 76 65 72 74 57 53 41 45 72 72 6f 72 28 28 44 57 vertWSAError((DW
b8d0: 4f 52 44 29 20 65 72 72 6f 72 29 3b 0a 20 20 09 ORD) error);. .
b8e0: 09 09 20 20 20 20 69 6e 66 6f 50 74 72 2d 3e 6c .. infoPtr->l
b8f0: 61 73 74 45 72 72 6f 72 20 3d 20 54 63 6c 5f 47 astError = Tcl_G
b900: 65 74 45 72 72 6e 6f 28 29 3b 0a 20 20 09 09 09 etErrno();. ...
b910: 7d 0a 20 20 0a 2d 2d 2d 20 32 34 35 35 2c 32 34 }. .--- 2455,24
b920: 36 31 20 2d 2d 2d 2d 0a 20 20 09 09 09 20 2a 2f 61 ----. ... */
b930: 0a 20 20 0a 20 20 09 09 09 69 66 20 28 65 72 72 . . ...if (err
b940: 6f 72 20 21 3d 20 45 52 52 4f 52 5f 53 55 43 43 or != ERROR_SUCC
b950: 45 53 53 29 20 7b 0a 21 20 09 09 09 20 20 20 20 ESS) {.! ...
b960: 54 63 6c 5f 57 69 6e 43 6f 6e 76 65 72 74 57 53 Tcl_WinConvertWS
b970: 41 45 72 72 6f 72 28 28 44 57 4f 52 44 29 20 65 AError((DWORD) e
b980: 72 72 6f 72 29 3b 0a 20 20 09 09 09 20 20 20 20 rror);. ...
b990: 69 6e 66 6f 50 74 72 2d 3e 6c 61 73 74 45 72 72 infoPtr->lastErr
b9a0: 6f 72 20 3d 20 54 63 6c 5f 47 65 74 45 72 72 6e or = Tcl_GetErrn
b9b0: 6f 28 29 3b 0a 20 20 09 09 09 7d 0a 20 20 0a 2a o();. ...}. .*
b9c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2a **************.*
b9d0: 2a 2a 20 32 34 36 33 2c 32 34 36 39 20 2a 2a 2a ** 2463,2469 ***
b9e0: 2a 0a 20 20 09 09 20 20 20 20 69 66 28 69 6e 66 *. .. if(inf
b9f0: 6f 50 74 72 2d 3e 66 6c 61 67 73 20 26 20 53 4f oPtr->flags & SO
ba00: 43 4b 45 54 5f 41 53 59 4e 43 5f 43 4f 4e 4e 45 CKET_ASYNC_CONNE
ba10: 43 54 29 20 7b 0a 20 20 09 09 09 69 6e 66 6f 50 CT) {. ...infoP
ba20: 74 72 2d 3e 66 6c 61 67 73 20 26 3d 20 7e 28 53 tr->flags &= ~(S
ba30: 4f 43 4b 45 54 5f 41 53 59 4e 43 5f 43 4f 4e 4e OCKET_ASYNC_CONN
ba40: 45 43 54 29 3b 0a 20 20 09 09 09 69 66 20 28 65 ECT);. ...if (e
ba50: 72 72 6f 72 20 21 3d 20 45 52 52 4f 52 5f 53 55 rror != ERROR_SU
ba60: 43 43 45 53 53 29 20 7b 0a 21 20 09 09 09 20 20 CCESS) {.! ...
ba70: 20 20 54 63 6c 57 69 6e 43 6f 6e 76 65 72 74 57 TclWinConvertW
ba80: 53 41 45 72 72 6f 72 28 28 44 57 4f 52 44 29 20 SAError((DWORD)
ba90: 65 72 72 6f 72 29 3b 0a 20 20 09 09 09 20 20 20 error);. ...
baa0: 20 69 6e 66 6f 50 74 72 2d 3e 6c 61 73 74 45 72 infoPtr->lastEr
bab0: 72 6f 72 20 3d 20 54 63 6c 5f 47 65 74 45 72 72 ror = Tcl_GetErr
bac0: 6e 6f 28 29 3b 0a 20 20 09 09 09 7d 0a 20 20 09 no();. ...}. .
bad0: 09 09 69 6e 66 6f 50 74 72 2d 3e 72 65 61 64 79 ..infoPtr->ready
bae0: 45 76 65 6e 74 73 20 7c 3d 20 46 44 5f 57 52 49 Events |= FD_WRI
baf0: 54 45 3b 0a 2d 2d 2d 20 32 34 36 33 2c 32 34 36 TE;.--- 2463,246
bb00: 39 20 2d 2d 2d 2d 0a 20 20 09 09 20 20 20 20 69 9 ----. .. i
bb10: 66 28 69 6e 66 6f 50 74 72 2d 3e 66 6c 61 67 73 f(infoPtr->flags
bb20: 20 26 20 53 4f 43 4b 45 54 5f 41 53 59 4e 43 5f & SOCKET_ASYNC_
bb30: 43 4f 4e 4e 45 43 54 29 20 7b 0a 20 20 09 09 09 CONNECT) {. ...
bb40: 69 6e 66 6f 50 74 72 2d 3e 66 6c 61 67 73 20 26 infoPtr->flags &
bb50: 3d 20 7e 28 53 4f 43 4b 45 54 5f 41 53 59 4e 43 = ~(SOCKET_ASYNC
bb60: 5f 43 4f 4e 4e 45 43 54 29 3b 0a 20 20 09 09 09 _CONNECT);. ...
bb70: 69 66 20 28 65 72 72 6f 72 20 21 3d 20 45 52 52 if (error != ERR
bb80: 4f 52 5f 53 55 43 43 45 53 53 29 20 7b 0a 21 20 OR_SUCCESS) {.!
bb90: 09 09 09 20 20 20 20 54 63 6c 5f 57 69 6e 43 6f ... Tcl_WinCo
bba0: 6e 76 65 72 74 57 53 41 45 72 72 6f 72 28 28 44 nvertWSAError((D
bbb0: 57 4f 52 44 29 20 65 72 72 6f 72 29 3b 0a 20 20 WORD) error);.
bbc0: 09 09 09 20 20 20 20 69 6e 66 6f 50 74 72 2d 3e ... infoPtr->
bbd0: 6c 61 73 74 45 72 72 6f 72 20 3d 20 54 63 6c 5f lastError = Tcl_
bbe0: 47 65 74 45 72 72 6e 6f 28 29 3b 0a 20 20 09 09 GetErrno();. ..
bbf0: 09 7d 0a 20 20 09 09 09 69 6e 66 6f 50 74 72 2d .}. ...infoPtr-
bc00: 3e 72 65 61 64 79 45 76 65 6e 74 73 20 7c 3d 20 >readyEvents |=
bc10: 46 44 5f 57 52 49 54 45 3b 0a 0a FD_WRITE;..