]> git.lyx.org Git - lyx.git/blobdiff - src/support/filetools.h
use more explicit on constructors use the pimpl idom to reduce size with about 500k
[lyx.git] / src / support / filetools.h
index 84ec94a9e30aa9c1ebf60fea033e668c2d789d5e..ca549b518c27617133589dfd166ab0726b861da4 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}
@@ -208,8 +108,11 @@ bool PutEnv(string const & envstr);
 ///
 bool PutEnvPath(string const & envstr);
 
-/// Substitutes spaces with underscores in filename (and path)
-string SpaceLess(string const & file);
+/// Substitutes active latex characters with underscores in filename
+string 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