14:11:13: -> Client trace started, level=3. 14:11:13: -> Tracelevel set to 4. PID is 3116 14:11:13: -> Session ID is c2c503d17d11135 14:11:13: -> Session time is Tue Aug 28 19:11:13 2012 14:11:13: -> Client was compiled Jul 17 2012 10:40:37 14:11:13: -> Client was compiled with MSVC C/C++ 1310 14:11:13: -> Client build platform is microsoft-windows-x86 14:11:13: -> Build version is CVSNT 2.8.01 (Soolin) Build 4588 14:11:13: -> User name is Glen Starrett 14:11:13: -> Client running on "Windows 7 x64 Service Pack 1 (Build 7601) [6.1.7601] (Service Pack 1)" 14:11:13: -> /3GB is enabled, highest user address is fffeffff 14:11:13: -> Client has 39 percent of memory in use. 14:11:13: -> Client has 4194303 total Kbytes of physical memory*. 14:11:13: -> Client has 4194303 free Kbytes of physical memory*. 14:11:13: -> Client has 16735312 total Kbytes of physical memory. 14:11:13: -> Client has 10165008 free Kbytes of physical memory. 14:11:13: -> Client has 33468772 total Kbytes of paging file. 14:11:13: -> Client has 27465396 free Kbytes of paging file. 14:11:13: -> Client has 4194176 total Kbytes of virtual memory. 14:11:13: -> Client has 4110908 free Kbytes of virtual memory. 14:11:13: -> Client has 0 free Kbytes of extended memory. 14:11:13: -> The custom heap has the low-fragmentation heap enabled. 14:11:13: -> The minimum large page size is 2097152. 14:11:13: -> Walking heap 0X02C40000... 14:11:13: -> Region 14:11:13: -> 249856 bytes committed 14:11:13: -> 12288 bytes uncommitted 14:11:13: -> First block address: 0X02C40598 14:11:13: -> Last block address: 0X02C80000 14:11:13: -> Data portion begins at: 0X02C40000 14:11:13: -> Size: 1416 bytes 14:11:13: -> Overhead: 0 bytes 14:11:13: -> Region index: 0 14:11:13: -> Block 14:11:13: -> Data portion begins at: 0X02C7BDA8 14:11:13: -> Size: 4664 bytes 14:11:13: -> Overhead: 16 bytes 14:11:13: -> Region index: 0 14:11:13: -> Uncommitted range 14:11:13: -> Data portion begins at: 0X02C7D000 14:11:13: -> Size: 12288 bytes 14:11:13: -> Overhead: 0 bytes 14:11:13: -> Region index: 0 14:11:13: -> Client Hardware information (Wow64): 14:11:13: -> Number of processors: 8 14:11:13: -> Processor type: 8664 14:11:13: -> processor architecture: x64 14:11:13: -> processor type 8664/Xeon model: unknown 14:11:13: -> Free space in C:\Users\GLENST~1\AppData\Local\Temp 1213796352 14:11:13: -> Total space in C:\Users\GLENST~1\AppData\Local\Temp 2386554880 14:11:13: -> Total Free space in C:\Users\GLENST~1\AppData\Local\Temp 1213796352 14:11:13: -> Loading protocol sspi as sspi.dll 14:11:13: -> CLibraryAccess::Load loading C:\PROGRA~2\CVSSUI~1\CVSNT/protocols/sspi.dll 14:11:13: -> main loop with CVSROOT=:sspi:luserb@w7x64:/myrepo 14:11:13: -> main - about to start the server yes 14:11:13: -> start_server(verify_only=0) 14:11:13: -> client start - client_protocol->connect 14:11:13: -> Buffer size is 5120 14:11:13: -> sspi_connect 14:11:13: -> sspi_connect: call sspi_get_user_password() 14:11:13: -> tcp_write(26,568) 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> SSPI:ClientAuthenticate(Negotiate,luserb,*NONE*) !Schannel - AcquireCredentialsHandle 14:11:13: -> SSPI:ClientAuthenticate() !Schannel - AcquireCredentialsHandle result = OK 14:11:13: -> SSPI:ClientAuthenticate() InitializeSecurityContext 14:11:13: -> tcp_write(2,568) 14:11:13: -> tcp_write(40,568) 14:11:13: -> tcp_read(2) using WSAEventSelect 14:11:13: -> tcp_read(2) immediate timeout previous thread count -1/0 14:11:13: -> tcp_read(138) using WSAEventSelect 14:11:13: -> tcp_read(138) immediate timeout previous thread count -1/0 14:11:13: -> SSPI:ClientAuthenticate() InitializeSecurityContext 14:11:13: -> tcp_write(2,568) 14:11:13: -> tcp_write(390,568) 14:11:13: -> tcp_write(8,568) 14:11:13: -> client start - Loop, getting responses from the server. 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 73(I), index=0 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 32( ), index=1 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 76(L), index=2 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 79(O), index=3 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 86(V), index=4 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 69(E), index=5 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 32( ), index=6 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 89(Y), index=7 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 79(O), index=8 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 85(U), index=9 14:11:13: -> tcp_read(1) using WSAEventSelect 14:11:13: -> tcp_read(1) immediate timeout previous thread count -1/0 14:11:13: -> recv_line - got 1 chars, first is 10( ), index=10 14:11:13: -> client start - got "I LOVE YOU" 14:11:13: -> client start - continue login. 14:11:13: -> client start - server started. 14:11:13: -> client start - send Valid-responses to server. 14:11:13: -> send_to_server_untranslated() calls buf_output() len=15 nbytes=0 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=15 14:11:13: -> send_to_server_untranslated() calls buf_output() len=2 nbytes=16 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=18 14:11:13: -> send_to_server_untranslated() calls buf_output() len=5 nbytes=19 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=24 14:11:13: -> send_to_server_untranslated() calls buf_output() len=14 nbytes=25 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=39 14:11:13: -> send_to_server_untranslated() calls buf_output() len=10 nbytes=40 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=50 14:11:13: -> send_to_server_untranslated() calls buf_output() len=9 nbytes=51 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=60 14:11:13: -> send_to_server_untranslated() calls buf_output() len=8 nbytes=61 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=69 14:11:13: -> send_to_server_untranslated() calls buf_output() len=9 nbytes=70 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=79 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=80 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=87 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=88 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=95 14:11:13: -> send_to_server_untranslated() calls buf_output() len=15 nbytes=96 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=111 14:11:13: -> send_to_server_untranslated() calls buf_output() len=6 nbytes=112 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=118 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=119 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=126 14:11:13: -> send_to_server_untranslated() calls buf_output() len=8 nbytes=127 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=135 14:11:13: -> send_to_server_untranslated() calls buf_output() len=14 nbytes=136 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=150 14:11:13: -> send_to_server_untranslated() calls buf_output() len=4 nbytes=151 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=155 14:11:13: -> send_to_server_untranslated() calls buf_output() len=8 nbytes=156 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=164 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=165 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=172 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=173 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=180 14:11:13: -> send_to_server_untranslated() calls buf_output() len=12 nbytes=181 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=193 14:11:13: -> send_to_server_untranslated() calls buf_output() len=20 nbytes=194 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=214 14:11:13: -> send_to_server_untranslated() calls buf_output() len=22 nbytes=215 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=237 14:11:13: -> send_to_server_untranslated() calls buf_output() len=10 nbytes=238 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=248 14:11:13: -> send_to_server_untranslated() calls buf_output() len=12 nbytes=249 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=261 14:11:13: -> send_to_server_untranslated() calls buf_output() len=8 nbytes=262 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=270 14:11:13: -> send_to_server_untranslated() calls buf_output() len=8 nbytes=271 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=279 14:11:13: -> send_to_server_untranslated() calls buf_output() len=16 nbytes=280 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=296 14:11:13: -> send_to_server_untranslated() calls buf_output() len=17 nbytes=297 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=314 14:11:13: -> send_to_server_untranslated() calls buf_output() len=12 nbytes=315 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=327 14:11:13: -> send_to_server_untranslated() calls buf_output() len=6 nbytes=328 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=334 14:11:13: -> send_to_server_untranslated() calls buf_output() len=12 nbytes=335 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=347 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=348 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=349 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=350 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=357 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=358 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=359 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=360 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=361 14:11:13: -> send_to_server_untranslated() calls buf_output() len=2 nbytes=362 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=364 14:11:13: -> send_to_server_untranslated() calls buf_output() len=16 nbytes=365 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=381 14:11:13: -> send_to_server_untranslated() calls buf_output() len=14 nbytes=382 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=396 14:11:13: -> client start - send valid-requests to server. 14:11:13: -> send_to_server_untranslated() calls buf_output() len=15 nbytes=397 14:11:13: -> tcp_write(412,568) 14:11:13: -> tcp_read(5120) using WSAEventSelect 14:11:13: -> tcp_read(5120) immediate timeout previous thread count -1/0 14:11:13: -> send_to_server_untranslated() calls buf_output() len=12 nbytes=412 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=424 14:11:13: -> tcp_write(13,568) 14:11:13: -> client start - rootless_encryption. 14:11:13: -> send_to_server_untranslated() calls buf_output() len=5 nbytes=425 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=430 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=437 14:11:13: -> send_to_server_untranslated() calls buf_output() len=16 nbytes=438 14:11:13: -> tcp_write(29,568) 14:11:13: -> tcp_read(4186) using WSAEventSelect 14:11:13: -> tcp_read(4186) immediate timeout previous thread count -1/0 14:11:13: -> Server codepage is CP1252 14:11:13: -> Client codepage is CP1252 14:11:13: -> send_to_server_untranslated() calls buf_output() len=15 nbytes=454 14:11:13: -> send_to_server_untranslated() calls buf_output() len=32 nbytes=469 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=501 14:11:13: -> tcp_write(48,568) 14:11:13: -> tcp_read(4179) using WSAEventSelect 14:11:13: -> tcp_read(4179) immediate timeout previous thread count -1/0 14:11:13: -> Server version is CVSNT 2.8.01 (Soolin) Build 4588 14:11:13: -> Client version is CVSNT 2.8.01 (Soolin) Build 4588 14:11:13: -> send_to_server_untranslated() calls buf_output() len=17 nbytes=502 14:11:13: -> send_to_server_untranslated() calls buf_output() len=17 nbytes=519 14:11:13: -> send_to_server_untranslated() calls buf_output() len=17 nbytes=536 14:11:13: -> send_to_server_untranslated() calls buf_output() len=17 nbytes=553 14:11:13: -> send_to_server_untranslated() calls buf_output() len=17 nbytes=570 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=587 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=588 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=589 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=590 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=591 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=592 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=593 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=594 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=595 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=596 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=597 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=598 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=599 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=600 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=601 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=602 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=603 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=604 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=605 14:11:13: -> Requesting server cvsignore 14:11:13: -> send_to_server_untranslated() calls buf_output() len=15 nbytes=606 14:11:13: -> tcp_write(119,568) 14:11:13: -> tcp_read(4146) using WSAEventSelect 14:11:13: -> tcp_read(4146) immediate timeout previous thread count -1/0 14:11:13: -> wrap_add(*.a -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.a" 14:11:13: -> Call CGetOptions::getOpt: "*.a -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.ai -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.ai" 14:11:13: -> Call CGetOptions::getOpt: "*.ai -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.avi -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.avi" 14:11:13: -> Call CGetOptions::getOpt: "*.avi -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.bin -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.bin" 14:11:13: -> Call CGetOptions::getOpt: "*.bin -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.bmp -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.bmp" 14:11:13: -> Call CGetOptions::getOpt: "*.bmp -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.bz2 -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.bz2" 14:11:13: -> Call CGetOptions::getOpt: "*.bz2 -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.cdd -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.cdd" 14:11:13: -> Call CGetOptions::getOpt: "*.cdd -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.cdmz -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.cdmz" 14:11:13: -> Call CGetOptions::getOpt: "*.cdmz -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.chm -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.chm" 14:11:13: -> Call CGetOptions::getOpt: "*.chm -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.class -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.class" 14:11:13: -> Call CGetOptions::getOpt: "*.class -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.cur -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.cur" 14:11:13: -> Call CGetOptions::getOpt: "*.cur -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.dll -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.dll" 14:11:13: -> Call CGetOptions::getOpt: "*.dll -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.doc -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.doc" 14:11:13: -> Call CGetOptions::getOpt: "*.doc -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.docx -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.docx" 14:11:13: -> Call CGetOptions::getOpt: "*.docx -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.docm -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.docm" 14:11:13: -> Call CGetOptions::getOpt: "*.docm -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.fp -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.fp" 14:11:13: -> Call CGetOptions::getOpt: "*.fp -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.pptx -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.pptx" 14:11:13: -> Call CGetOptions::getOpt: "*.pptx -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.pptm -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.pptm" 14:11:13: -> Call CGetOptions::getOpt: "*.pptm -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.xlsx -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.xlsx" 14:11:13: -> Call CGetOptions::getOpt: "*.xlsx -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.xlsm -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.xlsm" 14:11:13: -> Call CGetOptions::getOpt: "*.xlsm -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.odt -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.odt" 14:11:13: -> Call CGetOptions::getOpt: "*.odt -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.ods -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.ods" 14:11:13: -> Call CGetOptions::getOpt: "*.ods -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.odp -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.odp" 14:11:13: -> Call CGetOptions::getOpt: "*.odp -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.odb -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.odb" 14:11:13: -> Call CGetOptions::getOpt: "*.odb -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.odg -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.odg" 14:11:13: -> Call CGetOptions::getOpt: "*.odg -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.odf -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.odf" 14:11:13: -> Call CGetOptions::getOpt: "*.odf -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.mpp -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.mpp" 14:11:13: -> Call CGetOptions::getOpt: "*.mpp -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.dvi -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.dvi" 14:11:13: -> Call CGetOptions::getOpt: "*.dvi -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.exe -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.exe" 14:11:13: -> Call CGetOptions::getOpt: "*.exe -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.gif -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.gif" 14:11:13: -> Call CGetOptions::getOpt: "*.gif -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.gz -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.gz" 14:11:13: -> Call CGetOptions::getOpt: "*.gz -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.hqx -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.hqx" 14:11:13: -> Call CGetOptions::getOpt: "*.hqx -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.ico -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.ico" 14:11:13: -> Call CGetOptions::getOpt: "*.ico -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.ilk -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.ilk" 14:11:13: -> Call CGetOptions::getOpt: "*.ilk -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.indd -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.indd" 14:11:13: -> Call CGetOptions::getOpt: "*.indd -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.iso -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.iso" 14:11:13: -> Call CGetOptions::getOpt: "*.iso -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.lib -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.lib" 14:11:13: -> Call CGetOptions::getOpt: "*.lib -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.jar -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.jar" 14:11:13: -> Call CGetOptions::getOpt: "*.jar -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.jpg -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.jpg" 14:11:13: -> Call CGetOptions::getOpt: "*.jpg -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.jpeg -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.jpeg" 14:11:13: -> Call CGetOptions::getOpt: "*.jpeg -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.lnk -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.lnk" 14:11:13: -> Call CGetOptions::getOpt: "*.lnk -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.mpg -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.mpg" 14:11:13: -> Call CGetOptions::getOpt: "*.mpg -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.mpeg -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.mpeg" 14:11:13: -> Call CGetOptions::getOpt: "*.mpeg -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.mov -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.mov" 14:11:13: -> Call CGetOptions::getOpt: "*.mov -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.mp3 -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.mp3" 14:11:13: -> Call CGetOptions::getOpt: "*.mp3 -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.ncb -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.ncb" 14:11:13: -> Call CGetOptions::getOpt: "*.ncb -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.o -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.o" 14:11:13: -> Call CGetOptions::getOpt: "*.o -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.ogg -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.ogg" 14:11:13: -> Call CGetOptions::getOpt: "*.ogg -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.ocx -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.ocx" 14:11:13: -> Call CGetOptions::getOpt: "*.ocx -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.obj -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.obj" 14:11:13: -> Call CGetOptions::getOpt: "*.obj -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.pdb -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.pdb" 14:11:13: -> Call CGetOptions::getOpt: "*.pdb -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.pdf -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.pdf" 14:11:13: -> Call CGetOptions::getOpt: "*.pdf -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.png -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.png" 14:11:13: -> Call CGetOptions::getOpt: "*.png -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.ppt -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.ppt" 14:11:13: -> Call CGetOptions::getOpt: "*.ppt -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.psd -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.psd" 14:11:13: -> Call CGetOptions::getOpt: "*.psd -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.res -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.res" 14:11:13: -> Call CGetOptions::getOpt: "*.res -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.rpm -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.rpm" 14:11:13: -> Call CGetOptions::getOpt: "*.rpm -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.sit -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.sit" 14:11:13: -> Call CGetOptions::getOpt: "*.sit -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.so -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.so" 14:11:13: -> Call CGetOptions::getOpt: "*.so -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.tar -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.tar" 14:11:13: -> Call CGetOptions::getOpt: "*.tar -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.tga -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.tga" 14:11:13: -> Call CGetOptions::getOpt: "*.tga -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.tgz -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.tgz" 14:11:13: -> Call CGetOptions::getOpt: "*.tgz -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.tif -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.tif" 14:11:13: -> Call CGetOptions::getOpt: "*.tif -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.tiff -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.tiff" 14:11:13: -> Call CGetOptions::getOpt: "*.tiff -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.ttf -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.ttf" 14:11:13: -> Call CGetOptions::getOpt: "*.ttf -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.uir -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.uir" 14:11:13: -> Call CGetOptions::getOpt: "*.uir -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.wav -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.wav" 14:11:13: -> Call CGetOptions::getOpt: "*.wav -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.wmv -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.wmv" 14:11:13: -> Call CGetOptions::getOpt: "*.wmv -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.xls -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.xls" 14:11:13: -> Call CGetOptions::getOpt: "*.xls -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.zip -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.zip" 14:11:13: -> Call CGetOptions::getOpt: "*.zip -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> wrap_add(*.Z -kb, 0, 0, 0, 0) 14:11:13: -> Call CFileAccess::mimetype: "*.Z" 14:11:13: -> Call CGetOptions::getOpt: "*.Z -kb" "+k:x:m:t:" 14:11:13: -> wrap_add() Sort. 14:11:13: -> Requesting server cvswrappers 14:11:13: -> send_to_server_untranslated() calls buf_output() len=17 nbytes=621 14:11:13: -> tcp_write(17,568) 14:11:13: -> tcp_read(4144) using WSAEventSelect 14:11:13: -> tcp_read(4144) immediate timeout previous thread count -1/0 14:11:13: -> Got the server cvswrappers 14:11:13: -> The first item in the sorted list is "b" with wildcard "*.a" 14:11:13: -> Requesting server cvsrc (read-cvsrc2) 14:11:13: -> send_to_server_untranslated() calls buf_output() len=12 nbytes=638 14:11:13: -> tcp_write(12,568) 14:11:13: -> tcp_read(4140) using WSAEventSelect 14:11:13: -> tcp_read(4140) immediate timeout previous thread count -1/0 14:11:13: -> Parsing global cvsrc started 14:11:13: -> Parsing global cvsrc finished 0 lines. 14:11:13: -> No local C:\Users\Glen Starrett/.cvsrc to parse 14:11:13: -> Server: call the requested function edit 14:11:13: -> send_to_server_untranslated() calls buf_output() len=79 nbytes=650 14:11:13: -> edit(server_active = no, bugid = , bugid.size = 0) 14:11:13: -> send_to_server_untranslated() calls buf_output() len=9 nbytes=729 14:11:13: -> send_to_server_untranslated() calls buf_output() len=2 nbytes=738 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=740 14:11:13: -> client (1) calls start_recursion() with 1 args 14:11:13: -> start_recursion((null),(null)) 14:11:13: -> start_recursion() dirleaveproc is OK 14:11:13: -> start_recursion() update_dir set to "" 14:11:13: -> start_recursion - argument count (argc) == 1 14:11:13: -> * There were arguments, so we have to handle them by hand. To do 14:11:13: -> * that, we set up the filelist and dirlist with the arguments and 14:11:13: -> * call do_recursion. do_recursion recognizes the fact that the 14:11:13: -> * lists are non-null when it starts and doesn't update them. 14:11:13: -> 14:11:13: -> * explicitly named directories are stored in dirlist. 14:11:13: -> * explicitly named files are stored in filelist. 14:11:13: -> * other possibility is named entities whicha are not currently in 14:11:13: -> * the working directory. 14:11:13: -> * if this argument is a directory, then add it to the list of directories. 14:11:13: -> * otherwise, split argument into directory and component names. 14:11:13: -> * Now break out argv[i] into directory part (DIR) and file part (COMP). 14:11:13: -> DIR and COMP will each point to a newly malloc'd string. 14:11:13: -> ParseTag_Dir(.,,,0,) 14:11:13: -> start_recursion: (1) addfile(files_by_dir,".","tst.doc") 14:11:13: -> * At this point we have looped over all named arguments and built 14:11:13: -> a coupla lists. Now we unroll the lists, setting up and 14:11:13: -> calling do_recursion. 14:11:13: -> call walklist() with unroll_files_proc and files_by_dir 14:11:13: -> unroll_files_proc() begin 14:11:13: -> * if this dir was also an explicitly named argument, then skip 14:11:13: -> it. We'll catch it later when we do dirs. 14:11:13: -> * otherwise, call dorecusion for this list of files. 14:11:13: -> Name_Repository((null),) 14:11:13: -> Name_Repository dup tmp is len 14:11:13: -> Name_Repository dup tmp is now len 14:11:13: -> Name_Repository open CVS/Repository 14:11:13: -> Name_Repository opened CVS/Repository ok so read a line 14:11:13: -> Name_Repository closed CVS/Repository 14:11:13: -> Name_Repository read 1 junk 14:11:13: -> Name_Repository (stripped the newline) read 2 junk 14:11:13: -> Name_Repository isabsolute( junk )? 14:11:13: -> Name_Repository isabsolute( junk )! 14:11:13: -> Name_Repository Sanitize_Repository_Name( /myrepo/junk )! 14:11:13: -> Name_Repository return ( /myrepo/junk )! 14:11:13: -> ParseTag() 14:11:13: -> ParseTag_Dir((null),,,0,) 14:11:13: -> open_directory(/myrepo/junk,.,(null),(null),0,(null),1) 14:11:13: -> open_directory() directory_stack_size increased by one to 1 14:11:13: -> Look for rename script file CVS/Rename 14:11:13: -> Rename script file does not exist 14:11:13: -> directory opened 14:11:13: -> do_recursion: begin 14:11:13: -> do_recursion: Check the value in CVSADM_ROOT 14:11:13: -> do_recursion: server does not appear to be active, update_dir= 14:11:13: -> do_recursion: Fill in repository with the current repository 14:11:13: -> do_recursion: update_dir= 14:11:13: -> Name_Repository((null),) 14:11:13: -> Name_Repository dup tmp is len 14:11:13: -> Name_Repository dup tmp is now len 14:11:13: -> Name_Repository open CVS/Repository 14:11:13: -> Name_Repository opened CVS/Repository ok so read a line 14:11:13: -> Name_Repository closed CVS/Repository 14:11:13: -> Name_Repository read 1 junk 14:11:13: -> Name_Repository (stripped the newline) read 2 junk 14:11:13: -> Name_Repository isabsolute( junk )? 14:11:13: -> Name_Repository isabsolute( junk )! 14:11:13: -> Name_Repository Sanitize_Repository_Name( /myrepo/junk )! 14:11:13: -> Name_Repository return ( /myrepo/junk )! 14:11:13: -> do_recursion: update_dir= repository=/myrepo/junk 14:11:13: -> !(repository && (server_active || !current_parsed_root->isremote)) - so just strdup 14:11:13: -> Repository = /myrepo/junk 14:11:13: -> Mapped repository = /myrepo/junk 14:11:13: -> * The filesdoneproc needs to be called for each directory where files 14:11:13: -> * processed, or each directory that is processed by a call where no 14:11:13: -> * directories were passed in. In fact, the only time we don't want to 14:11:13: -> * call back the filesdoneproc is when we are processing directories that 14:11:13: -> * were passed in on the command line (or in the special case of `.' when 14:11:13: -> * we were called with no args 14:11:13: -> do_recursion: dirlist == NULL && filelist == NULL 14:11:13: -> do_recursion: dodoneproc=1 14:11:13: -> * If filelist or dirlist is already set, we don't look again. Otherwise, 14:11:13: -> * find the files and directories 14:11:13: -> do_recursion: something was passed on the command line 14:11:13: -> do_recursion: we will process files, so pre-parse entries 14:11:13: -> Entries_Open() 14:11:13: -> Entries_Open ParseTag() 14:11:13: -> ParseTag() 14:11:13: -> ParseTag_Dir((null),,,0,) 14:11:13: -> Entries_Open aflag==0 && dirtag==0 && dirdate==0 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENT returned a file handle, now call the (slow) fgetentent() / AddEntryNode 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entries_Open fclose() CVSADM_ENT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Extra","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENTEXT returned a file handle 14:11:13: -> Entries_Open fclose() CVSADM_ENTEXT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Log","r") 14:11:13: -> Entries_Open clean up and return 14:11:13: -> Entries_Open done 14:11:13: -> do_recursion: process the files (if any) 14:11:13: -> do_recursion: read lock it if necessary 14:11:13: -> * For the server, we handle notifications in a completely different 14:11:13: -> place (server_notify). For local, we can't do them here--we don't 14:11:13: -> have writelocks in place, and there is no way to get writelocks here 14:11:13: -> do_recursion: process the files by calling walklist() 14:11:13: -> do_file_proc: process the files "tst.doc" 14:11:13: -> !(server_active || !current_parsed_root->isremote) - so just strdup 14:11:13: -> do_file_proc: mapped name of file "tst.doc" 14:11:13: -> do_file_proc: call findnode_fn() 14:11:13: -> do_file_proc: got a result from findnode_fn() 14:11:13: -> do_file_proc: verify_access() returned ok 14:11:13: -> send_fileproc (1) 14:11:13: -> send_a_repository(,/myrepo/junk,) 14:11:13: -> send_repository(,/myrepo/junk,) 14:11:13: -> allocate adm_name * 80 is large enough for any of CVSADM_*. 14:11:13: -> send_to_server_untranslated() calls buf_output() len=10 nbytes=741 14:11:13: -> * Send the directory name. 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=751 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=752 14:11:13: -> send_to_server_untranslated() calls buf_output() len=12 nbytes=753 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=765 14:11:13: -> Version_TS((null),(null),0) 14:11:13: -> Version_TS -- findnode_fn() not force_case_match 14:11:13: -> Version_TS -- findnode() found something that wasn't a subdir. 14:11:13: -> wnt_stat(tst.doc) 14:11:13: -> _statcore(00000000,tst.doc) 14:11:13: -> Trying GetFileAttributesEx.... 14:11:13: -> File attributes = 00000021 14:11:13: -> - FILE_ATTRIBUTE_READONLY 14:11:13: -> GetUnixFileModeNtEA(t,000002EC) returns 0600 14:11:13: -> _statcore(tst.doc) returns read-only 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=766 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=773 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=780 14:11:13: -> send_to_server_untranslated() calls buf_output() len=4 nbytes=781 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=785 14:11:13: -> send_to_server_untranslated() calls buf_output() len=24 nbytes=786 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=810 14:11:13: -> send_to_server_untranslated() calls buf_output() len=2 nbytes=811 14:11:13: -> send_to_server_untranslated() calls buf_output() len=2 nbytes=813 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=815 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=816 14:11:13: -> send_to_server_untranslated() calls buf_output() len=12 nbytes=817 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=829 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=836 14:11:13: -> send_to_server_untranslated() calls buf_output() len=0 nbytes=837 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=837 14:11:13: -> send_to_server_untranslated() calls buf_output() len=0 nbytes=838 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=838 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=839 14:11:13: -> send_to_server_untranslated() calls buf_output() len=0 nbytes=840 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=840 14:11:13: -> send_to_server_untranslated() calls buf_output() len=0 nbytes=841 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=841 14:11:13: -> send_to_server_untranslated() calls buf_output() len=0 nbytes=842 14:11:13: -> send_to_server_untranslated() calls buf_output() len=2 nbytes=842 14:11:13: -> send_to_server_untranslated() calls buf_output() len=10 nbytes=844 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=854 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=861 14:11:13: -> do_file_proc: finished fileproc() 14:11:13: -> do_file_proc: return 14:11:13: -> do_recursion: unlock it 14:11:13: -> do_recursion: clean up by calling dellist(filelist) 14:11:13: -> do_recursion: call-back files done proc (if any) 14:11:13: -> do_recursion: yes: call-back files done proc (if any) 14:11:13: -> do_recursion: at skip_directory 14:11:13: -> do_recursion: process the directories (if necessary) 14:11:13: -> do_recursion: cannot process the directories (dirlist == NULL) 14:11:13: -> Entries_Close - isfile ("CVS/Entries.Log") 14:11:13: -> Entries_Close - dellist (list) 14:11:13: -> do_recursion: free the saved copy of the pointer if necessary 14:11:13: -> more efficient - close directory in unroll_files_proc? 14:11:13: -> close_directory() 14:11:13: -> close_directory() directory_stack_size decreased by one to 0 14:11:13: -> unroll_files_proc() end 14:11:13: -> walklist call with unroll_files_proc done. err=0 14:11:13: -> freenode() free the badbad DIRS 14:11:13: -> dellist after unroll_files_proc done. 14:11:13: -> start_recursion: cannot do_recursion on the dirlist. 14:11:13: -> start_recursion: Free the data which expand_wild allocated. 14:11:13: -> start_recursion: Free the data - update_dir 14:11:13: -> start_recursion: Free the data - update_repos 14:11:13: -> start_recursion: (args_to_send_when_finished == NULL) 14:11:13: -> start_recursion: return 0. 14:11:13: -> send_repository(,/myrepo/junk,.) 14:11:13: -> start_recursion((null),(null)) 14:11:13: -> start_recursion() dirleaveproc is NULL 14:11:13: -> start_recursion() update_dir set to "" 14:11:13: -> start_recursion - argument count (argc) == 1 14:11:13: -> * There were arguments, so we have to handle them by hand. To do 14:11:13: -> * that, we set up the filelist and dirlist with the arguments and 14:11:13: -> * call do_recursion. do_recursion recognizes the fact that the 14:11:13: -> * lists are non-null when it starts and doesn't update them. 14:11:13: -> 14:11:13: -> * explicitly named directories are stored in dirlist. 14:11:13: -> * explicitly named files are stored in filelist. 14:11:13: -> * other possibility is named entities whicha are not currently in 14:11:13: -> * the working directory. 14:11:13: -> * if this argument is a directory, then add it to the list of directories. 14:11:13: -> * otherwise, split argument into directory and component names. 14:11:13: -> * Now break out argv[i] into directory part (DIR) and file part (COMP). 14:11:13: -> DIR and COMP will each point to a newly malloc'd string. 14:11:13: -> ParseTag_Dir(.,,,0,) 14:11:13: -> start_recursion: (1) addfile(files_by_dir,".","tst.doc") 14:11:13: -> * At this point we have looped over all named arguments and built 14:11:13: -> a coupla lists. Now we unroll the lists, setting up and 14:11:13: -> calling do_recursion. 14:11:13: -> call walklist() with unroll_files_proc and files_by_dir 14:11:13: -> unroll_files_proc() begin 14:11:13: -> * if this dir was also an explicitly named argument, then skip 14:11:13: -> it. We'll catch it later when we do dirs. 14:11:13: -> * otherwise, call dorecusion for this list of files. 14:11:13: -> Name_Repository((null),) 14:11:13: -> Name_Repository dup tmp is len 14:11:13: -> Name_Repository dup tmp is now len 14:11:13: -> Name_Repository open CVS/Repository 14:11:13: -> Name_Repository opened CVS/Repository ok so read a line 14:11:13: -> Name_Repository closed CVS/Repository 14:11:13: -> Name_Repository read 1 junk 14:11:13: -> Name_Repository (stripped the newline) read 2 junk 14:11:13: -> Name_Repository isabsolute( junk )? 14:11:13: -> Name_Repository isabsolute( junk )! 14:11:13: -> Name_Repository Sanitize_Repository_Name( /myrepo/junk )! 14:11:13: -> Name_Repository return ( /myrepo/junk )! 14:11:13: -> ParseTag() 14:11:13: -> ParseTag_Dir((null),,,0,) 14:11:13: -> open_directory(/myrepo/junk,.,(null),(null),0,(null),1) 14:11:13: -> open_directory() directory_stack_size increased by one to 1 14:11:13: -> Look for rename script file CVS/Rename 14:11:13: -> Rename script file does not exist 14:11:13: -> directory opened 14:11:13: -> do_recursion: begin 14:11:13: -> do_recursion: Check the value in CVSADM_ROOT 14:11:13: -> do_recursion: server does not appear to be active, update_dir= 14:11:13: -> do_recursion: Fill in repository with the current repository 14:11:13: -> do_recursion: update_dir= 14:11:13: -> Name_Repository((null),) 14:11:13: -> Name_Repository dup tmp is len 14:11:13: -> Name_Repository dup tmp is now len 14:11:13: -> Name_Repository open CVS/Repository 14:11:13: -> Name_Repository opened CVS/Repository ok so read a line 14:11:13: -> Name_Repository closed CVS/Repository 14:11:13: -> Name_Repository read 1 junk 14:11:13: -> Name_Repository (stripped the newline) read 2 junk 14:11:13: -> Name_Repository isabsolute( junk )? 14:11:13: -> Name_Repository isabsolute( junk )! 14:11:13: -> Name_Repository Sanitize_Repository_Name( /myrepo/junk )! 14:11:13: -> Name_Repository return ( /myrepo/junk )! 14:11:13: -> do_recursion: update_dir= repository=/myrepo/junk 14:11:13: -> !(repository && (server_active || !current_parsed_root->isremote)) - so just strdup 14:11:13: -> Repository = /myrepo/junk 14:11:13: -> Mapped repository = /myrepo/junk 14:11:13: -> * The filesdoneproc needs to be called for each directory where files 14:11:13: -> * processed, or each directory that is processed by a call where no 14:11:13: -> * directories were passed in. In fact, the only time we don't want to 14:11:13: -> * call back the filesdoneproc is when we are processing directories that 14:11:13: -> * were passed in on the command line (or in the special case of `.' when 14:11:13: -> * we were called with no args 14:11:13: -> do_recursion: dirlist == NULL && filelist == NULL 14:11:13: -> do_recursion: dodoneproc=1 14:11:13: -> * If filelist or dirlist is already set, we don't look again. Otherwise, 14:11:13: -> * find the files and directories 14:11:13: -> do_recursion: something was passed on the command line 14:11:13: -> do_recursion: we will process files, so pre-parse entries 14:11:13: -> Entries_Open() 14:11:13: -> Entries_Open ParseTag() 14:11:13: -> ParseTag() 14:11:13: -> ParseTag_Dir((null),,,0,) 14:11:13: -> Entries_Open aflag==0 && dirtag==0 && dirdate==0 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENT returned a file handle, now call the (slow) fgetentent() / AddEntryNode 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entries_Open fclose() CVSADM_ENT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Extra","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENTEXT returned a file handle 14:11:13: -> Entries_Open fclose() CVSADM_ENTEXT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Log","r") 14:11:13: -> Entries_Open clean up and return 14:11:13: -> Entries_Open done 14:11:13: -> do_recursion: process the files (if any) 14:11:13: -> do_recursion: read lock it if necessary 14:11:13: -> * For the server, we handle notifications in a completely different 14:11:13: -> place (server_notify). For local, we can't do them here--we don't 14:11:13: -> have writelocks in place, and there is no way to get writelocks here 14:11:13: -> do_recursion: process the files by calling walklist() 14:11:13: -> do_file_proc: process the files "tst.doc" 14:11:13: -> !(server_active || !current_parsed_root->isremote) - so just strdup 14:11:13: -> do_file_proc: mapped name of file "tst.doc" 14:11:13: -> do_file_proc: call findnode_fn() 14:11:13: -> do_file_proc: got a result from findnode_fn() 14:11:13: -> do_file_proc: verify_access() returned ok 14:11:13: -> Version_TS((null),(null),0) 14:11:13: -> Version_TS -- findnode_fn() not force_case_match 14:11:13: -> Version_TS -- findnode() found something that wasn't a subdir. 14:11:13: -> wnt_stat(tst.doc) 14:11:13: -> _statcore(00000000,tst.doc) 14:11:13: -> Trying GetFileAttributesEx.... 14:11:13: -> File attributes = 00000021 14:11:13: -> - FILE_ATTRIBUTE_READONLY 14:11:13: -> GetUnixFileModeNtEA(t,000002EC) returns 0600 14:11:13: -> _statcore(tst.doc) returns read-only 14:11:13: -> send_files (1) -- Send Max-dotdot if needed. 14:11:13: -> Entries_Open() 14:11:13: -> Entries_Open ParseTag() 14:11:13: -> ParseTag() 14:11:13: -> ParseTag_Dir((null),,,2000295484,) 14:11:13: -> Entries_Open aflag==0 && dirtag==0 && dirdate==0 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENT returned a file handle, now call the (slow) fgetentent() / AddEntryNode 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entries_Open fclose() CVSADM_ENT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Extra","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENTEXT returned a file handle 14:11:13: -> Entries_Open fclose() CVSADM_ENTEXT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Log","r") 14:11:13: -> Entries_Open clean up and return 14:11:13: -> Entries_Open done 14:11:13: -> Entries_Close - isfile ("CVS/Entries.Log") 14:11:13: -> Entries_Close - dellist (list) 14:11:13: -> send_to_server_untranslated() calls buf_output() len=9 nbytes=862 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=871 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=878 14:11:13: -> send_to_server_untranslated() calls buf_output() len=13 nbytes=879 14:11:13: -> tcp_write(242,568) 14:11:13: -> tcp_read(4138) using WSAEventSelect 14:11:13: -> tcp_read(4138) immediate timeout previous thread count -1/0 12:11:13: S -> server_main started 14:11:13: -> tcp_read(4101) using WSAEventSelect 14:11:13: -> tcp_read(4101) immediate timeout previous thread count -1/0 12:11:13: S -> server_main process id is 2212 12:11:13: S -> server_main CVS2_SERVER_SLEEP not set. 12:11:13: S -> run plugintools proc server 12:11:13: S -> run_trigger() 12:11:13: S -> LoadTrigger(audit.dll) 12:11:13: S -> CLibraryAccess::Load loading C:\PROGRA~2\CVSSUI~1\CVSNT/triggers/audit.dll 12:11:13: S -> Audit trigger not enabled. 12:11:13: S -> Couldn't load trigger audit.dll 12:11:13: S -> LoadTrigger(bugzilla.dll) 12:11:13: S -> CLibraryAccess::Load loading C:\PROGRA~2\CVSSUI~1\CVSNT/triggers/bugzilla.dll 12:11:13: S -> Defect Tracking trigger not enabled. 12:11:13: S -> Couldn't load trigger bugzilla.dll 12:11:13: S -> Checking admin file C:/PROGRA~3/MARCHH~1/myrepo/CVSROOT/admin for user luserb 12:11:13: S -> Checked admin file (null) for user luserb they are not an admin. 12:11:13: S -> Check windows admin for user. 12:11:13: S -> Determine if the current thread is running as a user that is a member of the local admins group. 12:11:13: S -> No - is NOT admin (WIN32). 12:11:13: S -> Check windows admin for user completed. 12:11:13: S -> InitTrigger(checkout.dll) 12:11:13: S -> Checkout trigger not enabled. 12:11:13: S -> Couldn't load trigger checkout.dll 12:11:13: S -> InitTrigger(email.dll) 12:11:13: S -> InitTrigger(info.dll) 12:11:13: S -> InitTrigger(make.dll) 12:11:13: S -> Make trigger not enabled. 12:11:13: S -> Couldn't load trigger make.dll 12:11:13: S -> InitTrigger(script.dll) 14:11:13: -> tcp_read(2615) using WSAEventSelect 14:11:13: -> tcp_read(2615) immediate timeout previous thread count -1/0 12:11:13: S -> Script trigger not enabled. 12:11:13: S -> Couldn't load trigger script.dll 12:11:13: S -> InitTrigger(sync.dll) 12:11:13: S -> Sync trigger not enabled. 12:11:13: S -> Couldn't load trigger sync.dll 12:11:13: S -> Call pre-loaded 'email.dll' 12:11:13: S -> plugintools_proc() 12:11:13: S -> Call pre-loaded 'email.dll' returned 0, total ret 0 12:11:13: S -> Call pre-loaded 'info.dll' 12:11:13: S -> plugintools_proc() 12:11:13: S -> Call pre-loaded 'info.dll' returned 0, total ret 0 12:11:13: S -> run_trigger returning 0 12:11:13: S -> run precommand proc server 12:11:13: S -> run_trigger() 12:11:13: S -> Call pre-loaded 'email.dll' 12:11:13: S -> precommand_proc() 12:11:13: S -> Call pre-loaded 'email.dll' returned 0, total ret 0 12:11:13: S -> Call pre-loaded 'info.dll' 12:11:13: S -> precommand_proc() 12:11:13: S -> default_trigger: parse_info(CVSROOT/precommand,%r %c,%) 12:11:13: S -> CFileAccess::open('C:/PROGRA~3/MARCHH~1/myrepo/CVSROOT/precommand','rb') 12:11:13: S -> CFileAccess::open() setvbuf(_IONBF) 12:11:13: S -> CFileAccess::close() 12:11:13: S -> CFileAccess::close() 12:11:13: S -> Call pre-loaded 'info.dll' returned 0, total ret 0 12:11:13: S -> run_trigger returning 0 12:11:13: S -> editors(server_active = yes) 12:11:13: S -> start_recursion((null),(null)) 12:11:13: S -> start_recursion() dirleaveproc is NULL 12:11:13: S -> start_recursion() update_dir set to "" 14:11:13: -> tcp_read(1129) using WSAEventSelect 14:11:13: -> tcp_read(1129) immediate timeout previous thread count -1/0 12:11:13: S -> start_recursion - argument count (argc) == 2 12:11:13: S -> * There were arguments, so we have to handle them by hand. To do 12:11:13: S -> * that, we set up the filelist and dirlist with the arguments and 12:11:13: S -> * call do_recursion. do_recursion recognizes the fact that the 12:11:13: S -> * lists are non-null when it starts and doesn't update them. 12:11:13: S -> 12:11:13: S -> * explicitly named directories are stored in dirlist. 12:11:13: S -> * explicitly named files are stored in filelist. 12:11:13: S -> * other possibility is named entities whicha are not currently in 12:11:13: S -> * the working directory. 12:11:13: S -> * if this argument is a directory, then add it to the list of directories. 12:11:13: S -> * otherwise, split argument into directory and component names. 12:11:13: S -> * Now break out argv[i] into directory part (DIR) and file part (COMP). 12:11:13: S -> DIR and COMP will each point to a newly malloc'd string. 12:11:13: S -> start_recursion() Name_Repository(tmp_update_dir".") 12:11:13: S -> Name_Repository(.,.) 14:11:13: -> tcp_read(5120) using WSAEventSelect 14:11:13: -> tcp_read(5120) immediate timeout previous thread count -1/0 12:11:13: S -> Name_Repository allocate tmp of size 26, len1=24, len2=16 12:11:13: S -> Name_Repository open ./CVS/Repository 12:11:13: S -> Name_Repository opened ./CVS/Repository ok so read a line 12:11:13: S -> Name_Repository closed ./CVS/Repository 12:11:13: S -> Name_Repository read 1 C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> Name_Repository (stripped the newline) read 2 C:/PROGRA~3/MARCHH~1/myrepo/junk 14:11:13: -> tcp_read(4702) using WSAEventSelect 14:11:13: -> tcp_read(4702) immediate timeout previous thread count -1/0 12:11:13: S -> Name_Repository isabsolute( C:/PROGRA~3/MARCHH~1/myrepo/junk )? 12:11:13: S -> Name_Repository not isabsolute( C:/PROGRA~3/MARCHH~1/myrepo/junk ) 12:11:13: S -> Name_Repository Sanitize_Repository_Name( C:/PROGRA~3/MARCHH~1/myrepo/junk )! 12:11:13: S -> Name_Repository return ( C:/PROGRA~3/MARCHH~1/myrepo/junk )! 12:11:13: S -> start_recursion: (2) addfile(files_by_dir,".","tst.doc") 12:11:13: S -> * if this argument is a directory, then add it to the list of directories. 12:11:13: S -> * otherwise, split argument into directory and component names. 12:11:13: S -> * Now break out argv[i] into directory part (DIR) and file part (COMP). 12:11:13: S -> DIR and COMP will each point to a newly malloc'd string. 12:11:13: S -> start_recursion() Name_Repository(tmp_update_dir".") 12:11:13: S -> Name_Repository(.,.) 12:11:13: S -> Name_Repository allocate tmp of size 26, len1=24, len2=16 12:11:13: S -> Name_Repository open ./CVS/Repository 12:11:13: S -> Name_Repository opened ./CVS/Repository ok so read a line 12:11:13: S -> Name_Repository closed ./CVS/Repository 12:11:13: S -> Name_Repository read 1 C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> Name_Repository (stripped the newline) read 2 C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> Name_Repository isabsolute( C:/PROGRA~3/MARCHH~1/myrepo/junk )? 12:11:13: S -> Name_Repository not isabsolute( C:/PROGRA~3/MARCHH~1/myrepo/junk ) 12:11:13: S -> Name_Repository Sanitize_Repository_Name( C:/PROGRA~3/MARCHH~1/myrepo/junk )! 14:11:13: -> tcp_read(3149) using WSAEventSelect 14:11:13: -> tcp_read(3149) immediate timeout previous thread count -1/0 12:11:13: S -> Name_Repository return ( C:/PROGRA~3/MARCHH~1/myrepo/junk )! 12:11:13: S -> start_recursion: (2) addfile(files_by_dir,".","-c") 12:11:13: S -> * At this point we have looped over all named arguments and built 12:11:13: S -> a coupla lists. Now we unroll the lists, setting up and 12:11:13: S -> calling do_recursion. 12:11:13: S -> call walklist() with unroll_files_proc and files_by_dir 12:11:13: S -> unroll_files_proc() begin 12:11:13: S -> * if this dir was also an explicitly named argument, then skip 12:11:13: S -> it. We'll catch it later when we do dirs. 12:11:13: S -> * otherwise, call dorecusion for this list of files. 12:11:13: S -> Name_Repository((null),) 12:11:13: S -> Name_Repository dup tmp is len 12:11:13: S -> Name_Repository dup tmp is now len 12:11:13: S -> Name_Repository open CVS/Repository 12:11:13: S -> Name_Repository opened CVS/Repository ok so read a line 12:11:13: S -> Name_Repository closed CVS/Repository 12:11:13: S -> Name_Repository read 1 C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> Name_Repository (stripped the newline) read 2 C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> Name_Repository isabsolute( C:/PROGRA~3/MARCHH~1/myrepo/junk )? 12:11:13: S -> Name_Repository not isabsolute( C:/PROGRA~3/MARCHH~1/myrepo/junk ) 12:11:13: S -> Name_Repository Sanitize_Repository_Name( C:/PROGRA~3/MARCHH~1/myrepo/junk )! 12:11:13: S -> Name_Repository return ( C:/PROGRA~3/MARCHH~1/myrepo/junk )! 14:11:13: -> tcp_read(1641) using WSAEventSelect 14:11:13: -> tcp_read(1641) immediate timeout previous thread count -1/0 12:11:13: S -> ParseTag() 12:11:13: S -> ParseTag_Dir((null),,,0,) 12:11:13: S -> open_directory(C:/PROGRA~3/MARCHH~1/myrepo/junk,.,(null),(null),0,(null),0) 12:11:13: S -> open_directory() directory_stack_size increased by one to 1 12:11:13: S -> open_directory, (!remote) try and find a mapping file in this directory . 12:11:13: S -> RCS_parse(.directory_history,C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> rcsbuf_open(C:/PROGRA~3/MARCHH~1/myrepo/junk/.directory_history,v) 12:11:13: S -> rcsbuf_open(C:/PROGRA~3/MARCHH~1/myrepo/junk/.directory_history,v) failed to open file 1 times 12:11:13: S -> rcsbuf_open(C:/PROGRA~3/MARCHH~1/myrepo/junk/.directory_history,v) file does not exist, so return 0 12:11:13: S -> rcsbuf_open failed 12:11:13: S -> rcsbuf_open(C:/PROGRA~3/MARCHH~1/myrepo/junk/Attic/.directory_history,v) 12:11:13: S -> rcsbuf_open(C:/PROGRA~3/MARCHH~1/myrepo/junk/Attic/.directory_history,v) failed to open file 1 times 12:11:13: S -> rcsbuf_open(C:/PROGRA~3/MARCHH~1/myrepo/junk/Attic/.directory_history,v) file does not exist, so return 0 12:11:13: S -> rcsbuf_open failed 12:11:13: S -> No mapping file in this directory. 12:11:13: S -> open_directory copy the tag and date. 12:11:13: S -> open_directory copied the tag and date. 12:11:13: S -> Look for rename script file CVS/Rename 12:11:13: S -> Rename script file does not exist 12:11:13: S -> directory opened 14:11:13: -> tcp_read(175) using WSAEventSelect 14:11:13: -> tcp_read(175) immediate timeout previous thread count -1/0 12:11:13: S -> do_recursion: begin 12:11:13: S -> do_recursion: Check the value in CVSADM_ROOT 14:11:13: -> tcp_read(5120) using WSAEventSelect 14:11:13: -> tcp_read(5120) immediate timeout previous thread count -1/0 12:11:13: S -> do_recursion: Fill in repository with the current repository 12:11:13: S -> do_recursion: update_dir= 12:11:13: S -> Name_Repository((null),) 12:11:13: S -> Name_Repository dup tmp is len 12:11:13: S -> Name_Repository dup tmp is now len 12:11:13: S -> Name_Repository open CVS/Repository 12:11:13: S -> Name_Repository opened CVS/Repository ok so read a line 12:11:13: S -> Name_Repository closed CVS/Repository 12:11:13: S -> Name_Repository read 1 C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> Name_Repository (stripped the newline) read 2 C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> Name_Repository isabsolute( C:/PROGRA~3/MARCHH~1/myrepo/junk )? 12:11:13: S -> Name_Repository not isabsolute( C:/PROGRA~3/MARCHH~1/myrepo/junk ) 12:11:13: S -> Name_Repository Sanitize_Repository_Name( C:/PROGRA~3/MARCHH~1/myrepo/junk )! 12:11:13: S -> Name_Repository return ( C:/PROGRA~3/MARCHH~1/myrepo/junk )! 12:11:13: S -> do_recursion: update_dir= repository=C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> (repository && (server_active || !current_parsed_root->isremote)) 12:11:13: S -> map_repository(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> lookup_module2() 12:11:13: S -> lookup_module2(junk) after rename? 12:11:13: S -> lookup_module2() call _lookup_module2() 12:11:13: S -> Loading modules2 from C:/PROGRA~3/MARCHH~1/myrepo/CVSROOT/modules2 14:11:13: -> tcp_read(3778) using WSAEventSelect 14:11:13: -> tcp_read(3778) immediate timeout previous thread count -1/0 12:11:13: S -> _lookup_module2 - continue_if_no_mod2=1 (default) 12:11:13: S -> lookup_module2(junk,1) 12:11:13: S -> _lookup_module2 !p lookup_repository_module(junk) 12:11:13: S -> lookup_repository_module(junk) 12:11:13: S -> lookup_module2() calls to lookup_repository_module() returned nothing 12:11:13: S -> _lookup_module2 !mod return 0 left,right(,junk) 12:11:13: S -> lookup_module2() call _lookup_module2 returned 0 12:11:13: S -> lookup_module2() no recursion permitted so give up now 12:11:13: S -> lookup_module2() ret=0, current_directory!=NULL, current_directory->directory_mappings===NULL 12:11:13: S -> lookup_module2() return ret=0 renamed=0 12:11:13: S -> map_repository - return(repository) "C:/PROGRA~3/MARCHH~1/myrepo/junk" 12:11:13: S -> Repository = C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> Mapped repository = C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> (repository && (server_active || !current_parsed_root->isremote)) 12:11:13: S -> ParseTag() 12:11:13: S -> ParseTag_Dir((null),,,0,) 12:11:13: S -> verify_access C:/PROGRA~3/MARCHH~1/myrepo/junk,,(null) 12:11:13: S -> verify_perm(C:/PROGRA~3/MARCHH~1/myrepo/junk,(null),read,(null),(null)) 12:11:13: S -> verify_perm: verify_owner_dir() 12:11:13: S -> verify_owner(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> cache_directory_permissions(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> fileattr_read(C:/PROGRA~3/MARCHH~1/myrepo/junk) 14:11:13: -> tcp_read(2294) using WSAEventSelect 14:11:13: -> tcp_read(2294) immediate timeout previous thread count -1/0 12:11:13: S -> _fileattr_read() malloc [strlen(C:/PROGRA~3/MARCHH~1/myrepo/junk)=]32+[sizeof(CVS/fileattr.xml)=]4+20=56 12:11:13: S -> fileattr_read() xmalloc fname OK 12:11:13: S -> _fileattr_read() allocated memory for fname - will now sprintf() 12:11:13: S -> _fileattr_read() ReadXmlFile("C:/PROGRA~3/MARCHH~1/myrepo/junk/CVS/fileattr.xml") 12:11:13: S -> fileattr_read() ReadXmlFile() 12:11:13: S -> fileattr_read() close 12:11:13: S -> fileattr_read() xfree fname 12:11:13: S -> fileattr_read() OK 12:11:13: S -> cache_directory_permissions() - cache directory(fileattr,) 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo/junk",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 12:11:13: S -> cache_directory_permissions() last_component=junk 12:11:13: S -> fileattr_read(C:/PROGRA~3/MARCHH~1/myrepo) 12:11:13: S -> _fileattr_read() malloc [strlen(C:/PROGRA~3/MARCHH~1/myrepo)=]27+[sizeof(CVS/fileattr.xml)=]4+20=51 12:11:13: S -> fileattr_read() xmalloc fname OK 12:11:13: S -> _fileattr_read() allocated memory for fname - will now sprintf() 12:11:13: S -> _fileattr_read() no file "C:/PROGRA~3/MARCHH~1/myrepo/CVS/fileattr.xml", so allocate ofname of 60 bytes. 12:11:13: S -> fileattr_read() xmalloc ofname OK 12:11:13: S -> _fileattr_read() no old "C:/PROGRA~3/MARCHH~1/myrepo/CVS/fileattr". 12:11:13: S -> _fileattr_read() no old "C:/PROGRA~3/MARCHH~1/myrepo//.owner". 14:11:13: -> tcp_read(832) using WSAEventSelect 14:11:13: -> tcp_read(832) immediate timeout previous thread count -1/0 12:11:13: S -> _fileattr_read() no old "C:/PROGRA~3/MARCHH~1/myrepo//.perms". 12:11:13: S -> _fileattr_read() CXmlNode("fileattr") 12:11:13: S -> fileattr_read() xfree ofname and fname OK 12:11:13: S -> cache_directory_permissions() - cache directory(fileattr,) 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 12:11:13: S -> cache_directory_permissions() free(C:/PROGRA~3/MARCHH~1/myrepo) 12:11:13: S -> cache_directory_permissions() return 12:11:13: S -> verify_valid_name(lusera) 12:11:13: S -> Find all the groups the user is in and add them to the list of valid names. 12:11:13: S -> Open the admin group file CVSROOT/group 12:11:13: S -> Finished reading the admin group file CVSROOT/group 14:11:13: -> tcp_read(5120) using WSAEventSelect 14:11:13: -> tcp_read(5120) immediate timeout previous thread count -1/0 12:11:13: S -> Get the groups for windows 12:11:13: S -> Checking local access token for groups 12:11:13: S -> add_valid_group(None) 12:11:13: S -> add_valid_group(Everyone) 12:11:13: S -> add_valid_group(Users) 12:11:13: S -> add_valid_group(NETWORK) 12:11:13: S -> add_valid_group(Authenticated Users) 12:11:13: S -> add_valid_group(This Organization) 12:11:13: S -> add_valid_group(NTLM Authentication) 12:11:13: S -> add_valid_group(Medium Mandatory Level) 12:11:13: S -> Got the groups for windows 12:11:13: S -> cache_directory_permissions(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo/junk",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 14:11:13: -> tcp_read(4382) using WSAEventSelect 14:11:13: -> tcp_read(4382) immediate timeout previous thread count -1/0 12:11:13: S -> cache_directory_permissions() last_component=junk 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 12:11:13: S -> cache_directory_permissions() free(C:/PROGRA~3/MARCHH~1/myrepo) 12:11:13: S -> cache_directory_permissions() return 12:11:13: S -> verify_perm() Read directory permission cache OK 12:11:13: S -> ACL lookup on directory C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> verify_acl(read,HEAD,(null)) 12:11:13: S -> user_state = 0, group_state = 0 12:11:13: S -> no match at this level 12:11:13: S -> ACL lookup on directory C:/PROGRA~3/MARCHH~1/myrepo 12:11:13: S -> verify_acl(read,HEAD,(null)) 12:11:13: S -> user_state = 0, group_state = 0 12:11:13: S -> no match at this level 12:11:13: S -> Match found. user_state = 0, group_state = 0 12:11:13: S -> verify_perm() return 12:11:13: S -> fileattr_startdir(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> * The filesdoneproc needs to be called for each directory where files 12:11:13: S -> * processed, or each directory that is processed by a call where no 12:11:13: S -> * directories were passed in. In fact, the only time we don't want to 12:11:13: S -> * call back the filesdoneproc is when we are processing directories that 12:11:13: S -> * were passed in on the command line (or in the special case of `.' when 12:11:13: S -> * we were called with no args 14:11:13: -> tcp_read(2898) using WSAEventSelect 14:11:13: -> tcp_read(2898) immediate timeout previous thread count -1/0 12:11:13: S -> do_recursion: dirlist == NULL && filelist == NULL 12:11:13: S -> do_recursion: dodoneproc=1 12:11:13: S -> * If filelist or dirlist is already set, we don't look again. Otherwise, 12:11:13: S -> * find the files and directories 12:11:13: S -> do_recursion: something was passed on the command line 12:11:13: S -> do_recursion: we will process files, so pre-parse entries 12:11:13: S -> Entries_Open() 12:11:13: S -> Entries_Open ParseTag() 12:11:13: S -> ParseTag() 12:11:13: S -> ParseTag_Dir((null),,,15,) 12:11:13: S -> Entries_Open aflag==0 && dirtag==0 && dirdate==0 12:11:13: S -> Entries_Open CVS_FOPEN("CVS/Entries","r") 12:11:13: S -> Entries_Open CVS_FOPEN CVSADM_ENT returned a file handle, now call the (slow) fgetentent() / AddEntryNode 12:11:13: S -> Entnode_Create() 12:11:13: S -> Entnode_Create() finished 12:11:13: S -> AddEntryNode() 12:11:13: S -> AddEntryNode() get a node and fill in the regular stuff 12:11:13: S -> AddEntryNode() this one gets a key of the name for hashing 12:11:13: S -> AddEntryNode() put the node into the list 12:11:13: S -> AddEntryNode() finished 12:11:13: S -> Entries_Open fclose() CVSADM_ENT 12:11:13: S -> Entries_Open CVS_FOPEN("CVS/Entries.Extra","r") 12:11:13: S -> Entries_Open CVS_FOPEN CVSADM_ENTEXT returned a file handle 12:11:13: S -> Entries_Open fclose() CVSADM_ENTEXT 12:11:13: S -> Entries_Open CVS_FOPEN("CVS/Entries.Log","r") 14:11:13: -> tcp_read(1412) using WSAEventSelect 14:11:13: -> tcp_read(1412) immediate timeout previous thread count -1/0 12:11:13: S -> Entries_Open (! sawdir) - so xmalloc() 12:11:13: S -> Entries_Open entrieslist is not NULL, add some sticky data... 12:11:13: S -> Entries_Open clean up and return 12:11:13: S -> Entries_Open done 12:11:13: S -> do_recursion: process the files (if any) 12:11:13: S -> do_recursion: read lock it if necessary 12:11:13: S -> * For the server, we handle notifications in a completely different 12:11:13: S -> place (server_notify). For local, we can't do them here--we don't 12:11:13: S -> have writelocks in place, and there is no way to get writelocks here 12:11:13: S -> do_recursion: process the files by calling walklist() 12:11:13: S -> do_file_proc: process the files "tst.doc" 12:11:13: S -> (server_active || !current_parsed_root->isremote) 12:11:13: S -> map_filename(C:/PROGRA~3/MARCHH~1/myrepo/junk,tst.doc) 12:11:13: S -> map_filename - call map_repository(C:/PROGRA~3/MARCHH~1/myrepo/junk/tst.doc) 12:11:13: S -> map_repository(C:/PROGRA~3/MARCHH~1/myrepo/junk/tst.doc) 12:11:13: S -> lookup_module2() 12:11:13: S -> lookup_module2(junk/tst.doc) after rename? 12:11:13: S -> lookup_module2() call _lookup_module2() 12:11:13: S -> _lookup_module2 - continue_if_no_mod2=1 (default) 12:11:13: S -> lookup_module2(junk/tst.doc,2) 12:11:13: S -> _lookup_module2 p!=NULL lookup_repository_module(junk) 14:11:13: -> tcp_read(5120) using WSAEventSelect 14:11:13: -> tcp_read(5120) immediate timeout previous thread count -1/0 12:11:13: S -> lookup_repository_module(junk) 12:11:13: S -> lookup_module2() calls to lookup_repository_module() returned nothing 14:11:13: -> tcp_read(5025) using WSAEventSelect 14:11:13: -> tcp_read(5025) immediate timeout previous thread count -1/0 12:11:13: S -> _lookup_module2 !mod return 0 left,right(,junk/tst.doc) 12:11:13: S -> lookup_module2() call _lookup_module2 returned 0 12:11:13: S -> lookup_module2() no recursion permitted so give up now 12:11:13: S -> lookup_module2() ret=0, current_directory!=NULL, current_directory->directory_mappings===NULL 12:11:13: S -> lookup_module2() return ret=0 renamed=0 12:11:13: S -> map_repository - return(repository) "C:/PROGRA~3/MARCHH~1/myrepo/junk/tst.doc" 12:11:13: S -> map_filename - map_repository() returns C:/PROGRA~3/MARCHH~1/myrepo/junk/tst.doc 12:11:13: S -> do_file_proc: mapped name of file "tst.doc" 12:11:13: S -> do_file_proc: call findnode_fn() 12:11:13: S -> do_file_proc: got a result from findnode_fn() 12:11:13: S -> verify_access C:/PROGRA~3/MARCHH~1/myrepo/junk,,(null) 12:11:13: S -> verify_perm(C:/PROGRA~3/MARCHH~1/myrepo/junk,tst.doc,read,(null),(null)) 12:11:13: S -> verify_perm: verify_owner_dir() 12:11:13: S -> verify_owner(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> cache_directory_permissions(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo/junk",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 12:11:13: S -> cache_directory_permissions() last_component=junk 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 14:11:13: -> tcp_read(3558) using WSAEventSelect 14:11:13: -> tcp_read(3558) immediate timeout previous thread count -1/0 12:11:13: S -> cache_directory_permissions() free(C:/PROGRA~3/MARCHH~1/myrepo) 12:11:13: S -> cache_directory_permissions() return 12:11:13: S -> verify_valid_name(lusera) 12:11:13: S -> cache_directory_permissions(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo/junk",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 12:11:13: S -> cache_directory_permissions() last_component=junk 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 12:11:13: S -> cache_directory_permissions() free(C:/PROGRA~3/MARCHH~1/myrepo) 12:11:13: S -> cache_directory_permissions() return 12:11:13: S -> verify_perm() Read directory permission cache OK 12:11:13: S -> ACL lookup on directory C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> verify_acl(read,HEAD,(null)) 12:11:13: S -> user_state = 0, group_state = 0 12:11:13: S -> no match at this level 12:11:13: S -> ACL lookup on directory C:/PROGRA~3/MARCHH~1/myrepo 12:11:13: S -> verify_acl(read,HEAD,(null)) 12:11:13: S -> user_state = 0, group_state = 0 12:11:13: S -> no match at this level 12:11:13: S -> Match found. user_state = 0, group_state = 0 12:11:13: S -> verify_perm() return 12:11:13: S -> do_file_proc: verify_access() returned ok 12:11:13: S -> fileattr_find(file[@name=F'%s']/editor) 12:11:13: S -> fileattr_read(C:/PROGRA~3/MARCHH~1/myrepo/junk) 14:11:13: -> tcp_read(2040) using WSAEventSelect 14:11:13: -> tcp_read(2040) immediate timeout previous thread count -1/0 12:11:13: S -> _fileattr_read() malloc [strlen(C:/PROGRA~3/MARCHH~1/myrepo/junk)=]32+[sizeof(CVS/fileattr.xml)=]4+20=56 12:11:13: S -> fileattr_read() xmalloc fname OK 12:11:13: S -> _fileattr_read() allocated memory for fname - will now sprintf() 12:11:13: S -> _fileattr_read() ReadXmlFile("C:/PROGRA~3/MARCHH~1/myrepo/junk/CVS/fileattr.xml") 12:11:13: S -> fileattr_read() ReadXmlFile() 12:11:13: S -> fileattr_read() close 12:11:13: S -> fileattr_read() xfree fname 12:11:13: S -> fileattr_read() OK 12:11:13: S -> fileattr_read() return 12:11:13: S -> do_file_proc: finished fileproc() 12:11:13: S -> do_file_proc: return 12:11:13: S -> do_file_proc: process the files "-c" 12:11:13: S -> (server_active || !current_parsed_root->isremote) 12:11:13: S -> map_filename(C:/PROGRA~3/MARCHH~1/myrepo/junk,-c) 12:11:13: S -> map_filename - call map_repository(C:/PROGRA~3/MARCHH~1/myrepo/junk/-c) 12:11:13: S -> map_repository(C:/PROGRA~3/MARCHH~1/myrepo/junk/-c) 12:11:13: S -> lookup_module2() 12:11:13: S -> lookup_module2(junk/-c) after rename? 12:11:13: S -> lookup_module2() call _lookup_module2() 12:11:13: S -> _lookup_module2 - continue_if_no_mod2=1 (default) 12:11:13: S -> lookup_module2(junk/-c,3) 12:11:13: S -> _lookup_module2 p!=NULL lookup_repository_module(junk) 12:11:13: S -> lookup_repository_module(junk) 12:11:13: S -> lookup_module2() calls to lookup_repository_module() returned nothing 12:11:13: S -> _lookup_module2 !mod return 0 left,right(,junk/-c) 14:11:13: -> tcp_read(514) using WSAEventSelect 14:11:13: -> tcp_read(514) immediate timeout previous thread count -1/0 12:11:13: S -> lookup_module2() call _lookup_module2 returned 0 12:11:13: S -> lookup_module2() no recursion permitted so give up now 12:11:13: S -> lookup_module2() ret=0, current_directory!=NULL, current_directory->directory_mappings===NULL 12:11:13: S -> lookup_module2() return ret=0 renamed=0 12:11:13: S -> map_repository - return(repository) "C:/PROGRA~3/MARCHH~1/myrepo/junk/-c" 12:11:13: S -> map_filename - map_repository() returns C:/PROGRA~3/MARCHH~1/myrepo/junk/-c 14:11:13: -> tcp_read(5120) using WSAEventSelect 14:11:13: -> tcp_read(5120) immediate timeout previous thread count -1/0 12:11:13: S -> do_file_proc: mapped name of file "-c" 12:11:13: S -> do_file_proc: call findnode_fn() 12:11:13: S -> do_file_proc: no node? 12:11:13: S -> fileattr_find(file[@name=F'%s']/editor) 12:11:13: S -> do_file_proc: finished fileproc() 12:11:13: S -> do_file_proc: return 12:11:13: S -> do_recursion: unlock it by calling Lock_Cleanup_Directory() 12:11:13: S -> do_recursion: clean up by calling dellist(filelist) 12:11:13: S -> do_recursion: call-back files done proc (if any) 12:11:13: S -> do_recursion: no: don't call-back files done proc (process_this_directorydodoneprocframe->filesdoneproc == NULL) 12:11:13: S -> do_recursion: at skip_directory 12:11:13: S -> (repository && (server_active || !current_parsed_root->isremote)) 12:11:13: S -> fileattr_write() 12:11:13: S -> fileattr_free() 12:11:13: S -> do_recursion: process the directories (if necessary) 12:11:13: S -> do_recursion: cannot process the directories (dirlist == NULL) 14:11:13: -> tcp_read(4156) using WSAEventSelect 14:11:13: -> tcp_read(4156) immediate timeout previous thread count -1/0 12:11:13: S -> Entries_Close - isfile ("CVS/Entries.Log") 12:11:13: S -> Entries_Close - dellist (list) 12:11:13: S -> do_recursion: free the saved copy of the pointer if necessary 12:11:13: S -> more efficient - close directory in unroll_files_proc? 12:11:13: S -> close_directory() 12:11:13: S -> close_directory() directory_stack_size decreased by one to 0 12:11:13: S -> unroll_files_proc() end 12:11:13: S -> walklist call with unroll_files_proc done. err=0 12:11:13: S -> freenode() free the badbad DIRS 12:11:13: S -> dellist after unroll_files_proc done. 12:11:13: S -> start_recursion: cannot do_recursion on the dirlist. 12:11:13: S -> start_recursion: Free the data which expand_wild allocated. 12:11:13: S -> start_recursion: Free the data - update_dir 12:11:13: S -> start_recursion: Free the data - update_repos 12:11:13: S -> start_recursion: (args_to_send_when_finished == NULL) 12:11:13: S -> start_recursion: return 0. 12:11:13: S -> Process warnings about client versions out of date... 12:11:13: S -> run postcommand proc server 12:11:13: S -> run_trigger() 12:11:13: S -> Call pre-loaded 'email.dll' 12:11:13: S -> postcommand_proc() 12:11:13: S -> Call pre-loaded 'email.dll' returned 0, total ret 0 12:11:13: S -> Call pre-loaded 'info.dll' 12:11:13: S -> postcommand_proc() 12:11:13: S -> default_trigger: parse_info(CVSROOT/postcommand,%r/%p %c,,junk) 12:11:13: S -> CFileAccess::open('C:/PROGRA~3/MARCHH~1/myrepo/CVSROOT/postcommand','rb') 14:11:13: -> tcp_read(2632) using WSAEventSelect 14:11:13: -> tcp_read(2632) immediate timeout previous thread count -1/0 12:11:13: S -> CFileAccess::open() setvbuf(_IONBF) 12:11:13: S -> CFileAccess::close() 12:11:13: S -> CFileAccess::close() 12:11:13: S -> Call pre-loaded 'info.dll' returned 0, total ret 0 12:11:13: S -> run_trigger returning 0 14:11:13: -> do_file_proc: finished fileproc() 14:11:13: -> do_file_proc: return 14:11:13: -> do_recursion: unlock it 14:11:13: -> do_recursion: clean up by calling dellist(filelist) 14:11:13: -> do_recursion: call-back files done proc (if any) 14:11:13: -> do_recursion: no: don't call-back files done proc (process_this_directorydodoneprocframe->filesdoneproc == NULL) 14:11:13: -> do_recursion: at skip_directory 14:11:13: -> do_recursion: process the directories (if necessary) 14:11:13: -> do_recursion: cannot process the directories (dirlist == NULL) 14:11:13: -> Entries_Close - isfile ("CVS/Entries.Log") 14:11:13: -> Entries_Close - dellist (list) 14:11:13: -> do_recursion: free the saved copy of the pointer if necessary 14:11:13: -> more efficient - close directory in unroll_files_proc? 14:11:13: -> close_directory() 14:11:13: -> close_directory() directory_stack_size decreased by one to 0 14:11:13: -> unroll_files_proc() end 14:11:13: -> walklist call with unroll_files_proc done. err=0 14:11:13: -> freenode() free the badbad DIRS 14:11:13: -> dellist after unroll_files_proc done. 14:11:13: -> start_recursion: cannot do_recursion on the dirlist. 14:11:13: -> start_recursion: Free the data which expand_wild allocated. 14:11:13: -> start_recursion: Free the data - update_dir 14:11:13: -> start_recursion: Free the data - update_repos 14:11:13: -> start_recursion: (args_to_send_when_finished == NULL) 14:11:13: -> start_recursion: return 0. 14:11:13: -> send_to_server_untranslated() calls buf_output() len=5 nbytes=892 14:11:13: -> tcp_write(5,568) 12:11:13: S -> Processed a client request - going to check it for deprecated clients "CVSNT 2.8.01 (Soolin) Build 4588". 14:11:13: -> tcp_read(2268) using WSAEventSelect 14:11:13: -> tcp_read(2268) immediate timeout previous thread count -1/0 14:11:13: -> start_recursion((null),(null)) 14:11:13: -> start_recursion() dirleaveproc is NULL 14:11:13: -> start_recursion() update_dir set to "" 14:11:13: -> start_recursion - argument count (argc) == 1 14:11:13: -> * There were arguments, so we have to handle them by hand. To do 14:11:13: -> * that, we set up the filelist and dirlist with the arguments and 14:11:13: -> * call do_recursion. do_recursion recognizes the fact that the 14:11:13: -> * lists are non-null when it starts and doesn't update them. 14:11:13: -> 14:11:13: -> * explicitly named directories are stored in dirlist. 14:11:13: -> * explicitly named files are stored in filelist. 14:11:13: -> * other possibility is named entities whicha are not currently in 14:11:13: -> * the working directory. 14:11:13: -> * if this argument is a directory, then add it to the list of directories. 14:11:13: -> * otherwise, split argument into directory and component names. 14:11:13: -> * Now break out argv[i] into directory part (DIR) and file part (COMP). 14:11:13: -> DIR and COMP will each point to a newly malloc'd string. 14:11:13: -> ParseTag_Dir(.,,,0,) 14:11:13: -> start_recursion: (1) addfile(files_by_dir,".","tst.doc") 14:11:13: -> * At this point we have looped over all named arguments and built 14:11:13: -> a coupla lists. Now we unroll the lists, setting up and 14:11:13: -> calling do_recursion. 14:11:13: -> call walklist() with unroll_files_proc and files_by_dir 14:11:13: -> unroll_files_proc() begin 14:11:13: -> * if this dir was also an explicitly named argument, then skip 14:11:13: -> it. We'll catch it later when we do dirs. 14:11:13: -> * otherwise, call dorecusion for this list of files. 14:11:13: -> Name_Repository((null),) 14:11:13: -> Name_Repository dup tmp is len 14:11:13: -> Name_Repository dup tmp is now len 14:11:13: -> Name_Repository open CVS/Repository 14:11:13: -> Name_Repository opened CVS/Repository ok so read a line 14:11:13: -> Name_Repository closed CVS/Repository 14:11:13: -> Name_Repository read 1 junk 14:11:13: -> Name_Repository (stripped the newline) read 2 junk 14:11:13: -> Name_Repository isabsolute( junk )? 14:11:13: -> Name_Repository isabsolute( junk )! 14:11:13: -> Name_Repository Sanitize_Repository_Name( /myrepo/junk )! 14:11:13: -> Name_Repository return ( /myrepo/junk )! 14:11:13: -> ParseTag() 14:11:13: -> ParseTag_Dir((null),,,0,) 14:11:13: -> open_directory(/myrepo/junk,.,(null),(null),0,(null),1) 14:11:13: -> open_directory() directory_stack_size increased by one to 1 14:11:13: -> Look for rename script file CVS/Rename 14:11:13: -> Rename script file does not exist 14:11:13: -> directory opened 14:11:13: -> do_recursion: begin 14:11:13: -> do_recursion: Check the value in CVSADM_ROOT 14:11:13: -> do_recursion: server does not appear to be active, update_dir= 14:11:13: -> do_recursion: Fill in repository with the current repository 14:11:13: -> do_recursion: update_dir= 14:11:13: -> Name_Repository((null),) 14:11:13: -> Name_Repository dup tmp is len 14:11:13: -> Name_Repository dup tmp is now len 14:11:13: -> Name_Repository open CVS/Repository 14:11:13: -> Name_Repository opened CVS/Repository ok so read a line 14:11:13: -> Name_Repository closed CVS/Repository 14:11:13: -> Name_Repository read 1 junk 14:11:13: -> Name_Repository (stripped the newline) read 2 junk 14:11:13: -> Name_Repository isabsolute( junk )? 14:11:13: -> Name_Repository isabsolute( junk )! 14:11:13: -> Name_Repository Sanitize_Repository_Name( /myrepo/junk )! 14:11:13: -> Name_Repository return ( /myrepo/junk )! 14:11:13: -> do_recursion: update_dir= repository=/myrepo/junk 14:11:13: -> !(repository && (server_active || !current_parsed_root->isremote)) - so just strdup 14:11:13: -> Repository = /myrepo/junk 14:11:13: -> Mapped repository = /myrepo/junk 14:11:13: -> * The filesdoneproc needs to be called for each directory where files 14:11:13: -> * processed, or each directory that is processed by a call where no 14:11:13: -> * directories were passed in. In fact, the only time we don't want to 14:11:13: -> * call back the filesdoneproc is when we are processing directories that 14:11:13: -> * were passed in on the command line (or in the special case of `.' when 14:11:13: -> * we were called with no args 14:11:13: -> do_recursion: dirlist == NULL && filelist == NULL 14:11:13: -> do_recursion: dodoneproc=1 14:11:13: -> * If filelist or dirlist is already set, we don't look again. Otherwise, 14:11:13: -> * find the files and directories 14:11:13: -> do_recursion: something was passed on the command line 14:11:13: -> do_recursion: we will process files, so pre-parse entries 14:11:13: -> Entries_Open() 14:11:13: -> Entries_Open ParseTag() 14:11:13: -> ParseTag() 14:11:13: -> ParseTag_Dir((null),,,0,) 14:11:13: -> Entries_Open aflag==0 && dirtag==0 && dirdate==0 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENT returned a file handle, now call the (slow) fgetentent() / AddEntryNode 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entries_Open fclose() CVSADM_ENT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Extra","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENTEXT returned a file handle 14:11:13: -> Entries_Open fclose() CVSADM_ENTEXT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Log","r") 14:11:13: -> Entries_Open clean up and return 14:11:13: -> Entries_Open done 14:11:13: -> do_recursion: process the files (if any) 14:11:13: -> do_recursion: read lock it if necessary 14:11:13: -> * For the server, we handle notifications in a completely different 14:11:13: -> place (server_notify). For local, we can't do them here--we don't 14:11:13: -> have writelocks in place, and there is no way to get writelocks here 14:11:13: -> do_recursion: process the files by calling walklist() 14:11:13: -> do_file_proc: process the files "tst.doc" 14:11:13: -> !(server_active || !current_parsed_root->isremote) - so just strdup 14:11:13: -> do_file_proc: mapped name of file "tst.doc" 14:11:13: -> do_file_proc: call findnode_fn() 14:11:13: -> do_file_proc: got a result from findnode_fn() 14:11:13: -> do_file_proc: verify_access() returned ok 14:11:13: -> Version_TS((null),(null),0) 14:11:13: -> Version_TS -- findnode_fn() not force_case_match 14:11:13: -> Version_TS -- findnode() found something that wasn't a subdir. 14:11:13: -> wnt_stat(tst.doc) 14:11:13: -> _statcore(00000000,tst.doc) 14:11:13: -> Trying GetFileAttributesEx.... 14:11:13: -> File attributes = 00000021 14:11:13: -> - FILE_ATTRIBUTE_READONLY 14:11:13: -> GetUnixFileModeNtEA(t,000002F0) returns 0600 14:11:13: -> _statcore(tst.doc) returns read-only 14:11:13: -> xchmod(tst.doc,1) noexec=false 14:11:13: -> xchmod() SetFileAttributes() done OK! 14:11:13: -> unlink_file(CVS/Base/tst.doc.gz) 14:11:13: -> xchmod(CVS/Base/tst.doc,0) noexec=false 14:11:13: -> xchmod() SetFileAttributes() done OK! 14:11:13: -> Register(tst.doc, 1.10, Tue Aug 28 19:09:34 2012, bx, , , , 1.10, HEAD) 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() was it already there? -- apparently yes 14:11:13: -> AddEntryNode() take it out 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Register(): !noexec 14:11:13: -> Register(): finished 14:11:13: -> do_file_proc: finished fileproc() 14:11:13: -> do_file_proc: return 14:11:13: -> do_recursion: unlock it 14:11:13: -> do_recursion: clean up by calling dellist(filelist) 14:11:13: -> do_recursion: call-back files done proc (if any) 14:11:13: -> do_recursion: no: don't call-back files done proc (process_this_directorydodoneprocframe->filesdoneproc == NULL) 14:11:13: -> do_recursion: at skip_directory 14:11:13: -> do_recursion: process the directories (if necessary) 14:11:13: -> do_recursion: cannot process the directories (dirlist == NULL) 14:11:13: -> Entries_Close - isfile ("CVS/Entries.Log") 14:11:13: -> Entries_Close - write_entries (list) 14:11:13: -> write_entries() CVSADM_ENTBAK entfilename="CVS/Entries.Log" 14:11:13: -> write_entries() CVSADM_ENTBAK ok 14:11:13: -> write_entries() CVSADM_ENTEXBAK ok 14:11:13: -> write_entries() now, atomically (on systems that support it) rename it 14:11:13: -> rename(CVS/Entries.Backup,CVS/Entries) 14:11:13: -> wnt_rename(CVS/Entries.Backup,CVS/Entries) 14:11:13: -> rename file CVS/Entries.Backup to CVS/Entries ... 14:11:13: -> rename(CVS/Entries.Extra.Backup,CVS/Entries.Extra) 14:11:13: -> wnt_rename(CVS/Entries.Extra.Backup,CVS/Entries.Extra) 14:11:13: -> rename file CVS/Entries.Extra.Backup to CVS/Entries.Extra ... 14:11:13: -> write_entries() now, remove the log file 14:11:13: -> unlink_file(CVS/Entries.Log) 14:11:13: -> unlink_file(CVS/Entries.Extra.Log) 14:11:13: -> write_entries() done 14:11:13: -> Entries_Close - dellist (list) 14:11:13: -> do_recursion: free the saved copy of the pointer if necessary 14:11:13: -> more efficient - close directory in unroll_files_proc? 14:11:13: -> close_directory() 14:11:13: -> close_directory() directory_stack_size decreased by one to 0 14:11:13: -> unroll_files_proc() end 14:11:13: -> walklist call with unroll_files_proc done. err=0 14:11:13: -> freenode() free the badbad DIRS 14:11:13: -> dellist after unroll_files_proc done. 14:11:13: -> start_recursion: cannot do_recursion on the dirlist. 14:11:13: -> start_recursion: Free the data which expand_wild allocated. 14:11:13: -> start_recursion: Free the data - update_dir 14:11:13: -> start_recursion: Free the data - update_repos 14:11:13: -> start_recursion: (args_to_send_when_finished == NULL) 14:11:13: -> start_recursion: return 0. 14:11:13: -> start_recursion((null),(null)) 14:11:13: -> start_recursion() dirleaveproc is NULL 14:11:13: -> start_recursion() update_dir set to "" 14:11:13: -> start_recursion - argument count (argc) == 1 14:11:13: -> * There were arguments, so we have to handle them by hand. To do 14:11:13: -> * that, we set up the filelist and dirlist with the arguments and 14:11:13: -> * call do_recursion. do_recursion recognizes the fact that the 14:11:13: -> * lists are non-null when it starts and doesn't update them. 14:11:13: -> 14:11:13: -> * explicitly named directories are stored in dirlist. 14:11:13: -> * explicitly named files are stored in filelist. 14:11:13: -> * other possibility is named entities whicha are not currently in 14:11:13: -> * the working directory. 14:11:13: -> * if this argument is a directory, then add it to the list of directories. 14:11:13: -> * otherwise, split argument into directory and component names. 14:11:13: -> * Now break out argv[i] into directory part (DIR) and file part (COMP). 14:11:13: -> DIR and COMP will each point to a newly malloc'd string. 14:11:13: -> ParseTag_Dir(.,,,0,) 14:11:13: -> start_recursion: (1) addfile(files_by_dir,".","tst.doc") 14:11:13: -> * At this point we have looped over all named arguments and built 14:11:13: -> a coupla lists. Now we unroll the lists, setting up and 14:11:13: -> calling do_recursion. 14:11:13: -> call walklist() with unroll_files_proc and files_by_dir 14:11:13: -> unroll_files_proc() begin 14:11:13: -> * if this dir was also an explicitly named argument, then skip 14:11:13: -> it. We'll catch it later when we do dirs. 14:11:13: -> * otherwise, call dorecusion for this list of files. 14:11:13: -> Name_Repository((null),) 14:11:13: -> Name_Repository dup tmp is len 14:11:13: -> Name_Repository dup tmp is now len 14:11:13: -> Name_Repository open CVS/Repository 14:11:13: -> Name_Repository opened CVS/Repository ok so read a line 14:11:13: -> Name_Repository closed CVS/Repository 14:11:13: -> Name_Repository read 1 junk 14:11:13: -> Name_Repository (stripped the newline) read 2 junk 14:11:13: -> Name_Repository isabsolute( junk )? 14:11:13: -> Name_Repository isabsolute( junk )! 14:11:13: -> Name_Repository Sanitize_Repository_Name( /myrepo/junk )! 14:11:13: -> Name_Repository return ( /myrepo/junk )! 14:11:13: -> ParseTag() 14:11:13: -> ParseTag_Dir((null),,,0,) 14:11:13: -> open_directory(/myrepo/junk,.,(null),(null),0,(null),1) 14:11:13: -> open_directory() directory_stack_size increased by one to 1 14:11:13: -> Look for rename script file CVS/Rename 14:11:13: -> Rename script file does not exist 14:11:13: -> directory opened 14:11:13: -> do_recursion: begin 14:11:13: -> do_recursion: Check the value in CVSADM_ROOT 14:11:13: -> do_recursion: server does not appear to be active, update_dir= 14:11:13: -> do_recursion: Fill in repository with the current repository 14:11:13: -> do_recursion: update_dir= 14:11:13: -> Name_Repository((null),) 14:11:13: -> Name_Repository dup tmp is len 14:11:13: -> Name_Repository dup tmp is now len 14:11:13: -> Name_Repository open CVS/Repository 14:11:13: -> Name_Repository opened CVS/Repository ok so read a line 14:11:13: -> Name_Repository closed CVS/Repository 14:11:13: -> Name_Repository read 1 junk 14:11:13: -> Name_Repository (stripped the newline) read 2 junk 14:11:13: -> Name_Repository isabsolute( junk )? 14:11:13: -> Name_Repository isabsolute( junk )! 14:11:13: -> Name_Repository Sanitize_Repository_Name( /myrepo/junk )! 14:11:13: -> Name_Repository return ( /myrepo/junk )! 14:11:13: -> do_recursion: update_dir= repository=/myrepo/junk 14:11:13: -> !(repository && (server_active || !current_parsed_root->isremote)) - so just strdup 14:11:13: -> Repository = /myrepo/junk 14:11:13: -> Mapped repository = /myrepo/junk 14:11:13: -> * The filesdoneproc needs to be called for each directory where files 14:11:13: -> * processed, or each directory that is processed by a call where no 14:11:13: -> * directories were passed in. In fact, the only time we don't want to 14:11:13: -> * call back the filesdoneproc is when we are processing directories that 14:11:13: -> * were passed in on the command line (or in the special case of `.' when 14:11:13: -> * we were called with no args 14:11:13: -> do_recursion: dirlist == NULL && filelist == NULL 14:11:13: -> do_recursion: dodoneproc=1 14:11:13: -> * If filelist or dirlist is already set, we don't look again. Otherwise, 14:11:13: -> * find the files and directories 14:11:13: -> do_recursion: something was passed on the command line 14:11:13: -> do_recursion: we will process files, so pre-parse entries 14:11:13: -> Entries_Open() 14:11:13: -> Entries_Open ParseTag() 14:11:13: -> ParseTag() 14:11:13: -> ParseTag_Dir((null),,,0,) 14:11:13: -> Entries_Open aflag==0 && dirtag==0 && dirdate==0 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENT returned a file handle, now call the (slow) fgetentent() / AddEntryNode 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entries_Open fclose() CVSADM_ENT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Extra","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENTEXT returned a file handle 14:11:13: -> Entries_Open fclose() CVSADM_ENTEXT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Log","r") 14:11:13: -> Entries_Open clean up and return 14:11:13: -> Entries_Open done 14:11:13: -> do_recursion: process the files (if any) 14:11:13: -> do_recursion: read lock it if necessary 14:11:13: -> * For the server, we handle notifications in a completely different 14:11:13: -> place (server_notify). For local, we can't do them here--we don't 14:11:13: -> have writelocks in place, and there is no way to get writelocks here 14:11:13: -> send_a_repository(,/myrepo/junk,) 14:11:13: -> send_repository(,/myrepo/junk,) 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=897 14:11:13: -> send_to_server_untranslated() calls buf_output() len=7 nbytes=904 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=911 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=912 14:11:13: -> send_to_server_untranslated() calls buf_output() len=1 nbytes=913 14:11:13: -> send_to_server_untranslated() calls buf_output() len=117 nbytes=914 14:11:13: -> do_recursion: process the files by calling walklist() 14:11:13: -> do_file_proc: process the files "tst.doc" 14:11:13: -> !(server_active || !current_parsed_root->isremote) - so just strdup 14:11:13: -> do_file_proc: mapped name of file "tst.doc" 14:11:13: -> do_file_proc: call findnode_fn() 14:11:13: -> do_file_proc: got a result from findnode_fn() 14:11:13: -> do_file_proc: verify_access() returned ok 14:11:13: -> do_file_proc: finished fileproc() 14:11:13: -> do_file_proc: return 14:11:13: -> do_recursion: unlock it 14:11:13: -> do_recursion: clean up by calling dellist(filelist) 14:11:13: -> do_recursion: call-back files done proc (if any) 14:11:13: -> do_recursion: no: don't call-back files done proc (process_this_directorydodoneprocframe->filesdoneproc == NULL) 14:11:13: -> do_recursion: at skip_directory 14:11:13: -> do_recursion: process the directories (if necessary) 14:11:13: -> do_recursion: cannot process the directories (dirlist == NULL) 14:11:13: -> Entries_Close - isfile ("CVS/Entries.Log") 14:11:13: -> Entries_Close - dellist (list) 14:11:13: -> do_recursion: free the saved copy of the pointer if necessary 14:11:13: -> more efficient - close directory in unroll_files_proc? 14:11:13: -> close_directory() 14:11:13: -> close_directory() directory_stack_size decreased by one to 0 14:11:13: -> unroll_files_proc() end 14:11:13: -> walklist call with unroll_files_proc done. err=0 14:11:13: -> freenode() free the badbad DIRS 14:11:13: -> dellist after unroll_files_proc done. 14:11:13: -> start_recursion: cannot do_recursion on the dirlist. 14:11:13: -> start_recursion: Free the data which expand_wild allocated. 14:11:13: -> start_recursion: Free the data - update_dir 14:11:13: -> start_recursion: Free the data - update_repos 14:11:13: -> start_recursion: (args_to_send_when_finished == NULL) 14:11:13: -> start_recursion: return 0. 14:11:13: -> send_to_server_untranslated() calls buf_output() len=5 nbytes=1031 14:11:13: -> tcp_write(139,568) 14:11:13: -> tcp_read(2265) using WSAEventSelect 14:11:13: -> tcp_read(2265) immediate timeout previous thread count -1/0 12:11:13: S -> Processed a client request - going to check it for deprecated clients "CVSNT 2.8.01 (Soolin) Build 4588". 14:11:13: -> tcp_read(2142) using WSAEventSelect 14:11:13: -> tcp_read(2142) immediate timeout previous thread count -1/0 12:11:13: S -> serve_notify(type = E, time = Tue Aug 28 19:11:13 2012 GMT, hostname = EUROPA, bug = (null), tag = HEAD, message = Editing as user B) 12:11:13: S -> Processed a client request - going to check it for deprecated clients "CVSNT 2.8.01 (Soolin) Build 4588". 12:11:13: S -> Name_Repository((null),(null)) 12:11:13: S -> Name_Repository dup tmp is len 12:11:13: S -> Name_Repository dup tmp is now len 12:11:13: S -> Name_Repository open CVS/Repository 12:11:13: S -> Name_Repository opened CVS/Repository ok so read a line 12:11:13: S -> Name_Repository closed CVS/Repository 12:11:13: S -> Name_Repository read 1 C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> Name_Repository (stripped the newline) read 2 C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> Name_Repository isabsolute( C:/PROGRA~3/MARCHH~1/myrepo/junk )? 12:11:13: S -> Name_Repository not isabsolute( C:/PROGRA~3/MARCHH~1/myrepo/junk ) 12:11:13: S -> Name_Repository Sanitize_Repository_Name( C:/PROGRA~3/MARCHH~1/myrepo/junk )! 12:11:13: S -> Name_Repository return ( C:/PROGRA~3/MARCHH~1/myrepo/junk )! 12:11:13: S -> map_repository(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> lookup_module2() 12:11:13: S -> lookup_module2(junk) after rename? 12:11:13: S -> lookup_module2() call _lookup_module2() 12:11:13: S -> _lookup_module2 - continue_if_no_mod2=1 (default) 12:11:13: S -> lookup_module2(junk,4) 14:11:13: -> tcp_read(682) using WSAEventSelect 14:11:13: -> tcp_read(682) immediate timeout previous thread count -1/0 12:11:13: S -> _lookup_module2 !p lookup_repository_module(junk) 14:11:13: -> tcp_read(646) using WSAEventSelect 14:11:13: -> tcp_read(646) immediate timeout previous thread count -1/0 12:11:13: S -> lookup_repository_module(junk) 12:11:13: S -> lookup_module2() calls to lookup_repository_module() returned nothing 12:11:13: S -> _lookup_module2 !mod return 0 left,right(,junk) 12:11:13: S -> lookup_module2() call _lookup_module2 returned 0 12:11:13: S -> lookup_module2() no recursion permitted so give up now 12:11:13: S -> lookup_module2() ret=0, current_directory==NULL, current_directory->directory_mappings=!!!! 12:11:13: S -> lookup_module2() return ret=0 renamed=0 12:11:13: S -> map_repository - return(repository) "C:/PROGRA~3/MARCHH~1/myrepo/junk" 14:11:13: -> tcp_read(5120) using WSAEventSelect 14:11:13: -> tcp_read(5120) immediate timeout previous thread count -1/0 12:11:13: S -> fileattr_startdir(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> notify_do (E, tst.doc, luserb, Tue Aug 28 19:11:13 2012 GMT, EUROPA, C:\Users\Glen Starrett\Documents\test\w7x64\junk-B, EUC, C:/PROGRA~3/MARCHH~1/myrepo/junk, HEAD, X, (null), Editing as user B) 12:11:13: S -> verify_perm(C:/PROGRA~3/MARCHH~1/myrepo/junk,tst.doc,write,HEAD,(null)) 12:11:13: S -> verify_perm: verify_owner_dir() 12:11:13: S -> verify_owner(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> cache_directory_permissions(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo/junk",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 12:11:13: S -> cache_directory_permissions() last_component=junk 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 14:11:13: -> tcp_read(4245) using WSAEventSelect 14:11:13: -> tcp_read(4245) immediate timeout previous thread count -1/0 12:11:13: S -> cache_directory_permissions() free(C:/PROGRA~3/MARCHH~1/myrepo) 12:11:13: S -> cache_directory_permissions() return 12:11:13: S -> verify_valid_name(lusera) 12:11:13: S -> cache_directory_permissions(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo/junk",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 12:11:13: S -> cache_directory_permissions() last_component=junk 12:11:13: S -> cache_directory_permissions() fncmp(d="C:/PROGRA~3/MARCHH~1/myrepo",current_parsed_root->directory="C:/PROGRA~3/MARCHH~1/myrepo") 12:11:13: S -> cache_directory_permissions() free(C:/PROGRA~3/MARCHH~1/myrepo) 12:11:13: S -> cache_directory_permissions() return 12:11:13: S -> verify_perm() Read directory permission cache OK 12:11:13: S -> ACL lookup on directory C:/PROGRA~3/MARCHH~1/myrepo/junk 12:11:13: S -> verify_acl(write,HEAD,(null)) 12:11:13: S -> user_state = 0, group_state = 0 12:11:13: S -> no match at this level 12:11:13: S -> ACL lookup on directory C:/PROGRA~3/MARCHH~1/myrepo 12:11:13: S -> verify_acl(write,HEAD,(null)) 12:11:13: S -> user_state = 0, group_state = 0 12:11:13: S -> no match at this level 12:11:13: S -> Match found. user_state = 0, group_state = 0 12:11:13: S -> verify_perm() return 12:11:13: S -> fileattr_find(file[@name=F'%s']/editor) 12:11:13: S -> fileattr_read(C:/PROGRA~3/MARCHH~1/myrepo/junk) 14:11:13: -> tcp_read(2784) using WSAEventSelect 14:11:13: -> tcp_read(2784) immediate timeout previous thread count -1/0 12:11:13: S -> _fileattr_read() malloc [strlen(C:/PROGRA~3/MARCHH~1/myrepo/junk)=]32+[sizeof(CVS/fileattr.xml)=]4+20=56 12:11:13: S -> fileattr_read() xmalloc fname OK 12:11:13: S -> _fileattr_read() allocated memory for fname - will now sprintf() 12:11:13: S -> _fileattr_read() ReadXmlFile("C:/PROGRA~3/MARCHH~1/myrepo/junk/CVS/fileattr.xml") 12:11:13: S -> fileattr_read() ReadXmlFile() 12:11:13: S -> fileattr_read() close 12:11:13: S -> fileattr_read() xfree fname 12:11:13: S -> fileattr_read() OK 12:11:13: S -> fileattr_read() return 12:11:13: S -> editor_set(E,tst.doc,luserb,Tue Aug 28 19:11:13 2012 GMT,EUROPA,C:\Users\Glen Starrett\Documents\test\w7x64\junk-B) 12:11:13: S -> fileattr_create(file[@name=F'%s']/editor[@name=U'%s']) 12:11:13: S -> fileattr_setvalue(tag,HEAD) 12:11:13: S -> fileattr_setvalue(time,Tue Aug 28 19:11:13 2012 GMT) 12:11:13: S -> fileattr_setvalue(hostname,EUROPA) 12:11:13: S -> fileattr_setvalue(pathname,C:\Users\Glen Starrett\Documents\test\w7x64\junk-B) 12:11:13: S -> fileattr_setvalue(message,Editing as user B) 12:11:13: S -> fileattr_setvalue(exclusive,) 12:11:13: S -> history_write(e,C:\Users\Glen Starrett\Documents\test\w7x64\junk-B,HEAD,tst.doc,C:/PROGRA~3/MARCHH~1/myrepo/junk,(null),Editing as user B) 12:11:13: S -> history_write(workdir=EUROPA/C:\Users\Glen Starrett\Documents\test\w7x64\junk-B) 12:11:13: S -> run history trigger 12:11:13: S -> history_write() run history trigger(e,EUROPA/C:\Users\Glen Starrett\Documents\test\w7x64\junk-B,HEAD,tst.doc,(null),Editing as user B,junk) 14:11:13: -> tcp_read(1199) using WSAEventSelect 14:11:13: -> tcp_read(1199) immediate timeout previous thread count -1/0 12:11:13: S -> run_trigger() 12:11:13: S -> Call pre-loaded 'email.dll' 12:11:13: S -> Call pre-loaded 'email.dll' returned 0, total ret 0 12:11:13: S -> Call pre-loaded 'info.dll' 12:11:13: S -> default_trigger: parse_info(CVSROOT/historyinfo,%t|%d|%u|%w|%s|%v,,) 12:11:13: S -> CFileAccess::open('C:/PROGRA~3/MARCHH~1/myrepo/CVSROOT/historyinfo','rb') 12:11:13: S -> CFileAccess::open() setvbuf(_IONBF) 12:11:13: S -> CFileAccess::close() 12:11:13: S -> CFileAccess::close() 12:11:13: S -> Call pre-loaded 'info.dll' returned 0, total ret 0 12:11:13: S -> run_trigger returning 0 12:11:13: S -> history_write() completed. 12:11:13: S -> CFileAccess::close() 12:11:13: S -> fileattr_find(file[@name=F'%s']/watcher) 12:11:13: S -> fileattr_getvalue(@name) 12:11:13: S -> fileattr_find(edit) 12:11:13: S -> run notify trigger 1 12:11:13: S -> run_trigger() 12:11:13: S -> Call pre-loaded 'email.dll' 12:11:13: S -> email_trigger: parse_emailinfo(CVSROOT/notify_email,junk) 12:11:13: S -> CFileAccess::open('C:/PROGRA~3/MARCHH~1/myrepo/CVSROOT/notify_email','rb') 12:11:13: S -> CFileAccess::open() setvbuf(_IONBF) 14:11:13: -> tcp_read(5120) using WSAEventSelect 14:11:13: -> tcp_read(5120) immediate timeout previous thread count -1/0 12:11:13: S -> CFileAccess::close() 12:11:13: S -> CFileAccess::close() 12:11:13: S -> Regexp match: DEFAULT - junk 12:11:13: S -> Default found 12:11:13: S -> using default line 12:11:13: S -> Notify array modified, size=1, count=1 12:11:13: S -> Call pre-loaded 'email.dll' returned 0, total ret 0 14:11:13: -> tcp_read(4842) using WSAEventSelect 14:11:13: -> tcp_read(4842) immediate timeout previous thread count -1/0 12:11:13: S -> Call pre-loaded 'info.dll' 12:11:13: S -> default_trigger: parse_info(CVSROOT/notify,,%<< %p %f\n---\nTriggered %y watch on %r\nBy %u,junk) 12:11:13: S -> CFileAccess::open('C:/PROGRA~3/MARCHH~1/myrepo/CVSROOT/notify','rb') 12:11:13: S -> CFileAccess::open() setvbuf(_IONBF) 12:11:13: S -> CFileAccess::close() 12:11:13: S -> CFileAccess::close() 12:11:13: S -> Call pre-loaded 'info.dll' returned 0, total ret 0 12:11:13: S -> run_trigger returning 0 12:11:13: S -> fileattr_next() 12:11:13: S -> watch_modify_watchers(tst.doc,luserb) 12:11:13: S -> fileattr_find(file[@name=F'%s']/watcher[@name=U'%s']) 12:11:13: S -> fileattr_create(file[@name=F'%s']/watcher[@name=U'%s']) 12:11:13: S -> fileattr_create(temp_edit) 12:11:13: S -> fileattr_create(temp_commit) 12:11:13: S -> fileattr_create(temp_unedit) 12:11:13: S -> fileattr_write() 12:11:13: S -> fileattr_write() file "/myrepo/junk/CVS/fileattr.bkp" written and closed 12:11:13: S -> fileattr_read(C:/PROGRA~3/MARCHH~1/myrepo/junk) 12:11:13: S -> _fileattr_read() malloc [strlen(C:/PROGRA~3/MARCHH~1/myrepo/junk)=]32+[sizeof(CVS/fileattr.bkp)=]4+20=56 12:11:13: S -> fileattr_read() xmalloc fname OK 12:11:13: S -> _fileattr_read() allocated memory for fname - will now sprintf() 12:11:13: S -> _fileattr_read() ReadXmlFile("C:/PROGRA~3/MARCHH~1/myrepo/junk/CVS/fileattr.bkp") 12:11:13: S -> fileattr_read() ReadXmlFile() 12:11:13: S -> fileattr_read() close 14:11:13: -> tcp_read(3363) using WSAEventSelect 14:11:13: -> tcp_read(3363) immediate timeout previous thread count -1/0 12:11:13: S -> fileattr_read() xfree fname 12:11:13: S -> fileattr_read() OK 12:11:13: S -> rename(C:/PROGRA~3/MARCHH~1/myrepo/junk/CVS/fileattr.bkp,C:/PROGRA~3/MARCHH~1/myrepo/junk/CVS/fileattr.xml) 12:11:13: S -> wnt_rename(C:/PROGRA~3/MARCHH~1/myrepo/junk/CVS/fileattr.bkp,C:/PROGRA~3/MARCHH~1/myrepo/junk/CVS/fileattr.xml) 12:11:13: S -> rename file /myrepo/junk/CVS/fileattr.bkp to /myrepo/junk/CVS/fileattr.xml ... 12:11:13: S -> fileattr_write() complete to "/myrepo/junk/CVS/fileattr.xml". 12:11:13: S -> fileattr_free() 12:11:13: S -> Lock server command sent: Close 12:11:13: S -> Lock server command received: 000 OK 14:11:13: -> handle_notified(notified_a_file) 14:11:13: -> call_in_directory C:/PROGRA~3/MARCHH~1/myrepo/junk/tst.doc,./ 14:11:13: -> call_in_directory -- handle "." C:/PROGRA~3/MARCHH~1/myrepo/junk/tst.doc,./ 14:11:13: -> call_in_directory dir_name(.) created from pathname(./) no prune 14:11:13: -> call_in_directory compare last_dir_name((null)) dir_name(.) 14:11:13: -> call_in_directory dir_name!=last_dir_name, or no last_dir_name 14:11:13: -> call_in_directory chdir(toplevel_wd=C:\Users\Glen Starrett\Documents\test\w7x64\junk-B) 14:11:13: -> call_in_directory chdir(dir_name=.) 14:11:13: -> Entries_Open() 14:11:13: -> Entries_Open ParseTag() 14:11:13: -> ParseTag() 14:11:13: -> ParseTag_Dir((null),,,2,) 14:11:13: -> Entries_Open aflag==0 && dirtag==0 && dirdate==0 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENT returned a file handle, now call the (slow) fgetentent() / AddEntryNode 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entnode_Create() 14:11:13: -> Entnode_Create() finished 14:11:13: -> AddEntryNode() 14:11:13: -> AddEntryNode() get a node and fill in the regular stuff 14:11:13: -> AddEntryNode() this one gets a key of the name for hashing 14:11:13: -> AddEntryNode() put the node into the list 14:11:13: -> AddEntryNode() finished 14:11:13: -> Entries_Open fclose() CVSADM_ENT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Extra","r") 14:11:13: -> Entries_Open CVS_FOPEN CVSADM_ENTEXT returned a file handle 14:11:13: -> Entries_Open fclose() CVSADM_ENTEXT 14:11:13: -> Entries_Open CVS_FOPEN("CVS/Entries.Log","r") 14:11:13: -> Entries_Open clean up and return 14:11:13: -> Entries_Open done 14:11:13: -> freenode() free the badbad DIRS 14:11:13: -> call_in_directory - call the function with (./tst.doc,tst.doc) 14:11:13: -> handle_notified(notified_a_file) done 14:11:13: -> Entries_Close - isfile ("CVS/Entries.Log") 14:11:13: -> Entries_Close - dellist (list) 14:11:13: -> Server: return from the requested function 14:11:13: -> Unloading - about to clear list 14:11:13: -> Unloading - cleared list 14:11:13: -> Unloading sspi 14:11:13: -> Process 3116 exiting 14:11:13: -> free_directory() 14:11:13: -> free_modules2() directory_stack_size and rubbish set to zero 14:11:13: -> Free CVS_Username and cvs_locale 14:11:13: -> Perform SYSTEM_CLEANUP () 14:11:13: -> Free global_session_time and global_real_session_time 14:11:13: -> CCvsgui::Close 14:11:13: -> main return OK 14:11:13: -> Set the terminate semaphore 14:11:13: -> Free trace_file