]> git.saurik.com Git - wxWidgets.git/blob - include/wx/filefn.h
distribution things
[wxWidgets.git] / include / wx / filefn.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: filefn.h
3 // Purpose: File- and directory-related functions
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 29/01/98
7 // RCS-ID: $Id$
8 // Copyright: (c) 1998 Julian Smart
9 // Licence: wxWindows license
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _FILEFN_H_
13 #define _FILEFN_H_
14
15 #ifdef __GNUG__
16 #pragma interface "filefn.h"
17 #endif
18
19 #include <wx/list.h>
20
21 // ----------------------------------------------------------------------------
22 // constants
23 // ----------------------------------------------------------------------------
24
25 // define off_t
26 #ifndef __WXMAC__
27 #include <sys/types.h>
28 #else
29 typedef long off_t;
30 #endif
31
32 #if defined(__VISUALC__) || defined(__MWERKS__)
33 typedef _off_t off_t;
34 #elif defined(__BORLANDC__) && defined(__WIN16__)
35 typedef long off_t;
36 #elif defined(__SC__)
37 typedef long off_t;
38 #endif
39
40 const off_t wxInvalidOffset = (off_t)-1;
41
42 enum wxSeekMode
43 {
44 wxFromStart,
45 wxFromCurrent,
46 wxFromEnd
47 };
48
49 WXDLLEXPORT_DATA(extern const char*) wxEmptyString;
50
51 // ----------------------------------------------------------------------------
52 // functions
53 // ----------------------------------------------------------------------------
54 WXDLLEXPORT bool wxFileExists(const wxString& filename);
55 #define FileExists wxFileExists
56
57 // does the path exist? (may have or not '/' or '\\' at the end)
58 WXDLLEXPORT bool wxPathExists(const char *pszPathName);
59
60 #define wxDirExists wxPathExists
61 #define DirExists wxDirExists
62
63 WXDLLEXPORT bool wxIsAbsolutePath(const wxString& filename);
64 #define IsAbsolutePath wxIsAbsolutePath
65
66 // Get filename
67 WXDLLEXPORT char* wxFileNameFromPath(char *path);
68 WXDLLEXPORT wxString wxFileNameFromPath(const wxString& path);
69 #define FileNameFromPath wxFileNameFromPath
70
71 // Get directory
72 WXDLLEXPORT wxString wxPathOnly(const wxString& path);
73 #define PathOnly wxPathOnly
74
75 // wxString version
76 WXDLLEXPORT wxString wxRealPath(const wxString& path);
77
78 WXDLLEXPORT void wxDos2UnixFilename(char *s);
79 #define Dos2UnixFilename wxDos2UnixFilename
80
81 WXDLLEXPORT void wxUnix2DosFilename(char *s);
82 #define Unix2DosFilename wxUnix2DosFilename
83
84 #ifdef __WXMAC__
85 WXDLLEXPORT void wxMacPathToFSSpec( const char *path , FSSpec *spec ) ;
86 WXDLLEXPORT void wxMac2UnixFilename(char *s);
87 WXDLLEXPORT void wxUnix2MacFilename(char *s);
88 #endif
89
90 // Strip the extension, in situ
91 WXDLLEXPORT void wxStripExtension(char *buffer);
92 WXDLLEXPORT void wxStripExtension(wxString& buffer);
93
94 // Get a temporary filename, opening and closing the file.
95 WXDLLEXPORT char* wxGetTempFileName(const wxString& prefix, char *buf = (char *) NULL);
96
97 // Expand file name (~/ and ${OPENWINHOME}/ stuff)
98 WXDLLEXPORT char* wxExpandPath(char *dest, const char *path);
99
100 // Contract w.r.t environment (</usr/openwin/lib, OPENWHOME> -> ${OPENWINHOME}/lib)
101 // and make (if under the home tree) relative to home
102 // [caller must copy-- volatile]
103 WXDLLEXPORT char* wxContractPath(const wxString& filename,
104 const wxString& envname = wxEmptyString,
105 const wxString& user = wxEmptyString);
106
107 // Destructive removal of /./ and /../ stuff
108 WXDLLEXPORT char* wxRealPath(char *path);
109
110 // Allocate a copy of the full absolute path
111 WXDLLEXPORT char* wxCopyAbsolutePath(const wxString& path);
112
113 // Get first file name matching given wild card.
114 // Flags are reserved for future use.
115 #define wxFILE 1
116 #define wxDIR 2
117 WXDLLEXPORT wxString wxFindFirstFile(const char *spec, int flags = wxFILE);
118 WXDLLEXPORT wxString wxFindNextFile();
119
120 // Does the pattern contain wildcards?
121 WXDLLEXPORT bool wxIsWild(const wxString& pattern);
122
123 // Does the pattern match the text (usually a filename)?
124 // If dot_special is TRUE, doesn't match * against . (eliminating
125 // `hidden' dot files)
126 WXDLLEXPORT bool wxMatchWild(const wxString& pattern, const wxString& text, bool dot_special = TRUE);
127
128 // Concatenate two files to form third
129 WXDLLEXPORT bool wxConcatFiles(const wxString& file1, const wxString& file2, const wxString& file3);
130
131 // Copy file1 to file2
132 WXDLLEXPORT bool wxCopyFile(const wxString& file1, const wxString& file2);
133
134 // Remove file
135 WXDLLEXPORT bool wxRemoveFile(const wxString& file);
136
137 // Rename file
138 WXDLLEXPORT bool wxRenameFile(const wxString& file1, const wxString& file2);
139
140 // Get current working directory.
141 // If buf is NULL, allocates space using new, else
142 // copies into buf.
143 // IMPORTANT NOTE getcwd is know not to work under some releases
144 // of Win32s 1.3, according to MS release notes!
145 WXDLLEXPORT char* wxGetWorkingDirectory(char *buf = (char *) NULL, int sz = 1000);
146 // new and preferred version of wxGetWorkingDirectory
147 // NB: can't have the same name because of overloading ambiguity
148 WXDLLEXPORT wxString wxGetCwd();
149
150 // Set working directory
151 WXDLLEXPORT bool wxSetWorkingDirectory(const wxString& d);
152
153 // Make directory
154 WXDLLEXPORT bool wxMkdir(const wxString& dir);
155
156 // Remove directory. Flags reserved for future use.
157 WXDLLEXPORT bool wxRmdir(const wxString& dir, int flags = 0);
158
159 // separators in file names
160 #define wxFILE_SEP_EXT '.'
161 #define wxFILE_SEP_DSK ':'
162 #define wxFILE_SEP_PATH_DOS '\\'
163 #define wxFILE_SEP_PATH_UNIX '/'
164
165 // separator in the path list (as in PATH environment variable)
166 // NB: these are strings and not characters on purpose!
167 #define wxPATH_SEP_DOS ";"
168 #define wxPATH_SEP_UNIX ":"
169
170 // platform independent versions
171 #ifdef __UNIX__
172 #define wxFILE_SEP_PATH wxFILE_SEP_PATH_UNIX
173 #define wxPATH_SEP wxPATH_SEP_UNIX
174 #else // Windows
175 #define wxFILE_SEP_PATH wxFILE_SEP_PATH_DOS
176 #define wxPATH_SEP wxPATH_SEP_DOS
177 #endif // Unix/Windows
178
179 // this is useful for wxString::IsSameAs(): to compare two file names use
180 // filename1.IsSameAs(filename2, wxARE_FILENAMES_CASE_SENSITIVE)
181 #ifdef __UNIX__
182 #define wxARE_FILENAMES_CASE_SENSITIVE TRUE
183 #else // Windows
184 #define wxARE_FILENAMES_CASE_SENSITIVE FALSE
185 #endif // Unix/Windows
186
187 // is the char a path separator?
188 inline bool wxIsPathSeparator(char c)
189 { return c == wxFILE_SEP_PATH_DOS || c == wxFILE_SEP_PATH_UNIX; }
190
191 // does the string ends with path separator?
192 WXDLLEXPORT bool wxEndsWithPathSeparator(const char *pszFileName);
193
194 // split the full path into path (including drive for DOS), name and extension
195 // (understands both '/' and '\\')
196 WXDLLEXPORT void wxSplitPath(const char *pszFileName,
197 wxString *pstrPath,
198 wxString *pstrName,
199 wxString *pstrExt);
200
201 // find a file in a list of directories, returns false if not found
202 WXDLLEXPORT bool wxFindFileInPath(wxString *pStr, const char *pszPath, const char *pszFile);
203
204 // Get the OS directory if appropriate (such as the Windows directory).
205 // On non-Windows platform, probably just return the empty string.
206 WXDLLEXPORT wxString wxGetOSDirectory();
207
208 // ----------------------------------------------------------------------------
209 // classes
210 // ----------------------------------------------------------------------------
211
212 // Path searching
213 class WXDLLEXPORT wxPathList : public wxStringList
214 {
215 public:
216 // Adds all paths in environment variable
217 void AddEnvList(const wxString& envVariable);
218
219 void Add(const wxString& path);
220 // Avoid compiler warning
221 wxNode *Add(const char *s) { return wxStringList::Add(s); }
222 // Find the first full path for which the file exists
223 wxString FindValidPath(const wxString& filename);
224 // Find the first full path for which the file exists; ensure it's an
225 // absolute path that gets returned.
226 wxString FindAbsoluteValidPath(const wxString& filename);
227 // Given full path and filename, add path to list
228 void EnsureFileAccessible(const wxString& path);
229 // Returns TRUE if the path is in the list
230 bool Member(const wxString& path);
231
232 private:
233 DECLARE_DYNAMIC_CLASS(wxPathList)
234 };
235
236 #endif
237 // _WX_FILEFN_H_
238