truncate too long filenames for pdflatex

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13384 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Georg Baum 2006-03-15 21:00:15 +00:00
parent 4b7512f767
commit fb7b7b1c59
2 changed files with 20 additions and 11 deletions

View File

@ -1,3 +1,8 @@
2006-03-15 Georg Baum <Georg.Baum@post.rwth-aachen.de>
* filename.C (mangledFilename): truncate filename to 140 characters
for MiKTeX's pdflatex
2006-03-07 Georg Baum <Georg.Baum@post.rwth-aachen.de> 2006-03-07 Georg Baum <Georg.Baum@post.rwth-aachen.de>
* debugstream.h: fix nullstream.hpp location for boost 1.33.0 * debugstream.h: fix nullstream.hpp location for boost 1.33.0

View File

@ -104,21 +104,25 @@ string const FileName::mangledFilename(std::string const & dir) const
// This string contains about 50 chars-worth of other data, // This string contains about 50 chars-worth of other data,
// leaving us, say, 160 characters for the file name itself. // leaving us, say, 160 characters for the file name itself.
// (Erring on the side of caution.) // (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() - 1 < max_length) {
// If dir.size() > max_length, all bets are off anyway.
// "+ 1" for the directory separator. // "+ 1" for the directory separator.
max_length -= dir.size() + 1; max_length -= dir.size() + 1;
}
// 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. // If the mangled file name is too long, hack it to fit.
// We know we're guaranteed to have a unique file name because // We know we're guaranteed to have a unique file name because
// of the counter. // of the counter.
if (mname.size() > max_length) { if (mname.size() > max_length) {
int const half = (int(max_length) / 2) - 2; int const half = (int(max_length) / 2) - 2;
if (half > 0) { if (half > 0) {
mname = mname.substr(0, half) + "___" + mname = mname.substr(0, half) + "___" +
mname.substr(mname.size() - half); mname.substr(mname.size() - half);
}
} }
} }