-// -*- C++-*-
-/* lyx-filetool.h : tools functions for file/path handling
- this file is part of LyX, the High Level Word Processor
- Copyright 1995-2001, 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 <vector>
-#include "LString.h"
+#include <utility>
+#include "support/std_string.h"
-///
-string const 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 const 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.
If path entry begins with $$User/, use user_lyxdir.
Example: "$$User/doc;$$LyX/doc".
*/
-string const 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
i18nLibFileSearch(string const & dir, string const & name,
string const & ext = string());
+/** 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);
+
///
string const GetEnv(string const & envname);
/// A helper function.
string const GetEnvPath(string const & name);
-///
-bool PutEnv(string const & envstr);
-
-///
-bool PutEnvPath(string const & envstr);
-
/// Substitutes active latex characters with underscores in filename
string const MakeLatexName(string const & file);
/// 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);
threshold, if given, specifies the maximal length of the path.
*/
string const
-MakeDisplayPath(string const & path,
- unsigned int threshold = 1000);
+MakeDisplayPath(string const & path, unsigned int threshold = 1000);
/** Makes relative path out of absolute path.
If it is deeper than basepath,
/// Strip filename from path name
string const OnlyPath(string const & fname);
-/// Normalize a path. Constracts path/../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 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);
+
+} // namespace support
+} // namespace lyx
#endif