Index: other-projects/nightly-tasks/diffcol/trunk/diffcol/diffcol.pl
===================================================================
--- other-projects/nightly-tasks/diffcol/trunk/diffcol/diffcol.pl	(revision 28237)
+++ other-projects/nightly-tasks/diffcol/trunk/diffcol/diffcol.pl	(revision 28238)
@@ -293,5 +293,5 @@
 	my $strModelGdb =  &FileUtils::filenameConcatenate($strModelCol,"index","text","$strColName.gdb");
 	my $strTestGdb =  &FileUtils::filenameConcatenate($strTestCol,"index","text","$strColName.gdb");	
-	my $strGdbError = &GdbDiff($strModelGdb,$strTestGdb,$strOutputFormat,$intLevel,$strColName); # returns 0 if no error
+	my $strGdbError = &GdbDiff($strModelGdb,$strTestGdb,$strOutputFormat,$intLevel,$strColName,$strTestCol,$strModelCol); # returns 0 if no error
 	if($strGdbError) {
 	    push(@Errors,$strGdbError);
@@ -301,5 +301,5 @@
 	$strModelGdb =  &FileUtils::filenameConcatenate($strModelCol,"archives","archiveinf-doc.gdb");
 	$strTestGdb =  &FileUtils::filenameConcatenate($strTestCol,"archives","archiveinf-doc.gdb");	
-	$strGdbError = &GdbDiff($strModelGdb,$strTestGdb,$strOutputFormat,$intLevel,$strColName);
+	$strGdbError = &GdbDiff($strModelGdb,$strTestGdb,$strOutputFormat,$intLevel,$strColName,$strTestCol,$strModelCol);
 	if($strGdbError) {
 	    push(@Errors,$strGdbError);
@@ -308,5 +308,5 @@
 	$strModelGdb =  &FileUtils::filenameConcatenate($strModelCol,"archives","archiveinf-src.gdb");
         $strTestGdb =  &FileUtils::filenameConcatenate($strTestCol,"archives","archiveinf-src.gdb");
-        $strGdbError = &GdbDiff($strModelGdb,$strTestGdb,$strOutputFormat,$intLevel,$strColName);
+        $strGdbError = &GdbDiff($strModelGdb,$strTestGdb,$strOutputFormat,$intLevel,$strColName,$strTestCol,$strModelCol);
         if($strGdbError) {
             push(@Errors,$strGdbError);
@@ -322,5 +322,5 @@
 sub GdbDiff
 {
-    my ($strModelGdb,$strTestGdb,$strOutputFormat,$intLevel,$strColName) = @_;
+    my ($strModelGdb,$strTestGdb,$strOutputFormat,$intLevel,$strColName,$strTestCol,$strModelCol) = @_;
 
     my $strGdbError = 0;
@@ -329,5 +329,5 @@
     {
 	#my $strGdbError = gdbdiff::test_gdb($strModelGdb, $strTestGdb);
-	$strGdbError = gdbdiff::test_gdb($strModelGdb, $strTestGdb, $strColName,$gv_test_os, $gv_model_os);
+	$strGdbError = gdbdiff::test_gdb($strModelGdb, $strTestGdb, $strColName,$gv_test_os, $gv_model_os,$strTestCol,$strModelCol);
 	if($strGdbError ne "")
 	{
Index: other-projects/nightly-tasks/diffcol/trunk/diffcol/gdbdiff.pm
===================================================================
--- other-projects/nightly-tasks/diffcol/trunk/diffcol/gdbdiff.pm	(revision 28237)
+++ other-projects/nightly-tasks/diffcol/trunk/diffcol/gdbdiff.pm	(revision 28238)
@@ -46,5 +46,5 @@
 sub test_gdb
 {
-    my ($full_modeldb, $full_testdb, $strColName, $test_os, $model_os) = @_;
+    my ($full_modeldb, $full_testdb, $strColName, $test_os, $model_os, $strTestCol, $strModelCol) = @_;
 
    # print "Now is testing database\n";
@@ -105,8 +105,12 @@
 	
 		my ($win_text, $lin_text); # references
+		my $collection_path = $strTestCol; # full path to a windows collection
+		
 		if($testIsWin) {
+			$collection_path = $strTestCol; # test collection path is windows 
 			$win_text = \$test_text;
 			$lin_text = \$model_text;
 		} else {
+			$collection_path = $strModelCol; # model collection path is windows
 			$win_text = \$model_text;
 			$lin_text = \$test_text;
@@ -114,4 +118,7 @@
 		
 		if($dbname =~ m/archiveinf-doc/) {
+			
+			(my $collection_path_re = $collection_path) =~ s@\\@\\\\@g;
+			
 			my $tmp = ""; # rebuild windows file's set of lines after processing them one by one
 	
@@ -122,10 +129,17 @@
 				# assoc-file and meta-file contain filepaths, ensure these are long windows file paths now (will later convert to linux slashes)	
 				if($line =~ m@^<(assoc-file|meta-file|src-file)>(.*)(\s+)@s) {
+					my ($field, $value, $suffix) = ($1, $2, $3);
+					$line = $value; # it may be a short file name	
 					
-					if($2 !~ m/^\@/) { # if the path doesn't use a "relative" @GSPATH@ placeholder string, but is an absolute path instead
-						$line = $2; # it may be a short file name
-						# perhaps test here if it is a shortfilename? should match /CAPS....~number(.ext)/
-						
-						$line = "<$1>".&Win32::GetLongPathName($line)."$3"; # make it a long file name and prefix assoc-file/meta-file tagname to it again					
+					if($line !~ m/^\@/) { # if the path doesn't use a "relative" @GSPATH@ placeholder string, but is an absolute path instead						
+						# perhaps test here if it is a shortfilename? should match /CAPS....~number(.ext)/						
+						$line = "<$field>".&Win32::GetLongPathName($line)."$suffix"; # make it a long file name and prefix assoc-file/meta-file tagname to it again					
+					} 
+					else { # if $line contains @THISCOLLECTIONPATH@, still need to deal with DOS filenames suffixes: 
+						# replace placeholder with absolute path and expand to long filename, then insert placeholder in its original place again						
+						$line =~ s/\@THISCOLLECTPATH\@/$collection_path/;
+						$line = &Win32::GetLongPathName($line);
+						$line =~ s/^$collection_path_re/\@THISCOLLECTPATH\@/;
+						$line = "<$field>".$line."$suffix";
 					}
 				}
