X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Ffiletools.h;h=05b3d705ec740f66b5de6150a3c51828f07e0138;hb=557c2f2bf0b22fb72b3af385571ea7b33ff377fd;hp=5177cdddee81ade1ced639a892c1225d36c5a6cb;hpb=c659fd4f742763331a5d1e1d3220fb1a615ef845;p=lyx.git diff --git a/src/support/filetools.h b/src/support/filetools.h index 5177cdddee..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 @@ -250,7 +273,7 @@ std::string const onlyPath(std::string const & fname); std::string const onlyFileName(std::string const & fname); /** Check and Replace Environmentvariables ${NAME} in Path. - Replaces all occurences of these, if they are found in the + Replaces all occurrences of these, if they are found in the environment. Variables are defined by Var := '${' [a-zA-Z_][a-zA-Z_0-9]* '}' */ @@ -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,