Am Mittwoch, 15. März 2006 19:00 schrieb Michael Gerz:
> Hi Georg,
> 
> pdflatex works now. I had to truncate the filenames to 140 characters. 
> Please see attachment.
> 
> Could you please commit? I have no svn access.

I changed the comment slightly to make the reason for the value 140 clear. 
The attached goes into trunk now.
Is it also OK for 1.4?


Georg
Index: src/support/ChangeLog
===================================================================
--- src/support/ChangeLog	(Revision 13382)
+++ src/support/ChangeLog	(Arbeitskopie)
@@ -1,3 +1,8 @@
+2006-03-15  Georg Baum  <[EMAIL PROTECTED]>
+
+	* filename.C (mangledFilename): truncate filename to 140 characters
+	for MiKTeX's pdflatex
+
 2006-03-07  Georg Baum  <[EMAIL PROTECTED]>
 
 	* debugstream.h: fix nullstream.hpp location for boost 1.33.0
Index: src/support/filename.C
===================================================================
--- src/support/filename.C	(Revision 13382)
+++ src/support/filename.C	(Arbeitskopie)
@@ -104,21 +104,25 @@ string const FileName::mangledFilename(s
 	// This string contains about 50 chars-worth of other data,
 	// leaving us, say, 160 characters for the file name itself.
 	// (Erring on the side of caution.)
-	string::size_type max_length = 160;
+	// Other experiments show that MiKTeX's pdflatex compiler is even
+	// more picky. A maximum length of 140 has been proven to work.
+	string::size_type max_length = 140;
 	if (dir.size() - 1 < max_length) {
-		// If dir.size() > max_length, all bets are off anyway.
 		// "+ 1" for the directory separator.
 		max_length -= dir.size() + 1;
-
-		// If the mangled file name is too long, hack it to fit.
-		// We know we're guaranteed to have a unique file name because
-		// of the counter.
-		if (mname.size() > max_length) {
-			int const half = (int(max_length) / 2) - 2;
-			if (half > 0) {
-				mname = mname.substr(0, half) + "___" +
-					mname.substr(mname.size() - half);
-			}
+	}
+	// If dir.size() > max_length, all bets are off for YAP anyway.
+	// We truncate the filename nevertheless because of MiKTeX's
+	// pdflatex compiler.
+
+	// If the mangled file name is too long, hack it to fit.
+	// We know we're guaranteed to have a unique file name because
+	// of the counter.
+	if (mname.size() > max_length) {
+		int const half = (int(max_length) / 2) - 2;
+		if (half > 0) {
+			mname = mname.substr(0, half) + "___" +
+				mname.substr(mname.size() - half);
 		}
 	}
 

Reply via email to