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); } }