]> git.lyx.org Git - features.git/blobdiff - src/support/FileName.h
more use of support::FileName.
[features.git] / src / support / FileName.h
index b71c554a9939a96d6b5f7ae6274daac35b538219..a2b1c3c48d6fe3b7ca19cfd611109dab28fb063b 100644 (file)
@@ -12,6 +12,8 @@
 #ifndef FILENAME_H
 #define FILENAME_H
 
+#include "strfwd.h"
+
 #include <string>
 #include <ctime>
 
@@ -51,7 +53,7 @@ public:
         * Get the file name in the encoding used by the file system.
         * Only use this for accessing the file, e.g. with an fstream.
         */
-       std::string const toFilesystemEncoding() const;
+       std::string toFilesystemEncoding() const;
 
        /// returns true if the file exists
        bool exists() const;
@@ -61,16 +63,55 @@ public:
        bool isReadOnly() const;
        /// return true when it names a directory
        bool isDirectory() const;
-       /// return true when file is readable
+       /// return true when file/directory is readable
        bool isReadable() const;
+       /// return true when it is a file and readable
+       bool isFileReadable() const;
+       /// return true when file/directory is writable
+       bool isWritable() const;
+       /// return true when file/directory is writable (write test file)
+       bool isDirWritable() const;
+       
+       /// return true when file/directory is writable (write test file)
+       bool copyTo(FileName const & target, bool noclobber) const;
+
+       /// remove directory and all contents, returns true on success
+       bool destroyDirectory() const;
+       /// Creates directory. Returns true on success
+       bool createDirectory(int permissions) const;
 
+       /// Get the contents of a file as a huge std::string
+       std::string fileContents() const;
        /**
         * Get a FileName from \p name in the encoding used by the file system.
         * Only use this for filenames you got directly from the file system,
         * e.g. from reading a directory.
         * \p name must have an absolute path.
         */
-       static FileName const fromFilesystemEncoding(std::string const & name);
+
+       /** Guess the file format name (as in Format::name()) from contents.
+        Normally you don't want to use this directly, but rather
+        Formats::getFormatFromFile().
+        */
+       std::string guessFormatFromContents() const;
+
+       /// check for zipped file
+       bool isZippedFile() const;
+
+       static FileName fromFilesystemEncoding(std::string const & name);
+       /// (securely) create a temporary file in the given dir with the given mask
+       /// \p mask must be in filesystem encoding
+       static FileName tempName(FileName const & dir = FileName(),
+                                               std::string const & mask = std::string());
+
+       /// filename without path
+       std::string onlyFileName() const;
+       /// path without file name
+       std::string onlyPath() const;
+       /// used for display in the Gui
+       docstring displayName(int threshold = 1000) const;
+
+
 protected:
        /// The absolute file name.
        /// The encoding is currently unspecified, anything else than ASCII