OpenClonk
StdFile.h
Go to the documentation of this file.
1 /*
2  * OpenClonk, http://www.openclonk.org
3  *
4  * Copyright (c) 1998-2000, Matthes Bender
5  * Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/
6  * Copyright (c) 2009-2016, The OpenClonk Team and contributors
7  *
8  * Distributed under the terms of the ISC license; see accompanying file
9  * "COPYING" for details.
10  *
11  * "Clonk" is a registered trademark of Matthes Bender, used with permission.
12  * See accompanying file "TRADEMARK" for details.
13  *
14  * To redistribute this file separately, substitute the full license texts
15  * for the above references.
16  */
17 
18 /* Lots of file helpers */
19 
20 #ifndef STDFILE_INCLUDED
21 #define STDFILE_INCLUDED
22 
27 bool CreatePath(const std::string &path);
28 
29 const char *GetWorkingDirectory();
30 bool SetWorkingDirectory(const char *szPath);
31 char *GetFilename(char *path);
32 char *GetFilenameWeb(char *path);
33 const char* GetFilenameOnly(const char *strFilename);
34 const char *GetC4Filename(const char *szPath); // returns path to file starting at first .c4*-directory
35 int GetTrailingNumber(const char *strString);
36 char *GetExtension(char *fname);
37 const char *GetFilename(const char *path);
38 const char *GetFilenameWeb(const char *path);
39 const char *GetExtension(const char *fname);
40 void DefaultExtension(char *szFileName, const char *szExtension);
41 void DefaultExtension(StdStrBuf *sFilename, const char *szExtension);
42 void EnforceExtension(char *szFileName, const char *szExtension);
43 void EnforceExtension(StdStrBuf *sFilename, const char *szExtension);
44 void RemoveExtension(char *szFileName);
45 void RemoveExtension(StdStrBuf *psFileName);
46 void AppendBackslash(char *szFileName);
47 void TruncateBackslash(char *szFilename);
48 void MakeTempFilename(char *szFileName);
49 void MakeTempFilename(StdStrBuf *sFileName);
50 bool WildcardListMatch(const char *szWildcardList, const char *szString); // match string in list like *.png|*.bmp
51 bool IsWildcardString(const char *szString); // does szString contain wildcard characters?
52 bool WildcardMatch(const char *szWildcard, const char *szString);
53 bool TruncatePath(char *szPath);
54 // szBuffer has to be of at least _MAX_PATH length.
55 bool GetParentPath(const char *szFilename, char *szBuffer);
56 bool GetParentPath(const char *szFilename, StdStrBuf *outBuf);
57 const char *GetRelativePathS(const char *strPath, const char *strRelativeTo);
58 bool IsGlobalPath(const char *szPath);
59 
60 bool DirectoryExists(const char *szFileName);
61 bool FileExists(const char *szFileName);
62 size_t FileSize(const char *fname);
63 size_t FileSize(int fdes);
64 int FileTime(const char *fname);
65 bool EraseFile(const char *szFileName);
66 bool RenameFile(const char *szFileName, const char *szNewFileName);
67 bool MakeOriginalFilename(char *szFilename);
68 void MakeFilenameFromTitle(char *szTitle);
69 
70 bool CopyDirectory(const char *szSource, const char *szTarget, bool fResetAttributes=false);
71 bool EraseDirectory(const char *szDirName);
72 
73 int ItemAttributes(const char *szItemName);
74 bool ItemIdentical(const char *szFilename1, const char *szFilename2);
75 inline bool ItemExists(const char *szItemName) { return FileExists(szItemName); }
76 bool RenameItem(const char *szItemName, const char *szNewItemName);
77 bool EraseItem(const char *szItemName);
78 bool CopyItem(const char *szSource, const char *szTarget, bool fResetAttributes=false);
79 bool CreateItem(const char *szItemname);
80 bool MoveItem(const char *szSource, const char *szTarget);
81 
82 int ForEachFile(const char *szDirName, bool (*fnCallback)(const char *));
83 
84 struct DirectoryIteratorP;
86 {
87  // Shallow copyable, ordered directory iterator
88 public:
89  DirectoryIterator(const char * dirname);
94 
95  const char * operator * () const;
96  const char *GetName() const { return **this; }
97  size_t GetFileSize() const;
98 
101  void Clear(); // put iterator into empty state and clear any cached directory listing
102  void Reset(const char * dirname, bool force_reread=false); // reset iterator to front of file list. re-read directory if it changed or force_reread is set.
103  void Reset(); // reset iterator to front of file list without re-reading directory
104 private:
105  void Read(const char *dirname);
106  friend struct DirectoryIteratorP;
107  typedef std::vector<std::pair<std::string, size_t>> FileList;
109  FileList::iterator iter;
110 };
111 
112 #endif // STDFILE_INCLUDED
bool EraseItem(const char *szItemName)
Definition: StdFile.cpp:833
int FileTime(const char *fname)
void EnforceExtension(char *szFileName, const char *szExtension)
Definition: StdFile.cpp:286
bool CreateItem(const char *szItemname)
Definition: StdFile.cpp:839
bool FileExists(const char *szFileName)
const char * GetC4Filename(const char *szPath)
Definition: StdFile.cpp:68
const char * GetRelativePathS(const char *strPath, const char *strRelativeTo)
Definition: StdFile.cpp:208
bool TruncatePath(char *szPath)
Definition: StdFile.cpp:237
char * GetFilenameWeb(char *path)
Definition: StdFile.cpp:101
bool GetParentPath(const char *szFilename, char *szBuffer)
Definition: StdFile.cpp:186
void RemoveExtension(char *szFileName)
Definition: StdFile.cpp:303
bool WildcardMatch(const char *szWildcard, const char *szString)
Definition: StdFile.cpp:396
const char * GetFilenameOnly(const char *strFilename)
Definition: StdFile.cpp:57
void MakeTempFilename(char *szFileName)
Definition: StdFile.cpp:320
bool EraseDirectory(const char *szDirName)
Definition: StdFile.cpp:785
bool ItemIdentical(const char *szFilename1, const char *szFilename2)
Definition: StdFile.cpp:879
void MakeFilenameFromTitle(char *szTitle)
Definition: StdFile.cpp:426
bool ItemExists(const char *szItemName)
Definition: StdFile.h:75
bool IsGlobalPath(const char *szPath)
Definition: StdFile.cpp:224
bool WildcardListMatch(const char *szWildcardList, const char *szString)
Definition: StdFile.cpp:348
bool EraseFile(const char *szFileName)
char * GetExtension(char *fname)
Definition: StdFile.cpp:118
bool RenameItem(const char *szItemName, const char *szNewItemName)
Definition: StdFile.cpp:827
bool CreatePath(const std::string &path)
Definition: StdFile.cpp:656
bool DirectoryExists(const char *szFileName)
Definition: StdFile.cpp:708
bool MoveItem(const char *szSource, const char *szTarget)
Definition: StdFile.cpp:873
void AppendBackslash(char *szFileName)
Definition: StdFile.cpp:254
char * GetFilename(char *path)
Definition: StdFile.cpp:42
bool CopyItem(const char *szSource, const char *szTarget, bool fResetAttributes=false)
Definition: StdFile.cpp:855
size_t FileSize(const char *fname)
bool IsWildcardString(const char *szString)
Definition: StdFile.cpp:363
void TruncateBackslash(char *szFilename)
Definition: StdFile.cpp:263
int ItemAttributes(const char *szItemName)
bool RenameFile(const char *szFileName, const char *szNewFileName)
bool SetWorkingDirectory(const char *szPath)
Definition: StdFile.cpp:647
int ForEachFile(const char *szDirName, bool(*fnCallback)(const char *))
Definition: StdFile.cpp:1068
bool CopyDirectory(const char *szSource, const char *szTarget, bool fResetAttributes=false)
Definition: StdFile.cpp:737
bool MakeOriginalFilename(char *szFilename)
const char * GetWorkingDirectory()
Definition: StdFile.cpp:627
void DefaultExtension(char *szFileName, const char *szExtension)
Definition: StdFile.cpp:271
int GetTrailingNumber(const char *strString)
Definition: StdFile.cpp:84
size_t GetFileSize() const
Definition: StdFile.cpp:1059
DirectoryIterator & operator++()
Definition: StdFile.cpp:1039
DirectoryIterator & operator=(const DirectoryIterator &)
Definition: StdFile.cpp:910
const char * GetName() const
Definition: StdFile.h:96
const char * operator*() const
Definition: StdFile.cpp:1046