Tcl Source Code

Hex Artifact Content
Login

Artifact a98998084824a4e6fef3e9caa4a7aff24cc7c92c:

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;..