X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsupport%2FTempFile.h;h=16efede3ab57880e54bbefd7ac71a2037510db36;hb=41a8994da902031a743373c1c57d028b7c900797;hp=2adbb9f8de64b3f1656c1e69801a2db10fba68d0;hpb=db0ba3a3c68d2243722822e1c53535ff44d523bf;p=lyx.git diff --git a/src/support/TempFile.h b/src/support/TempFile.h index 2adbb9f8de..16efede3ab 100644 --- a/src/support/TempFile.h +++ b/src/support/TempFile.h @@ -24,16 +24,27 @@ class FileName; * The file is created in the constructor, and deleted in the destructor. * You may do anything with the file (including deletion), but the instance * of this class must stay alive as long as the file is needed. + * There is only one exception to this rule: + * If the file is supposed to be used by a different process then you need + * to be aware of OS specific file locking semantics: On windows, the file + * is opened with exclusive rights for the process which opened it. This + * is not the case on other OSes. Therefore, if the file is supposed to be + * used by a different process you need to sometheing similar to TempName + * in InsetExternal.cpp. */ class TempFile { + /// noncopyable + TempFile(TempFile const &); + /// nonassignable + TempFile & operator=(TempFile const &); public: /** *Create a temporary file with the given mask. - * \p mask must be in filesystem encoding, if it contains a - * relative path, the template file will be created in the global - * temporary directory as given by 'package().temp_dir()'. + * \p mask must be in filesystem encoding, the template file + * will be created in the global temporary directory as given + * by 'package().temp_dir()'. * If the mask contains "XXXXXX" this portion will be replaced by - * a uniquely generetd string. If it does not contain this portion, + * a uniquely generated string. If it does not contain this portion, * it will be automatically appended using a dot. Therefore, please * specify the "XXXXXX" portion if the extension of the generated * name is important (e.g. for the converter machinery). @@ -46,6 +57,13 @@ public: * This is empty if the file could not be created. */ FileName name() const; + /** + * Set whether the file should be automatically deleted in the + * destructor. + * Automatic deletion is the default, but it can be switched off if + * the file should be kept, because it should be renamed afterwards. + */ + void setAutoRemove(bool autoremove); private: /// struct Private;