mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 11:16:55 +00:00
Georg's mangling patch.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8485 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
60e502702e
commit
f146640834
@ -1,3 +1,8 @@
|
||||
2004-03-09 Georg Baum <Georg.Baum@post.rwth-aachen.de>
|
||||
|
||||
* filename.[Ch] (mangledFilename): make sure that mangled names are
|
||||
unique
|
||||
|
||||
2004-02-21 Georg Baum <Georg.Baum@post.rwth-aachen.de>
|
||||
|
||||
* filetools.[Ch] (CreateBufferTmpDir): rename to createBufferTmpDir,
|
||||
|
@ -18,7 +18,11 @@
|
||||
|
||||
#include <boost/assert.hpp>
|
||||
|
||||
#include <map>
|
||||
#include <sstream>
|
||||
|
||||
|
||||
using std::map;
|
||||
using std::string;
|
||||
|
||||
|
||||
@ -65,6 +69,15 @@ string const FileName::outputFilename(string const & path) const
|
||||
|
||||
string const FileName::mangledFilename() const
|
||||
{
|
||||
// We need to make sure that every FileName instance for a given
|
||||
// filename returns the same mangled name.
|
||||
typedef map<string, string> MangledMap;
|
||||
static MangledMap mangledNames;
|
||||
MangledMap::const_iterator const it = mangledNames.find(name_);
|
||||
if (it != mangledNames.end())
|
||||
return (*it).second;
|
||||
|
||||
// Now the real work
|
||||
string mname = os::slashify_path(name_);
|
||||
// Remove the extension.
|
||||
mname = ChangeExtension(name_, string());
|
||||
@ -73,7 +86,15 @@ string const FileName::mangledFilename() const
|
||||
// Replace '.' in the file name with '_'
|
||||
mname = subst(mname, ".", "_");
|
||||
// Add the extension back on
|
||||
return ChangeExtension(mname, GetExtension(name_));
|
||||
mname = ChangeExtension(mname, GetExtension(name_));
|
||||
// Prepend a counter to the filename. This is necessary to make
|
||||
// the mangled name unique.
|
||||
static int counter = 0;
|
||||
std::ostringstream s;
|
||||
s << counter++;
|
||||
mname = s.str() + mname;
|
||||
mangledNames[name_] = mname;
|
||||
return mname;
|
||||
}
|
||||
|
||||
|
||||
|
@ -46,6 +46,10 @@ public:
|
||||
/** \return a mangled version of the absolute file name,
|
||||
* suitable for use in the temp dir when, for example, converting
|
||||
* an image file to another format.
|
||||
* It is guaranteed that
|
||||
* - two different filenames have different mangled names
|
||||
* - two FileName instances with the same filename have identical
|
||||
* mangled names
|
||||
*/
|
||||
std::string const mangledFilename() const;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user