X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fsupport%2Ffiletools.h;h=5177cdddee81ade1ced639a892c1225d36c5a6cb;hb=5608f6fdb67b86b4cf3d9215d24d7734239ad05a;hp=48ebbd6046c5c174034b408cecdd415b7f95ab35;hpb=e5cc5ac2e82f6dd1939b35b138489d1a1e3d3bae;p=lyx.git diff --git a/src/support/filetools.h b/src/support/filetools.h index 48ebbd6046..5177cdddee 100644 --- a/src/support/filetools.h +++ b/src/support/filetools.h @@ -50,7 +50,12 @@ enum search_mode { must_exist, /// Only do file name expansion, return the complete name even if /// the file does not exist - may_not_exist + may_not_exist, + /// The (image) file may be present with hi-dpi resolution - + /// the lookup checks for a file named "image" + "@2x" + ".ext" first. + /// If found it will return e.g. "image@2x.png" instead of "image.png". + /// Otherwise it will work as must_exist. + check_hidpi }; /** Returns the real name of file name in directory path, with optional @@ -78,6 +83,9 @@ bool isValidLaTeXFileName(std::string const & filename); */ bool isValidDVIFileName(std::string const & filename); +/// check whether the file has binary contents +bool isBinaryFile(FileName const & filename); + /** Returns the path of a library data file. Search the file name.ext in the subdirectory dir of -# user_lyxdir @@ -87,7 +95,8 @@ bool isValidDVIFileName(std::string const & filename); */ FileName const libFileSearch(std::string const & dir, std::string const & name, - std::string const & ext = std::string()); + std::string const & ext = std::string(), + search_mode mode = must_exist); /** Same as libFileSearch(), but tries first to find an internationalized version of the file by prepending $LANG_ to the @@ -103,13 +112,17 @@ i18nLibFileSearch(std::string const & dir, */ FileName const imageLibFileSearch(std::string & dir, std::string const & name, - std::string const & ext = std::string()); + std::string const & ext = std::string(), + search_mode mode = must_exist); /// How to quote a filename enum quote_style { /** Quote for the (OS dependant) shell. This is needed for command line arguments of subprocesses. */ quote_shell, + /** Quote a file name for the (OS dependant) shell. This is needed + for file names as command line arguments of subprocesses. */ + quote_shell_filename, /** Quote for python. Use this if you want to store a filename in a python script. Example: \code os << "infile = " << quoteName(filename) << '\\n'; @@ -125,8 +138,7 @@ enum quote_style { * command will still fail, but the error message will make some sort of * sense ;-) */ -std::string const libScriptSearch(std::string const & command, - quote_style style = quote_shell); +std::string const commandPrep(std::string const & command); enum latex_path_extension { PROTECT_EXTENSION, @@ -208,9 +220,6 @@ std::string const unzippedFileName(std::string const & zipped_file); FileName const unzipFile(FileName const & zipped_file, std::string const & unzipped_file = std::string()); -/// Create absolute path. If impossible, don't do anything -std::string const expandPath(std::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. @@ -249,9 +258,9 @@ std::string const replaceEnvironmentPath(std::string const & path); /** Return a string to be used as a prefix to a command for setting the - environment of the TeX engine with respect to the path \p path. + environment of the TeX engine with respect to the paths \p path and \p lpath. */ -std::string latexEnvCmdPrefix(std::string const & path); +std::string latexEnvCmdPrefix(std::string const &path, std::string const & lpath); /** Replace all references to a current directory (a lonely '.' or the prefix "./") in \c pathlist with \c path. Also prefixes @@ -275,9 +284,6 @@ bool readLink(FileName const & file, FileName & link); FileName const findtexfile(std::string const & fil, std::string const & format); -/// read the BoundingBox entry from a ps/eps/pdf-file -std::string const readBB_from_PSFile(FileName 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, @@ -291,10 +297,15 @@ int compare_timestamps(FileName const & file1, FileName const & file2); bool prefs2prefs(FileName const & filename, FileName const & tempfile, bool lfuns); +/// Does file \p file need to be updated by configure.py? +bool configFileNeedsUpdate(std::string const & file); + typedef std::pair cmd_ret; cmd_ret const runCommand(std::string const & cmd); +int fileLock(const char * lock_file); +void fileUnlock(int fd, const char * lock_file); } // namespace support } // namespace lyx