Tests running on posix Basic functionality, Init, Import, Checkout Basic Add, Remove, Resurrect, Commit Exclusive Add, Remove, Resurrect, Commit Basic binary Add/Checkout Binary remove and revert Binary delta Add/Checkout Add/Checkout large file Commit 50 revisions of a small file Commit 50 revisions of a large file Checkout/Diff different versions of a text file - first add diff_test.txt - commit first add diff_test.txt - commit first change (diff_test.txt.2) diff_test.txt - first tag diff_test.txt - log after tag diff_test.txt - commit second change (diff_test.txt.3) diff_test.txt - log after 2nd change diff_test.txt - commit third change (diff_test.txt.4) diff_test.txt - log after third cange diff_test.txt - update sandbox to rev 1.3 of diff_test.txt - update sandbox to rev 1.2 of diff_test.txt - update sandbox to rev 1.1 of diff_test.txt - update sandbox to rev 1.4 of diff_test.txt - update sandbox to rev 1.1 of diff_test.txt - update sandbox to rev 1.2 of diff_test.txt - update sandbox to rev 1.3 of diff_test.txt - update sandbox to rev 1.4 of diff_test.txt - update sandbox to rev 1.1 (again) of diff_test.txt - update sandbox to AUTO of diff_test.txt Update -F (Diff) different versions of a text file Checkout different versions of a binary file Branching - wait a couple of seconds... - wait a couple of seconds... Sticky tag test (symbolic) Sticky tag test (symbolic+update) Sticky tag test (revision) Sticky tag test (revision+update) Merging - wait a couple of seconds... - touch before commit (1)... - wait a couple of seconds... - touch before commit (2)... *info Add -ko and -k+x, update, edit, commit - test mode after first commit/update - test mode after second commit - test mode adter second update Antivirus commit edit -A, commit Antivirus edit -A, commit edit -A, commit with keyword expansion Antivirus edit -A, commit with keyword expansion ver 75 branch versions checkout files from branch and trunk update -F should not alter Entries or sandbox ressurect add_test.txt update -F temp-file, to revision 1.5 (maastrict.txt) - wait a couple of seconds... update -F temp-file, to revision 1.2 (dead) Test 'update -F should not alter Entries or sandbox' failed (-ttt update -r 1.2 -F "/home/abarrett/cvsdev/cvsnt/testcvs/tree_0/add_test_temp.txt" add_test.txt) (result=0) 14:58:04: -> Client trace started, level=3. 14:58:04: -> Tracelevel set to 3. PID is 57295 14:58:04: -> Session ID is dfcf5eaa5adc01a5 14:58:04: -> Session time is Thu Apr 30 04:58:04 2020 14:58:04: -> Current directory is "/home/abarrett/cvsdev/cvsnt/testcvs/tree_0/testcvs". 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Client locale is en_AU.UTF-8 14:58:04: -> Client was compiled Apr 30 2020 14:19:16 14:58:04: -> Client was compiled with GNU C/C++ 70300 (7.3.0) 14:58:04: -> Client build platform is unknown-linux-gnu-x86_64 14:58:04: -> main loop with CVSROOT=/repos 14:58:04: -> main - parse the CVSROOT/config file - not a remote root 14:58:04: -> Using local lockserver on port 2402 14:58:04: -> main - lock_register_client 14:58:04: -> lock_register_client: username="abarrett" root="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0" 14:58:04: -> lock_register_client: try #1 14:58:04: -> Lock server connect to 127.0.0.1 port 2402 14:58:04: -> Lock server connect socket 3 14:58:04: -> Lock server is version 2.30 14:58:04: -> Lock server command sent: Client abarrett|/home/abarrett/cvsdev/cvsnt/testcvs/repos_0||Nocase|57295 14:58:04: -> Lock server command received: 000 OK Client registered (#340) 14:58:04: -> Lock server client registered: OK Client registered (#340) 14:58:04: -> wrap_add(*.a -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.a" 14:58:04: -> wrap_add(*.ai -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.ai" 14:58:04: -> wrap_add(*.avi -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.avi" 14:58:04: -> wrap_add(*.bin -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.bin" 14:58:04: -> wrap_add(*.bmp -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.bmp" 14:58:04: -> wrap_add(*.bz2 -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.bz2" 14:58:04: -> wrap_add(*.cdd -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.cdd" 14:58:04: -> wrap_add(*.cdmz -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.cdmz" 14:58:04: -> wrap_add(*.chm -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.chm" 14:58:04: -> wrap_add(*.class -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.class" 14:58:04: -> wrap_add(*.cur -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.cur" 14:58:04: -> wrap_add(*.dcproject -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dcproject" 14:58:04: -> wrap_add(*.dcprocess -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dcprocess" 14:58:04: -> wrap_add(*.dcmessage -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dcmessage" 14:58:04: -> wrap_add(*.dcplatform -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dcplatform" 14:58:04: -> wrap_add(*.dcphyspf -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dcphyspf" 14:58:04: -> wrap_add(*.dcres -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dcres" 14:58:04: -> wrap_add(*.dcrset -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dcrset" 14:58:04: -> wrap_add(*.dcruntime -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dcruntime" 14:58:04: -> wrap_add(*.dcphysrt -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dcphysrt" 14:58:04: -> wrap_add(*.dll -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dll" 14:58:04: -> wrap_add(*.doc -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.doc" 14:58:04: -> wrap_add(*.docx -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.docx" 14:58:04: -> wrap_add(*.docm -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.docm" 14:58:04: -> wrap_add(*.fp -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.fp" 14:58:04: -> wrap_add(*.pptx -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.pptx" 14:58:04: -> wrap_add(*.pptm -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.pptm" 14:58:04: -> wrap_add(*.xlsx -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.xlsx" 14:58:04: -> wrap_add(*.xlsm -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.xlsm" 14:58:04: -> wrap_add(*.odt -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.odt" 14:58:04: -> wrap_add(*.ods -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.ods" 14:58:04: -> wrap_add(*.odp -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.odp" 14:58:04: -> wrap_add(*.odb -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.odb" 14:58:04: -> wrap_add(*.odg -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.odg" 14:58:04: -> wrap_add(*.odf -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.odf" 14:58:04: -> wrap_add(*.mpp -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.mpp" 14:58:04: -> wrap_add(*.dvi -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.dvi" 14:58:04: -> wrap_add(*.exe -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.exe" 14:58:04: -> wrap_add(*.gif -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.gif" 14:58:04: -> wrap_add(*.gz -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.gz" 14:58:04: -> wrap_add(*.hqx -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.hqx" 14:58:04: -> wrap_add(*.ico -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.ico" 14:58:04: -> wrap_add(*.ilk -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.ilk" 14:58:04: -> wrap_add(*.indd -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.indd" 14:58:04: -> wrap_add(*.iso -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.iso" 14:58:04: -> wrap_add(*.lib -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.lib" 14:58:04: -> wrap_add(*.jar -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.jar" 14:58:04: -> wrap_add(*.jpg -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.jpg" 14:58:04: -> wrap_add(*.jpeg -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.jpeg" 14:58:04: -> wrap_add(*.lnk -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.lnk" 14:58:04: -> wrap_add(*.mpg -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.mpg" 14:58:04: -> wrap_add(*.mpeg -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.mpeg" 14:58:04: -> wrap_add(*.mov -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.mov" 14:58:04: -> wrap_add(*.mp3 -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.mp3" 14:58:04: -> wrap_add(*.ncb -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.ncb" 14:58:04: -> wrap_add(*.o -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.o" 14:58:04: -> wrap_add(*.ogg -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.ogg" 14:58:04: -> wrap_add(*.ocx -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.ocx" 14:58:04: -> wrap_add(*.obj -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.obj" 14:58:04: -> wrap_add(*.pdb -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.pdb" 14:58:04: -> wrap_add(*.pdf -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.pdf" 14:58:04: -> wrap_add(*.png -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.png" 14:58:04: -> wrap_add(*.ppt -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.ppt" 14:58:04: -> wrap_add(*.psd -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.psd" 14:58:04: -> wrap_add(*.res -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.res" 14:58:04: -> wrap_add(*.rpm -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.rpm" 14:58:04: -> wrap_add(*.sit -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.sit" 14:58:04: -> wrap_add(*.so -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.so" 14:58:04: -> wrap_add(*.tar -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.tar" 14:58:04: -> wrap_add(*.tga -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.tga" 14:58:04: -> wrap_add(*.tgz -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.tgz" 14:58:04: -> wrap_add(*.tif -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.tif" 14:58:04: -> wrap_add(*.tiff -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.tiff" 14:58:04: -> wrap_add(*.ttf -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.ttf" 14:58:04: -> wrap_add(*.uir -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.uir" 14:58:04: -> wrap_add(*.wav -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.wav" 14:58:04: -> wrap_add(*.wmv -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.wmv" 14:58:04: -> wrap_add(*.xls -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.xls" 14:58:04: -> wrap_add(*.zip -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.zip" 14:58:04: -> wrap_add(*.Z -kb, 0, 0, 0, 0) 14:58:04: -> Call CFileAccess::mimetype: "*.Z" 14:58:04: -> The first item in the sorted list is "b" with wildcard "*.dll" 14:58:04: -> Reading global cvsrc 14:58:04: -> Parsing global cvsrc started 14:58:04: -> Parsing global cvsrc finished 0 lines. 14:58:04: -> No local /home/abarrett/.cvsrc to parse 14:58:04: -> run plugintools trigger 14:58:04: -> run_trigger() 14:58:04: -> LoadTrigger(checkout.la) 14:58:04: -> Could not open /etc/cvsnt/Plugins 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Checking admin file /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/CVSROOT/admin for user abarrett 14:58:04: -> Checking started in admin file /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/CVSROOT/admin for user abarrett 14:58:04: -> Checked admin file (null) for user abarrett they are an admin. 14:58:04: -> InitTrigger(checkout.la) 14:58:04: -> Could not open /etc/cvsnt/Plugins 14:58:04: -> Checkout trigger not enabled. 14:58:04: -> Couldn't load trigger checkout.la 14:58:04: -> LoadTrigger(email.la) 14:58:04: -> Could not open /etc/cvsnt/Plugins 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> InitTrigger(email.la) 14:58:04: -> Could not open /etc/cvsnt/Plugins 14:58:04: -> Email trigger not enabled. 14:58:04: -> Couldn't load trigger email.la 14:58:04: -> LoadTrigger(info.la) 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> InitTrigger(info.la) 14:58:04: -> Could not open /etc/cvsnt/Plugins 14:58:04: -> LoadTrigger(audit.la) 14:58:04: -> Could not open /etc/cvsnt/Plugins 14:58:04: -> Could not open /etc/cvsnt/Plugins 14:58:04: -> Audit trigger not enabled. 14:58:04: -> Couldn't load trigger audit.la 14:58:04: -> Call pre-loaded 'info.la' 14:58:04: -> plugintools_proc() 14:58:04: -> Call pre-loaded 'info.la' returned 0, total ret 0 14:58:04: -> run_trigger returning 0 14:58:04: -> run precommand trigger 14:58:04: -> run_trigger() 14:58:04: -> Call pre-loaded 'info.la' 14:58:04: -> precommand_proc() 14:58:04: -> default_trigger: parse_info(CVSROOT/precommand,%r %c,%) 14:58:04: -> Call pre-loaded 'info.la' returned 0, total ret 0 14:58:04: -> run_trigger returning 0 14:58:04: -> Server: call the requested function update 14:58:04: -> update() update_prune_dirs=0, argc=6, argv[5]=add_test.txt 14:58:04: -> update - do checks 14:58:04: -> update - * call the command line interface with preload_update_dir=NULL 14:58:04: -> do_update(1.2,(null),(null),(null)) 14:58:04: -> do_update() * call the recursion processor... with preload_update_dir=(null) 14:58:04: -> start_recursion((null),(null)) 14:58:04: -> start_recursion() dirleaveproc is OK 14:58:04: -> start_recursion() update_dir set to "" 14:58:04: -> start_recursion - argument count (argc) == 1 14:58:04: -> * There were arguments, so we have to handle them by hand. To do 14:58:04: -> * that, we set up the filelist and dirlist with the arguments and 14:58:04: -> * call do_recursion. do_recursion recognizes the fact that the 14:58:04: -> * lists are non-null when it starts and doesn't update them. 14:58:04: -> 14:58:04: -> * explicitly named directories are stored in dirlist. 14:58:04: -> * explicitly named files are stored in filelist. 14:58:04: -> * other possibility is named entities whicha are not currently in 14:58:04: -> * the working directory. 14:58:04: -> * if this argument is a directory, then add it to the list of directories. 14:58:04: -> * otherwise, split argument into directory and component names. 14:58:04: -> * Now break out argv[i] into directory part (DIR) and file part (COMP). 14:58:04: -> DIR and COMP will each point to a newly malloc'd string. 14:58:04: -> ParseTag_Dir(.,tag=,,nonbranch=32764,) 14:58:04: -> verify_access .,,(null) 14:58:04: -> Name_Repository(.,) 14:58:04: -> Name_Repository allocate tmp of size 26, len1=24, len2=16 14:58:04: -> Name_Repository open ./CVS/Repository 14:58:04: -> Name_Repository opened ./CVS/Repository ok so read a line 14:58:04: -> Name_Repository closed ./CVS/Repository 14:58:04: -> Name_Repository read 1 testcvs 14:58:04: -> Name_Repository (stripped the newline) read 2 testcvs 14:58:04: -> Name_Repository isabsolute( testcvs )? 14:58:04: -> Name_Repository isabsolute( testcvs )! 14:58:04: -> Name_Repository Sanitize_Repository_Name( /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs )! 14:58:04: -> Name_Repository return ( /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs )! 14:58:04: -> verify_perm(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs,add_test.txt,read,(null),(null)) 14:58:04: -> verify_perm: verify_owner_dir() 14:58:04: -> verify_owner(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> cache_directory_permissions(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> fileattr_read(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> _fileattr_read() malloc [strlen(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs)=]51+[sizeof(CVS/fileattr.xml)=]17+20=88 14:58:04: -> _fileattr_read() allocated memory for fname - will now sprintf() 14:58:04: -> _fileattr_read() ReadXmlFile("/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/CVS/fileattr.xml") 14:58:04: -> cache_directory_permissions() - cache directory(fileattr,) 14:58:04: -> cache_directory_permissions() fncmp(d="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs",current_parsed_root->directory="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0") 14:58:04: -> cache_directory_permissions() last_component=testcvs 14:58:04: -> fileattr_read(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0) 14:58:04: -> _fileattr_read() malloc [strlen(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0)=]43+[sizeof(CVS/fileattr.xml)=]17+20=80 14:58:04: -> _fileattr_read() allocated memory for fname - will now sprintf() 14:58:04: -> _fileattr_read() ReadXmlFile("/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/CVS/fileattr.xml") 14:58:04: -> cache_directory_permissions() - cache directory(fileattr,) 14:58:04: -> cache_directory_permissions() fncmp(d="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0",current_parsed_root->directory="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0") 14:58:04: -> cache_directory_permissions() free(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0) 14:58:04: -> cache_directory_permissions() return 14:58:04: -> verify_perm() Read directory permission cache OK 14:58:04: -> ACL lookup on directory /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs 14:58:04: -> verify_acl(read,HEAD,(null)) 14:58:04: -> user_state = 0, group_state = 0 14:58:04: -> no match at this level 14:58:04: -> ACL lookup on directory /home/abarrett/cvsdev/cvsnt/testcvs/repos_0 14:58:04: -> verify_acl(read,HEAD,(null)) 14:58:04: -> matched ACL user=_default_, branch=_default_, merge=(no acl_merge) 14:58:04: -> calculated ACL priority is 0 14:58:04: -> new max priority is 0 14:58:04: -> user_state = 0, group_state = 1 14:58:04: -> Match found. user_state = 0, group_state = 1 14:58:04: -> * At this point we have looped over all named arguments and built 14:58:04: -> a coupla lists. Now we unroll the lists, setting up and 14:58:04: -> calling do_recursion. 14:58:04: -> call walklist() with unroll_files_proc and files_by_dir 14:58:04: -> * if this dir was also an explicitly named argument, then skip 14:58:04: -> it. We'll catch it later when we do dirs. 14:58:04: -> Name_Repository((null),) 14:58:04: -> Name_Repository dup tmp is len 14:58:04: -> Name_Repository dup tmp is now len 14:58:04: -> Name_Repository open CVS/Repository 14:58:04: -> Name_Repository opened CVS/Repository ok so read a line 14:58:04: -> Name_Repository closed CVS/Repository 14:58:04: -> Name_Repository read 1 testcvs 14:58:04: -> Name_Repository (stripped the newline) read 2 testcvs 14:58:04: -> Name_Repository isabsolute( testcvs )? 14:58:04: -> Name_Repository isabsolute( testcvs )! 14:58:04: -> Name_Repository Sanitize_Repository_Name( /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs )! 14:58:04: -> Name_Repository return ( /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs )! 14:58:04: -> ParseTag() 14:58:04: -> ParseTag_Dir((null),tag=,,nonbranch=0,) 14:58:04: -> open_directory(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs,.,(null),(null),0,(null),0) 14:58:04: -> open_directory() directory_stack_size increased by one to 1 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> open_directory, (!remote) try and find a mapping file in this directory . 14:58:04: -> RCS_parse(.directory_history,/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> rcsbuf_open(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/.directory_history,v) 14:58:04: -> rcsbuf_open(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/.directory_history,v) failed to open file 1 times 14:58:04: -> rcsbuf_open(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/.directory_history,v) file does not exist, so return 0 14:58:04: -> rcsbuf_open failed 14:58:04: -> rcsbuf_open(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/Attic/.directory_history,v) 14:58:04: -> rcsbuf_open(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/Attic/.directory_history,v) failed to open file 1 times 14:58:04: -> rcsbuf_open(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/Attic/.directory_history,v) file does not exist, so return 0 14:58:04: -> rcsbuf_open failed 14:58:04: -> No mapping file in this directory. 14:58:04: -> open_directory copy the tag and date. 14:58:04: -> open_directory copied the tag and date. 14:58:04: -> Look for rename script file CVS/Rename 14:58:04: -> Rename script file does not exist 14:58:04: -> directory opened 14:58:04: -> do_recursion: begin 14:58:04: -> do_recursion: Check the value in CVSADM_ROOT 14:58:04: -> do_recursion: Fill in repository with the current repository 14:58:04: -> do_recursion: update_dir= 14:58:04: -> Name_Repository((null),) 14:58:04: -> Name_Repository dup tmp is len 14:58:04: -> Name_Repository dup tmp is now len 14:58:04: -> Name_Repository open CVS/Repository 14:58:04: -> Name_Repository opened CVS/Repository ok so read a line 14:58:04: -> Name_Repository closed CVS/Repository 14:58:04: -> Name_Repository read 1 testcvs 14:58:04: -> Name_Repository (stripped the newline) read 2 testcvs 14:58:04: -> Name_Repository isabsolute( testcvs )? 14:58:04: -> Name_Repository isabsolute( testcvs )! 14:58:04: -> Name_Repository Sanitize_Repository_Name( /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs )! 14:58:04: -> Name_Repository return ( /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs )! 14:58:04: -> do_recursion: update_dir= repository=/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs 14:58:04: -> (repository && (server_active || !current_parsed_root->isremote)) 14:58:04: -> map_repository(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> lookup_module2() 14:58:04: -> lookup_module2(testcvs) after rename? 14:58:04: -> lookup_module2() call _lookup_module2() 14:58:04: -> Loading modules2 from /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/CVSROOT/modules2 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> _lookup_module2 - continue_if_no_mod2=1 (default) 14:58:04: -> lookup_module2(testcvs,1) 14:58:04: -> _lookup_module2 !p lookup_repository_module(testcvs) 14:58:04: -> lookup_repository_module(testcvs) 14:58:04: -> lookup_module2() calls to lookup_repository_module() returned nothing 14:58:04: -> _lookup_module2 !mod return 0 left,right(,testcvs) 14:58:04: -> lookup_module2() call _lookup_module2 returned 0 14:58:04: -> lookup_module2() no recursion permitted so give up now 14:58:04: -> lookup_module2() ret=0, current_directory!=NULL, current_directory->directory_mappings===NULL 14:58:04: -> lookup_module2() return ret=0 renamed=0 14:58:04: -> map_repository - return(repository) "/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs" 14:58:04: -> Repository = /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs 14:58:04: -> Mapped repository = /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs 14:58:04: -> (repository && (server_active || !current_parsed_root->isremote)) 14:58:04: -> ParseTag() 14:58:04: -> ParseTag_Dir((null),tag=,,nonbranch=0,) 14:58:04: -> verify_access /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs,,(null) 14:58:04: -> verify_perm(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs,(null),read,(null),(null)) 14:58:04: -> verify_perm: verify_owner_dir() 14:58:04: -> verify_owner(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> cache_directory_permissions(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> cache_directory_permissions() fncmp(d="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs",current_parsed_root->directory="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0") 14:58:04: -> cache_directory_permissions() last_component=testcvs 14:58:04: -> cache_directory_permissions() fncmp(d="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0",current_parsed_root->directory="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0") 14:58:04: -> cache_directory_permissions() free(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0) 14:58:04: -> cache_directory_permissions() return 14:58:04: -> verify_perm() Read directory permission cache OK 14:58:04: -> ACL lookup on directory /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs 14:58:04: -> verify_acl(read,HEAD,(null)) 14:58:04: -> user_state = 0, group_state = 0 14:58:04: -> no match at this level 14:58:04: -> ACL lookup on directory /home/abarrett/cvsdev/cvsnt/testcvs/repos_0 14:58:04: -> verify_acl(read,HEAD,(null)) 14:58:04: -> matched ACL user=_default_, branch=_default_, merge=(no acl_merge) 14:58:04: -> calculated ACL priority is 0 14:58:04: -> new max priority is 0 14:58:04: -> user_state = 0, group_state = 1 14:58:04: -> Match found. user_state = 0, group_state = 1 14:58:04: -> fileattr_startdir(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> * The filesdoneproc needs to be called for each directory where files 14:58:04: -> * processed, or each directory that is processed by a call where no 14:58:04: -> * directories were passed in. In fact, the only time we don't want to 14:58:04: -> * call back the filesdoneproc is when we are processing directories that 14:58:04: -> * were passed in on the command line (or in the special case of `.' when 14:58:04: -> * we were called with no args 14:58:04: -> do_recursion: dirlist == NULL && filelist == NULL 14:58:04: -> do_recursion: dodoneproc=1 14:58:04: -> * If filelist or dirlist is already set, we don't look again. Otherwise, 14:58:04: -> * find the files and directories 14:58:04: -> do_recursion: something was passed on the command line 14:58:04: -> do_recursion: we will process files, so pre-parse entries 14:58:04: -> Entries_Open() 14:58:04: -> Entries_Open ParseTag() 14:58:04: -> ParseTag() 14:58:04: -> ParseTag_Dir((null),tag=,,nonbranch=-477386112,) 14:58:04: -> Entries_Open aflag==0 && dirtag==0 && dirdate==0 14:58:04: -> Entries_Open CVS_FOPEN("CVS/Entries","r") 14:58:04: -> Entries_Open CVS_FOPEN CVSADM_ENT returned a file handle, now call the (slow) fgetentent() / AddEntryNode 14:58:04: -> Entries_Open fclose() CVSADM_ENT 14:58:04: -> Entries_Open CVS_FOPEN("CVS/Entries.Extra","r") 14:58:04: -> Entries_Open CVS_FOPEN CVSADM_ENTEXT returned a file handle 14:58:04: -> Entries_Open fclose() CVSADM_ENTEXT 14:58:04: -> Entries_Open CVS_FOPEN("CVS/Entries.Log","r") 14:58:04: -> Entries_Open clean up and return 14:58:04: -> Entries_Open done 14:58:04: -> do_recursion: process the files (if any) 14:58:04: -> do_recursion: read lock it if necessary 14:58:04: -> * For the server, we handle notifications in a completely different 14:58:04: -> place (server_notify). For local, we can't do them here--we don't 14:58:04: -> have writelocks in place, and there is no way to get writelocks here 14:58:04: -> do_recursion: process the files by calling walklist() 14:58:04: -> do_file_proc: process the files "add_test.txt" 14:58:04: -> (server_active || !current_parsed_root->isremote) 14:58:04: -> map_filename(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs,add_test.txt) 14:58:04: -> map_filename - call map_repository(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/add_test.txt) 14:58:04: -> map_repository(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/add_test.txt) 14:58:04: -> lookup_module2() 14:58:04: -> lookup_module2(testcvs/add_test.txt) after rename? 14:58:04: -> lookup_module2() call _lookup_module2() 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> _lookup_module2 - continue_if_no_mod2=1 (default) 14:58:04: -> lookup_module2(testcvs/add_test.txt,2) 14:58:04: -> _lookup_module2 p!=NULL lookup_repository_module(testcvs) 14:58:04: -> lookup_repository_module(testcvs) 14:58:04: -> lookup_module2() calls to lookup_repository_module() returned nothing 14:58:04: -> _lookup_module2 !mod return 0 left,right(,testcvs/add_test.txt) 14:58:04: -> lookup_module2() call _lookup_module2 returned 0 14:58:04: -> lookup_module2() no recursion permitted so give up now 14:58:04: -> lookup_module2() ret=0, current_directory!=NULL, current_directory->directory_mappings===NULL 14:58:04: -> lookup_module2() return ret=0 renamed=0 14:58:04: -> map_repository - return(repository) "/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/add_test.txt" 14:58:04: -> map_filename - map_repository() returns /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/add_test.txt 14:58:04: -> do_file_proc: mapped name of file "add_test.txt" 14:58:04: -> do_file_proc: frfile->frame->dosrcs && mapped_file_repository 14:58:04: -> RCS_parse(add_test.txt,/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> rcsbuf_open(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/add_test.txt,v) 14:58:04: -> Lock server command sent: Lock Read Full|/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/add_test.txt,v 14:58:04: -> Lock server command received: 000 OK Lock granted (1439) 14:58:04: -> do_lock_server: [14:58:04] obtained lock 1439 in /repos/testcvs/add_test.txt,v 14:58:04: -> do_lock_file: lock server returns 1439 14:58:04: -> rcsbuf_open(/repos/testcvs/add_test.txt,v) -- obtained a new lock 14:58:04: -> rcsbuf_fill(0): expanded to 131072 (was: 0, req: 81920, inc: 81920, RCSBUF_BUFSIZE: 81920). 14:58:04: -> do_file_proc: call findnode_fn() 14:58:04: -> do_file_proc: got a result from findnode_fn() 14:58:04: -> verify_access /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs,,(null) 14:58:04: -> verify_perm(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs,add_test.txt,read,(null),(null)) 14:58:04: -> verify_perm: verify_owner_dir() 14:58:04: -> verify_owner(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> cache_directory_permissions(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs) 14:58:04: -> cache_directory_permissions() fncmp(d="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs",current_parsed_root->directory="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0") 14:58:04: -> cache_directory_permissions() last_component=testcvs 14:58:04: -> cache_directory_permissions() fncmp(d="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0",current_parsed_root->directory="/home/abarrett/cvsdev/cvsnt/testcvs/repos_0") 14:58:04: -> cache_directory_permissions() free(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0) 14:58:04: -> cache_directory_permissions() return 14:58:04: -> verify_perm() Read directory permission cache OK 14:58:04: -> ACL lookup on directory /home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs 14:58:04: -> verify_acl(read,HEAD,(null)) 14:58:04: -> user_state = 0, group_state = 0 14:58:04: -> no match at this level 14:58:04: -> ACL lookup on directory /home/abarrett/cvsdev/cvsnt/testcvs/repos_0 14:58:04: -> verify_acl(read,HEAD,(null)) 14:58:04: -> matched ACL user=_default_, branch=_default_, merge=(no acl_merge) 14:58:04: -> calculated ACL priority is 0 14:58:04: -> new max priority is 0 14:58:04: -> user_state = 0, group_state = 1 14:58:04: -> Match found. user_state = 0, group_state = 1 14:58:04: -> do_file_proc: verify_access() returned ok 14:58:04: -> Classify_File (add_test.txt) 14:58:04: -> Version_TS(1.2,(null),1) 14:58:04: -> Version_TS -- findnode_fn() not force_case_match 14:58:04: -> Version_TS -- findnode() found something that wasn't a subdir. 14:58:04: -> Could not open /etc/cvsnt/PServer 14:58:04: -> Version_TS - call RCS_getversion("/home/abarrett/cvsdev/cvsnt/testcvs/repos_0/testcvs/add_test.txt,v",1.2,(null),1,0) 14:58:04: -> Classify_File vn_rcs=1.2 14:58:04: -> Classify_File options=o 14:58:04: -> Classify_File A normal entry, TS_Rcs is valid 14:58:04: -> Classify_File There is no RCS file 14:58:04: -> Classify_File The user file is still unmodified, so just remove it from the entry list cvs update: add_test.txt is no longer in the repository 14:58:04: -> Classify_File free up the vers struct, or just return it 14:58:04: -> Classify_File return the status of the file 14:58:04: -> update_fileproc() do not scratch entries and file because of force_update_file_name 14:58:04: -> do_file_proc: finished fileproc() 14:58:04: -> Lock server command sent: Unlock 1439 14:58:04: -> Lock server command received: 000 OK Unlocked 14:58:04: -> do_unlock_file: (lock 1439) lock server returns 0 14:58:04: -> do_file_proc: return 14:58:04: -> do_recursion: unlock it by calling Lock_Cleanup_Directory() 14:58:04: -> do_recursion: clean up by calling dellist(filelist) 14:58:04: -> do_recursion: call-back files done proc (if any) 14:58:04: -> do_recursion: yes: call-back files done proc (if any) 14:58:04: -> do_recursion: at skip_directory 14:58:04: -> (repository && (server_active || !current_parsed_root->isremote)) 14:58:04: -> fileattr_write() 14:58:04: -> fileattr_free() 14:58:04: -> do_recursion: process the directories (if necessary) 14:58:04: -> do_recursion: cannot process the directories (dirlist == NULL) 14:58:04: -> Entries_Close - isfile ("CVS/Entries.Log") 14:58:04: -> Entries_Close - dellist (list) 14:58:04: -> do_recursion: free the saved copy of the pointer if necessary 14:58:04: -> close_directory() 14:58:04: -> close_directory() directory_stack_size decreased by one to 0 14:58:04: -> walklist call with unroll_files_proc done. err=0 14:58:04: -> dellist after unroll_files_proc done. 14:58:04: -> start_recursion: cannot do_recursion on the dirlist. 14:58:04: -> start_recursion: Free the data which expand_wild allocated. 14:58:04: -> start_recursion: Free the data - update_dir 14:58:04: -> start_recursion: Free the data - update_repos 14:58:04: -> start_recursion: (args_to_send_when_finished == NULL) 14:58:04: -> start_recursion: return 0. 14:58:04: -> open_module(/home/abarrett/cvsdev/cvsnt/testcvs/repos_0) 14:58:04: -> update - all CVSROOT - we can now free the force_update_file_name 14:58:04: -> update - all finishing. 14:58:04: -> Server: return from the requested function 14:58:04: -> run postcommand trigger 14:58:04: -> run_trigger() 14:58:04: -> Call pre-loaded 'info.la' 14:58:04: -> postcommand_proc() 14:58:04: -> default_trigger: parse_info(CVSROOT/postcommand,%r/%p %c,,testcvs) 14:58:04: -> Regexp match: testcvs - testcvs 14:58:04: -> Match found! 14:58:04: -> parse_info_line: Line=echo postcommand - testcvs %r/%p %c 14:58:04: -> parse_info_line: Out=echo postcommand - testcvs /repos/testcvs update 14:58:04: -> parse_info_line_and_run: Run arguments: echo postcommand - testcvs /repos/testcvs update 14:58:04: -> CreateProcess(,echo postcommand - testcvs /repos/testcvs update) 14:58:04: -> Exit status is 0 14:58:04: -> Run return result: 0 14:58:04: -> Regexp match: DEFAULT - testcvs 14:58:04: -> Regexp match: ALL - testcvs 14:58:04: -> ALL found 14:58:04: -> parse_info_line: Line=echo postcommand - all %r/%p %c 14:58:04: -> parse_info_line: Out=echo postcommand - all /repos/testcvs update 14:58:04: -> parse_info_line_and_run: Run arguments: echo postcommand - all /repos/testcvs update 14:58:04: -> CreateProcess(,echo postcommand - all /repos/testcvs update) 14:58:04: -> Exit status is 0 14:58:04: -> Run return result: 0 14:58:04: -> Call pre-loaded 'info.la' returned 0, total ret 0 14:58:04: -> run_trigger returning 0 14:58:04: -> Unloading checkout.la 14:58:04: -> Unloading - about to destroy 14:58:04: -> Unloading - destroyed 14:58:04: -> Unloading - about to get lib 14:58:04: -> Unloading - about to unload checkout.la 14:58:04: -> Unloading - unloaded 14:58:04: -> Unloading - about to free 14:58:04: -> Unloading - about to delete trigg 14:58:04: -> Unloading - about to delete inf 14:58:04: -> Unloading - complete 14:58:04: -> Unloading email.la 14:58:04: -> Unloading - about to destroy 14:58:04: -> Unloading - destroyed 14:58:04: -> Unloading - about to get lib 14:58:04: -> Unloading - about to unload email.la 14:58:04: -> Unloading - unloaded 14:58:04: -> Unloading - about to free 14:58:04: -> Unloading - about to delete trigg 14:58:04: -> Unloading - about to delete inf 14:58:04: -> Unloading - complete 14:58:04: -> Unloading info.la 14:58:04: -> Unloading - about to close 14:58:04: -> Unloading - closed 14:58:04: -> Unloading - about to destroy 14:58:04: -> Unloading - destroyed 14:58:04: -> Unloading - about to get lib 14:58:04: -> Unloading - about to unload info.la 14:58:04: -> Unloading - unloaded 14:58:04: -> Unloading - about to free 14:58:04: -> Unloading - about to delete trigg 14:58:04: -> Unloading - about to delete inf 14:58:04: -> Unloading - complete 14:58:04: -> Unloading - about to clear list 14:58:04: -> Unloading - cleared list 14:58:04: -> Lock server command sent: Close 14:58:04: -> Lock server command received: 000 OK 14:58:04: -> Process 57295 exiting 14:58:04: -> free_directory() 14:58:04: -> free_modules2() directory_stack_size and rubbish set to zero 14:58:04: -> Free CVS_Username and cvs_locale 14:58:04: -> Free global_session_time and global_real_session_time 14:58:04: -> CCvsgui::Close 14:58:04: -> main return OK 14:58:04: -> Free trace_file