X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Ffiletools.h;h=05b3d705ec740f66b5de6150a3c51828f07e0138;hb=557c2f2bf0b22fb72b3af385571ea7b33ff377fd;hp=0146474d0715d903e69c00fbffac1eb09bf8cae1;hpb=b498646b2eb880b420b493a94144dd8dce2e32c7;p=lyx.git diff --git a/src/support/filetools.h b/src/support/filetools.h index 0146474d07..05b3d705ec 100644 --- a/src/support/filetools.h +++ b/src/support/filetools.h @@ -16,12 +16,35 @@ #include #include +#include namespace lyx { namespace support { class FileName; +/// Record used temp file names +static std::set tmp_names_; + +/// Get a temporary file name. +/** +* The actual temp file (QTemporaryFile object) is immediately +* destroyed after the name has been generated, so a new file +* has to be created manually from the name. +* This is needed if the temp file has to be manually removed +* (e.g., when temp files are used as conversion target, and the initial +* file only serves as a placeholder), since QTemporaryFile objects +* cannot be manually removed at least on Windows (they are always +* kept open internally even after close()). +* In order to avoid race conditions due to duplicate names, we record +* all used temp file names. +* If you don't have to remove the temp file manually, use TempFile instead! +*/ +FileName const tempFileName(std::string const &, bool const dir = false); + +/// Remove and unregister a temporary file. +void removeTempFile(FileName const &); + /** Creates the global LyX temp dir. \p deflt can be an existing directory name. In this case a new directory inside \p deflt is created. If \p deflt does not exist yet, \p deflt is @@ -282,7 +305,8 @@ bool readLink(FileName const & file, FileName & link); * \param format The file format as used by kpsewhich, e.g. "bib", "bst" etc. */ FileName const findtexfile(std::string const & fil, - std::string const & format); + std::string const & format, + bool const onlykpse = false); /** \param file1, file2 the two files to be compared. Must have absolute paths. * \returns 1 if \c file1 has a more recent timestamp than \c file2,