]> www.fi.muni.cz Git - evince.git/blobdiff - pdf/goo/gfile.h
file cursor-hand-open.png was initially added on branch gpdf-modes.
[evince.git] / pdf / goo / gfile.h
index f1923cde537f17128e22c70c7f6fbec39515dfd5..d364d8d44f82d2c0781a990db77ebd715ff8538d 100644 (file)
@@ -4,17 +4,27 @@
 //
 // Miscellaneous file and directory name manipulation.
 //
-// Copyright 1996 Derek B. Noonburg
+// Copyright 1996-2003 Glyph & Cog, LLC
 //
 //========================================================================
 
 #ifndef GFILE_H
 #define GFILE_H
 
+#include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
-#ifdef WIN32
-#  include <kpathsea/win32lib.h>
+extern "C" {
+#if defined(WIN32)
+#  include <sys/stat.h>
+#  ifdef FPTEX
+#    include <win32lib.h>
+#  else
+#    include <windows.h>
+#  endif
+#elif defined(ACORN)
+#elif defined(MACOS)
+#  include <ctime.h>
 #else
 #  include <unistd.h>
 #  include <sys/types.h>
 #    include "vms_dirent.h"
 #  elif HAVE_DIRENT_H
 #    include <dirent.h>
-#    define NAMLEN(dirent) strlen((dirent)->d_name)
+#    define NAMLEN(d) strlen((d)->d_name)
 #  else
 #    define dirent direct
-#    define NAMLEN(dirent) (dirent)->d_namlen
+#    define NAMLEN(d) (d)->d_namlen
 #    if HAVE_SYS_NDIR_H
 #      include <sys/ndir.h>
 #    endif
@@ -37,6 +47,7 @@
 #    endif
 #  endif
 #endif
+}
 #include "gtypes.h"
 
 class GString;
@@ -62,7 +73,26 @@ extern GBool isAbsolutePath(char *path);
 
 // Make this path absolute by prepending current directory (if path is
 // relative) or prepending user's directory (if path starts with '~').
-GString *makePathAbsolute(GString *path);
+extern GString *makePathAbsolute(GString *path);
+
+// Get the modification time for <fileName>.  Returns 0 if there is an
+// error.
+extern time_t getModTime(char *fileName);
+
+// Create a temporary file and open it for writing.  If <ext> is not
+// NULL, it will be used as the file name extension.  Returns both the
+// name and the file pointer.  For security reasons, all writing
+// should be done to the returned file pointer; the file may be
+// reopened later for reading, but not for writing.  The <mode> string
+// should be "w" or "wb".  Returns true on success.
+extern GBool openTempFile(GString **name, FILE **f, char *mode, char *ext);
+
+// Execute <command>.  Returns true on success.
+extern GBool executeCommand(char *cmd);
+
+// Just like fgets, but handles Unix, Mac, and/or DOS end-of-line
+// conventions.
+extern char *getLine(char *buf, int size, FILE *f);
 
 //------------------------------------------------------------------------
 // GDir and GDirEntry
@@ -71,7 +101,7 @@ GString *makePathAbsolute(GString *path);
 class GDirEntry {
 public:
 
-  GDirEntry(char *dirPath, char *name1, GBool doStat);
+  GDirEntry(char *dirPath, char *nameA, GBool doStat);
   ~GDirEntry();
   GString *getName() { return name; }
   GBool isDir() { return dir; }
@@ -85,7 +115,7 @@ private:
 class GDir {
 public:
 
-  GDir(char *name, GBool doStat1 = gTrue);
+  GDir(char *name, GBool doStatA = gTrue);
   ~GDir();
   GDirEntry *getNextEntry();
   void rewind();
@@ -94,14 +124,16 @@ private:
 
   GString *path;               // directory path
   GBool doStat;                        // call stat() for each entry?
-#ifdef VMS
-  GBool needParent;            // need to return an entry for [-]
-#endif
-#ifdef WIN32
+#if defined(WIN32)
   WIN32_FIND_DATA ffd;
   HANDLE hnd;
+#elif defined(ACORN)
+#elif defined(MACOS)
 #else
   DIR *dir;                    // the DIR structure from opendir()
+#ifdef VMS
+  GBool needParent;            // need to return an entry for [-]
+#endif
 #endif
 };