"Fossies" - the Fresh Open Source Software Archive 
Member "xpdf-4.04/goo/gfile.h" (18 Apr 2022, 4565 Bytes) of package /linux/misc/xpdf-4.04.tar.gz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "gfile.h" see the
Fossies "Dox" file reference documentation and the latest
Fossies "Diffs" side-by-side code changes report:
4.03_vs_4.04.
1 //========================================================================
2 //
3 // gfile.h
4 //
5 // Miscellaneous file and directory name manipulation.
6 //
7 // Copyright 1996-2003 Glyph & Cog, LLC
8 //
9 //========================================================================
10
11 #ifndef GFILE_H
12 #define GFILE_H
13
14 #include <aconf.h>
15 #include <stdio.h>
16 #include <stdlib.h>
17 #include <stddef.h>
18 #if defined(_WIN32)
19 # include <sys/stat.h>
20 # ifdef FPTEX
21 # include <win32lib.h>
22 # else
23 # include <windows.h>
24 # endif
25 #elif defined(ACORN)
26 #elif defined(ANDROID)
27 #else
28 # include <unistd.h>
29 # include <sys/types.h>
30 #endif
31 #include "gtypes.h"
32
33 // Windows 10 supports long paths - with a registry setting, and only
34 // with Unicode (...W) functions.
35 #ifdef _WIN32
36 # define winMaxLongPath 32767
37 #endif
38
39 class GString;
40
41 //------------------------------------------------------------------------
42
43 // Get home directory path.
44 extern GString *getHomeDir();
45
46 // Get current directory.
47 extern GString *getCurrentDir();
48
49 // Append a file name to a path string. <path> may be an empty
50 // string, denoting the current directory). Returns <path>.
51 extern GString *appendToPath(GString *path, const char *fileName);
52
53 // Grab the path from the front of the file name. If there is no
54 // directory component in <fileName>, returns an empty string.
55 extern GString *grabPath(char *fileName);
56
57 // Is this an absolute path or file name?
58 extern GBool isAbsolutePath(char *path);
59
60 // Make this path absolute by prepending current directory (if path is
61 // relative) or prepending user's directory (if path starts with '~').
62 extern GString *makePathAbsolute(GString *path);
63
64 // Returns true if [path] exists and is a regular file.
65 extern GBool pathIsFile(const char *path);
66
67 // Get the modification time for <fileName>. Returns 0 if there is an
68 // error.
69 extern time_t getModTime(char *fileName);
70
71 // Create a temporary file and open it for writing. If <ext> is not
72 // NULL, it will be used as the file name extension. Returns both the
73 // name and the file pointer. For security reasons, all writing
74 // should be done to the returned file pointer; the file may be
75 // reopened later for reading, but not for writing. The <mode> string
76 // should be "w" or "wb". Returns true on success.
77 extern GBool openTempFile(GString **name, FILE **f,
78 const char *mode, const char *ext);
79
80 // Create a directory. Returns true on success.
81 extern GBool createDir(char *path, int mode);
82
83 // Execute <command>. Returns true on success.
84 extern GBool executeCommand(char *cmd);
85
86 #ifdef _WIN32
87 // Convert a file name from Latin-1 to UTF-8.
88 extern GString *fileNameToUTF8(char *path);
89
90 // Convert a file name from UCS-2 to UTF-8.
91 extern GString *fileNameToUTF8(wchar_t *path);
92
93 // Convert a file name from UTF-8 to UCS-2. [out] has space for
94 // [outSize] wchar_t elements (including the trailing zero). Returns
95 // [out].
96 extern wchar_t *fileNameToUCS2(const char *path, wchar_t *out, size_t outSize);
97 #endif
98
99 // Open a file. On Windows, this converts the path from UTF-8 to
100 // UCS-2 and calls _wfopen(). On other OSes, this simply calls fopen().
101 extern FILE *openFile(const char *path, const char *mode);
102
103 #ifdef _WIN32
104 // If [wPath] is a Windows shortcut (.lnk file), read the target path
105 // and store it back into [wPath].
106 extern void readWindowsShortcut(wchar_t *wPath, size_t wPathSize);
107 #endif
108
109 // Create a directory. On Windows, this converts the path from UTF-8
110 // to UCS-2 and calls _wmkdir(), ignoring the mode argument. On other
111 // OSes, this simply calls mkdir().
112 extern int makeDir(const char *path, int mode);
113
114 // Just like fgets, but handles Unix, Mac, and/or DOS end-of-line
115 // conventions.
116 extern char *getLine(char *buf, int size, FILE *f);
117
118 // Type used by gfseek/gftell for file offsets. This will be 64 bits
119 // on systems that support it.
120 #if HAVE_FSEEKO
121 typedef off_t GFileOffset;
122 #define GFILEOFFSET_MAX 0x7fffffffffffffffLL
123 #elif HAVE_FSEEK64
124 typedef long long GFileOffset;
125 #define GFILEOFFSET_MAX 0x7fffffffffffffffLL
126 #elif HAVE_FSEEKI64
127 typedef __int64 GFileOffset;
128 #define GFILEOFFSET_MAX 0x7fffffffffffffffLL
129 #else
130 typedef long GFileOffset;
131 #define GFILEOFFSET_MAX LONG_MAX
132 #endif
133
134 // Like fseek, but uses a 64-bit file offset if available.
135 extern int gfseek(FILE *f, GFileOffset offset, int whence);
136
137 // Like ftell, but returns a 64-bit file offset if available.
138 extern GFileOffset gftell(FILE *f);
139
140 // On Windows, this gets the Unicode command line and converts it to
141 // UTF-8. On other systems, this is a nop.
142 extern void fixCommandLine(int *argc, char **argv[]);
143
144 #endif