]> git.lyx.org Git - lyx.git/blobdiff - src/support/filetools.h
Move #includes out of header files.
[lyx.git] / src / support / filetools.h
index 14ba9027fc56873c98998ea665cfcfea78c23fba..ff2a3de2e0ebf58b67e986704664ef62aee9045f 100644 (file)
@@ -1,39 +1,36 @@
-// -*- C++-*-
-/* lyx-filetool.h : tools functions for file/path handling
-   this file is part of LyX, the High Level Word Processor
-   Copyright 1995-2000, Matthias Ettrich and the LyX Team
-*/
+// -*- C++ -*-
+/**
+ * \file filetools.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
 
 #ifndef LYX_FILETOOL_H
 #define LYX_FILETOOL_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include <cstdlib>
-#include <fcntl.h>
-#include <cerrno>
-
-#include "debug.h"
+#include <vector>
+#include <utility>
 #include "LString.h"
-#include "support/lstrings.h"
 
 
-///
-string CreateBufferTmpDir (string const & pathfor = string());
+namespace lyx {
+namespace support {
 
-/// Creates directory. Returns true on succes.
-bool createDirectory(string const & name, int permissions);
+/// remove directory and all contents, returns 0 on success
+int destroyDir(string const & tmpdir);
 
 ///
-string CreateLyXTmpDir (string const & deflt);
+string const CreateBufferTmpDir(string const & pathfor = string());
 
-///
-int DestroyBufferTmpDir (string const & tmpdir);
+/// Creates directory. Returns true on success
+bool createDirectory(string const & name, int permissions);
 
 ///
-int DestroyLyXTmpDir (string const & tmpdir);
+string const CreateLyXTmpDir(string const & deflt);
 
 /** Find file by searching several directories.
   Uses a string of paths separated by ";"s to find a file to open.
@@ -42,7 +39,7 @@ int DestroyLyXTmpDir (string const & tmpdir);
     If path entry begins with $$User/, use user_lyxdir.
     Example: "$$User/doc;$$LyX/doc".
 */
