]> git.lyx.org Git - lyx.git/blobdiff - src/support/filetools.h
Fix the line-delete-forward bug?
[lyx.git] / src / support / filetools.h
index 72752f1a15ac00bb8d970b10395eaefcac19b2c2..2686897258c5b0dbf2f033b1ed5cf07d76cdb9bb 100644 (file)
@@ -1,7 +1,7 @@
 // -*- C++-*-
 /* lyx-filetool.h : tools functions for file/path handling
    this file is part of LyX, the High Level Word Processor
-   Copyright 1995-1999, Matthias Ettrich and the LyX Team
+   Copyright 1995-2000, Matthias Ettrich and the LyX Team
 */
 
 #ifndef LYX_FILETOOL_H
 #pragma interface
 #endif
 
-#include <cstdio>
 #include <cstdlib>
 #include <fcntl.h>
 #include <cerrno>
+
 #include "debug.h"
 #include "LString.h"
 #include "support/lstrings.h"
 
-/** A file class.
-  Use this instead of FILE *, it gives a much better structure.
-  It should prehaps do a bit more error checking than it does now.
-  Currently it is a verbatim copy from p309 of Bjarne Stroupstrups
-  The C++ Programming Language. + some additions.
- */
-class FilePtr {
-public:
-       ///
-       enum file_mode {
-               read,
-               write,
-               update,
-               truncate
-       };
-       ///
-       FilePtr(string const & name, file_mode mode) {
-               init();
-               do_open(name, mode);
-       }
-       ///
-       FilePtr(FILE * pp) { init(); p = pp; }
-       ///
-       ~FilePtr() { close(); }
-
-       /** Use this if you want to rebind the FilePtr to another file.
-        */
-       FilePtr & reopen(string const & name, file_mode mode) {
-               // close the file it it is already open
-               close();
-               // Now open the file.
-               do_open(name, mode);
-
-               return *this;
-       }
-       /** Close the file.
-           Use this with some carefullness. After it has been used
-           the FilePtr is unusable. Only use it if it is important
-           that the file is closed before the FilePtr goes out
-           of scope. */
-       int close() { 
-               if (p) {
-                       int result = fclose(p); 
-                       p = 0; 
-                       return result;
-               } else 
-                       return 0;
-       }
-       /// automatic converson to FILE* if that is needed.
-       operator FILE*() { return p; }
-       ///
-       FilePtr & operator=(FILE * f) { p= f; return *this;}
-       ///
-       FILE * operator()() { return p; }
-private:
-       ///
-       void do_open(string const & name, file_mode mode) {
-               string modestr;
-               
-               switch(mode) {
-                       // do appropiate #ifdef here so support EMX
-#ifndef __EMX__
-               case read: modestr = "r"; break;
-               case write: modestr = "w"; break;
-#else
-               case read: modestr = "rt"; break; // Can read both DOS & UNIX text files.
-               case write: modestr = "w"; break; // Write UNIX text files.
-#endif
-                       
-               case update: modestr = "r+"; break;
-               case truncate: modestr = "w+"; break;
-               }
-               // Should probably be rewritten to use open(2)
-               if((p = fopen(name.c_str(), modestr.c_str()))) {
-                       // file succesfully opened.
-                       if (fcntl(fileno(p), F_SETFD, FD_CLOEXEC) == -1) {
-                               p = 0;
-                       }
-               } else {
-                       // we have an error let's check what it is.
-                       switch(errno) {
-                       case EINVAL:
-                               // Internal LyX error.
-                               lyxerr << "FilePtr: Wrong parameter given to fopen." << endl;
-                               break;
-                       default:
-                               // unknown error
-                               break;
-                       }
-               }
-       }
-       ///
-       void init() { p = 0; }
-       ///
-       FILE * p;
-};
-
 
 ///
 string CreateBufferTmpDir (string const & pathfor = string());
@@ -174,9 +77,6 @@ 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}
@@ -231,12 +131,10 @@ string AddName(string const & path, string const & fname);
 string AddPath(string const & path, string const & path2);
 
 /** Change extension of oldname to extension.
- If no_path is true, the path is stripped from the filename.
  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, 
-                      bool no_path);
+string ChangeExtension(string const & oldname, string const & extension);
 
 /// Create absolute path. If impossible, don't do anything
 string ExpandPath(string const & path);
@@ -285,8 +183,8 @@ string CleanupPath(string const & path) ;
 */
 string ReplaceEnvironmentPath(string const & path);
 
-/* Set Link to the path File Points to as a symbolic link.
-   Return True if succesfull, False other wise */
+/* Set Link to the path file points to as a symbolic link.
+   Returns true if successful */
 bool LyXReadLink(string const & file, string & Link);
 
 /* Uses kpsewhich to find tex files */