1 /** 2 * Copyright Mikael H�gdahl - triyana@users.sourceforge.net 3 * 4 * This source is distributed under the terms of the Q Public License version 1.0, 5 * created by Trolltech (www.trolltech.com). 6 */ 7 8 #ifndef MHFile_h 9 #define MHFile_h 10 11 #include "MH.h" 12 #include "MHString.h" 13 14 class MHVector; 15 16 17 18 /** 19 * File wrapper object 20 */ 21 class MHFile : public MH { 22 public: 23 MHString aName; 24 MHString aPath; 25 MHString aFullName; 26 int aSize; 27 int aType; 28 int aOwner; 29 int aGroup; 30 int aDate; 31 bool aMode[9]; 32 33 enum { 34 IS_DIR = 1, 35 IS_FILE = 2, 36 IS_LINK = 4, 37 IS_CHAR = 8, 38 IS_BLOCK = 16, 39 IS_SOCK = 32, 40 IS_FIFO = 64, 41 IS_OTHER = 128, 42 IS_NONE = 256, 43 ALL = 512, 44 SORT_NAME = 0, 45 SORT_TYPE, 46 }; 47 MHFile()48 MHFile () {Set(0, 0);} 49 MHFile (const char* fileName, const char* dir = ".") {Set(fileName, dir);} ~MHFile()50 ~MHFile () {;} 51 Compare(const MH * o,int type)52 int Compare (const MH* o, int type) {if (type == SORT_TYPE) return compareType((MHFile*)o); else return compareName((MHFile*)o);} 53 bool Delete (); Exist()54 bool Exist () {return aType != IS_NONE;} 55 const char* FullName (); GetFullName()56 const char* GetFullName () {return aFullName();} IsDir()57 bool IsDir () {return aType == IS_DIR;} IsFile()58 bool IsFile () {return aType == IS_FILE;} Rename(MHFile * newFile)59 bool Rename (MHFile* newFile) {return MHFile::Rename (aFullName(), newFile->aFullName());} Size()60 int Size () {return aSize;} 61 void Set (const char* fileName, const char* dir); Set(MHFile * file)62 void Set (MHFile* file) {Set(file->aName(), file->aPath());} 63 void Touch (); 64 65 static bool Copy (const char* from, const char* to); 66 static int CountRows (const char* fileName); Delete(const char * fileName)67 static bool Delete (const char* fileName) {MHFile f(fileName, ""); return f.Delete ();} Exist(const char * fileName)68 static bool Exist (const char* fileName) {MHFile f(fileName, ""); return f.Exist ();} 69 static int Glob (const char* dirName, const char* pattern, int type, MHVector* out); IsDir(const char * fileName)70 static bool IsDir (const char* fileName) {MHFile f(fileName, ""); return f.IsDir ();} IsFile(const char * fileName)71 static bool IsFile (const char* fileName) {MHFile f(fileName, ""); return f.IsFile ();} Size(const char * fileName)72 static int Size (const char* fileName) {MHFile f(fileName, ""); return f.aSize;} 73 static char* Read (const char* fileName, int& size); 74 static bool Rename (const char* from, const char* to); 75 static void Write (const char* fileName, const char* buffer, int size, bool compress); 76 77 private: 78 static int aaInitCompress; 79 compareName(MHFile * file)80 int compareName (MHFile* file) {return strcmp(aName(), file->aName.Get());} compareType(MHFile * file)81 int compareType (MHFile* file) {return (aType == file->aType) ? 0 : ((aType < file->aType) ? -1 : 1);} 82 }; 83 84 #endif 85 86