00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #pragma once
00030 #ifndef __CSPATH_H__
00031 #define __CSPATH_H__
00032
00033 #ifdef OS_UNIX
00034 #include <limits.h>
00035 #endif
00036
00037 #include "CSDefs.h"
00038 #include "CSTime.h"
00039 #include "CSDefs.h"
00040 #include "CSString.h"
00041 #include "CSSys.h"
00042
00043 class CSFile;
00044 class CSDirectory;
00045
00046 class CSPath : public CSRefObject, public CSSys {
00047 public:
00048 virtual CSFile *createFile(int mode);
00049
00050 virtual void copyFile(CSPath *to_file, bool overwrite);
00051
00052
00053
00054
00055 virtual void makePath();
00056
00057 virtual void copyDir(CSPath *to_dir, bool overwrite);
00058
00059
00060 virtual bool isLink();
00061
00062
00063 virtual bool isEmpty();
00064
00065
00066 virtual void emptyDir();
00067
00068
00069 virtual void emptyPath();
00070
00071
00072 virtual void copyTo(CSPath *to_path, bool overwrite);
00073
00074 virtual void moveTo(CSPath *to_path);
00075
00076
00077
00078
00079 virtual void remove();
00080
00081
00082 virtual void touch(bool create_path = false);
00083
00084 virtual CSString *getString();
00085
00086 virtual const char *getCString();
00087
00088 virtual const char *getNameCString();
00089
00090
00091
00092 friend class TDPath;
00093
00094 virtual bool exists(bool *is_dir);
00095
00096 virtual bool exists() { return exists(NULL); }
00097
00098 static void info(const char *path, bool *is_dir, off64_t *size, CSTime *mod_time);
00099
00100 virtual void info(bool *is_dir, off64_t *size, CSTime *mod_time);
00101
00102 static off64_t getSize(const char *path);
00103
00104 virtual off64_t getSize();
00105
00106 virtual bool isDir();
00107
00108 virtual CSFile *openFile(int mode);
00109
00110
00111
00112
00113 virtual void removeFile();
00114
00115
00116
00117
00118 virtual void makeDir();
00119
00120 virtual CSDirectory *openDirectory();
00121
00122 virtual void removeDir();
00123
00124 virtual void rename(const char *name);
00125
00126
00127
00128
00129
00130 virtual void move(CSPath *to_path);
00131
00132 CSPath *getCWD();
00133
00134 static CSPath *getSystemCWD();
00135
00136
00137 static CSPath *newPath(const char *path);
00138 static CSPath *newPath(CSString *path);
00139
00140
00141 static CSPath *newPath(CSPath *cwd, const char *path);
00142 static CSPath *newPath(CSString *cwd, const char *path);
00143 static CSPath *newPath(const char *cwd, CSString *path);
00144 static CSPath *newPath(const char *cwd, const char *path);
00145
00146 private:
00147 CSFile *try_CreateAndOpen(CSThread *self, int mode, bool retry);
00148 static CSLock iRename_lock;
00149 CSPath():iPath(NULL) { }
00150
00151 virtual ~CSPath();
00152
00153 CSString *iPath;
00154
00155 static CSPath *iCWD;
00156 };
00157
00158 #endif