-string FileOpenSearch (string const & path, string const & name, 
+string const FileOpenSearch(string const & path, string const & name,
                       string const & ext = string());
 
 /** Returns the real name of file name in directory path, with optional
@@ -50,16 +47,19 @@ string FileOpenSearch (string const & path, string const & name,
   The file is searched in the given path (unless it is an absolute
   file name), first directly, and then with extension .ext (if given).
   */
-string FileSearch(string const & path, string const & name, 
+string const FileSearch(string const & path, string const & name,
                  string const & ext = string());
 
+/// Returns a vector of all files in directory dir having extension ext.
+std::vector<string> const DirList(string const & dir,
+                                 string const & ext = string());
+
 /** Is directory read only?
-  returns 
-    1: dir writeable
-    0: not writeable
-   -1: error- couldn't find out, or unsure
-  */
-int IsDirWriteable (string const & path);
+  returns
+    true: dir writeable
+    false: not writeable
+*/
+bool IsDirWriteable (string const & path);
 
 /** Is a file readable ?
   Returns true if the file `path' is readable.
@@ -77,6 +77,9 @@ int IsFileWriteable (string const & path);
 ///
 bool IsLyXFilename(string const & filename);
 
+///
+bool IsSGMLFilename(string const & filename);
+
 /** Returns the path of a library data file.
   Search the file name.ext in the subdirectory dir of
   \begin{enumerate}
@@ -86,74 +89,83 @@ bool IsLyXFilename(string const & filename);
   \end{enumerate}
     The third parameter `ext' is optional.
 */
-string LibFileSearch(string const & dir, string const & name, 
+string const LibFileSearch(string const & dir, string const & name,
                     string const & ext = string());
 
 /** Same as LibFileSearch(), but tries first to find an
   internationalized version of the file by prepending $LANG_ to the
-  name 
+  name
   */
-string i18nLibFileSearch(string const & dir, string const & name, 
-                        string const & ext = string());
-
-///
-string GetEnv(string const & envname);
+string const
+i18nLibFileSearch(string const & dir, string const & name,
+                 string const & ext = string());
 
-/// A helper function.
-string GetEnvPath(string const & name);
+/** Takes a command such as "sh $$s/convertDefault.sh file.in file.out"
+ *  and replaces "$$s/" with the path to the "most important" of LyX's
+ *  script directories containing this script. If the script is not found,
+ *  "$$s/" is removed. Executing the command will still fail, but the
+ *  error message will make some sort of sense ;-)
+ */
+string const LibScriptSearch(string const & command);
 
 ///
-bool PutEnv(string const & envstr);
+string const GetEnv(string const & envname);
 
-///
-bool PutEnvPath(string const & envstr);
+/// A helper function.
+string const GetEnvPath(string const & name);
 
 /// Substitutes active latex characters with underscores in filename
-string MakeLatexName(string const & file);
+string const MakeLatexName(string const & file);
 
 /// Put the name in quotes suitable for the current shell
-string QuoteName(string const & file);
-
-/** Returns an unique name to be used as a temporary file. If given,
-  'mask' should the prefix to the temporary file, the rest of the
-  temporary filename will be made from the pid and three letters.
-  */
-string TmpFileName(string const & dir = string(), 
-                  string const & mask = "lyx_tmp");
-
-/// Is a filename/path absolute?
-bool AbsolutePath(string const & path);
+string const QuoteName(string const & file);
 
 /// Add a filename to a path. Any path from filename is stripped first.
-string AddName(string const & path, string const & fname);
+string const AddName(string const & path, string const & fname);
 
 /// Append sub-directory(ies) to path in an intelligent way
-string AddPath(string const & path, string const & path2);
+string const AddPath(string const & path, string const & path2);
 
 /** Change extension of oldname to extension.
  If oldname does not have an extension, it is appended.
  If the extension is empty, any extension is removed from the name.
  */
-string ChangeExtension(string const & oldname, string const & extension);
+string const
+ChangeExtension(string const & oldname, string const & extension);
 
-/// Create absolute path. If impossible, don't do anything
-string ExpandPath(string const & path);
+/// Return the extension of the file (not including the .)
+string const GetExtension(string const & name);
 
-/// gets current working directory
-string GetCWD();
+/// Return the type of the file as an extension from contents
+string const getExtFromContents(string const & name);
 
+/// check for zipped file
+bool zippedFile(string const & name);
+
+/// \return the name that LyX will give to the unzipped file.
+string const unzippedFileName(string const & zipped_file);
+
+/// unzip a file
+string const unzipFile(string const & zipped_file);
+
+/// Returns true is path is absolute
+bool AbsolutePath(string const & path);
+
+/// Create absolute path. If impossible, don't do anything
+string const ExpandPath(string const & path);
 
 /** Convert relative path into absolute path based on a basepath.
   If relpath is absolute, just use that.
   If basepath doesn't exist use CWD.
   */
-string MakeAbsPath(string const & RelPath = string(), 
-                  string const & BasePath = string());
+string const MakeAbsPath(string const & RelPath = string(),
+                        string const & BasePath = string());
 
 /** Creates a nice compact path for displaying. The parameter
   threshold, if given, specifies the maximal length of the path.
   */
-string MakeDisplayPath(string const & path, unsigned int threshold= 1000);
+string const
+MakeDisplayPath(string const & path, unsigned int threshold = 1000);
 
 /** Makes relative path out of absolute path.
   If it is deeper than basepath,
@@ -162,35 +174,58 @@ string MakeDisplayPath(string const & path, unsigned int threshold= 1000);
   different, then the absolute path will be used as relative path
   WARNING: the absolute path and base path must really be absolute paths!!!
   */
-string MakeRelPath(string const & abspath, string const & basepath);
+string const
+MakeRelPath(string const & abspath, string const & basepath);
 
 /// Strip filename from path name
-string OnlyPath(string const & fname);
+string const OnlyPath(string const & fname);
 
-/// Normalize a path. Constracts path/../path
-string NormalizePath(string const & path);
+/** Normalize a path. Constracts path/../path
+ *  Also converts paths like /foo//bar ==> /foo/bar
+ */
+string const NormalizePath(string const & path);
 
 /// Strips path from filename
-string OnlyFilename(string const & fname);
+string const OnlyFilename(string const & fname);
 
 /// Get the contents of a file as a huge string
-string GetFileContents(string const & fname);
-
-/// Cleanup a path if necessary. Currently only useful with OS/2
-string CleanupPath(string const & path) ;
+string const GetFileContents(string const & fname);
 
 /** Check and Replace Environmentvariables ${NAME} in Path.
     Replaces all occurences of these, if they are found in the
     environment.
     Variables are defined by Var := '${' [a-zA-Z_][a-zA-Z_0-9]* '}'
 */
-string ReplaceEnvironmentPath(string const & path);
+string const ReplaceEnvironmentPath(string const & path);
 
-/* Set Link to the path file points to as a symbolic link.
+/* Set \c link to the path \c file points to as a symbolic link.
+   If \c resolve is true, then \c link is an absolute path
    Returns true if successful */
-bool LyXReadLink(string const & file, string & Link);
+bool LyXReadLink(string const & file, string & link, bool resolve = false);
+
+/// Uses kpsewhich to find tex files
+string const findtexfile(string const & fil, string const & format);
+
+/// remove the autosave-file and give a Message if it can't be done
+void removeAutosaveFile(string const & filename);
+
+/// read the BoundingBox entry from a ps/eps/pdf-file
+string const readBB_from_PSFile(string const & file);
+
+/** \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,
+ *           0 if their timestamps are the same,
+ *          -1 if \c file2 has a more recent timestamp than \c file1.
+ *  If one of the files does not exist, the return value indicates the file
+ *  which does exist. Eg, if \c file1 exists but \c file2 does not, return 1.
+ */
+int compare_timestamps(string const & file1, string const & file2);
+
+typedef std::pair<int, string> cmd_ret;
+
+cmd_ret const RunCommand(string const & cmd);
 
-/* Uses kpsewhich to find tex files */
-string findtexfile(string const & fil, string const & format);
+} // namespace support
+} // namespace lyx
 
 #endif