00001
00023 #ifndef _LIBCOMPREX_FILE_H_
00024 #define _LIBCOMPREX_FILE_H_
00025
00026 #include <sys/types.h>
00027 #include <time.h>
00028
00029 #ifdef __cplusplus
00030 extern "C" {
00031 #endif
00032
00033 typedef struct _CxFile CxFile;
00034 typedef enum _CxFileType CxFileType;
00036 #include <libcomprex/archive.h>
00037 #include <libcomprex/directory.h>
00038 #include <libcomprex/types.h>
00039
00043 enum _CxFileType
00044 {
00045 CX_FILETYPE_UNKNOWN = 0,
00046 CX_FILETYPE_NORMAL,
00047 CX_FILETYPE_SYMLINK,
00048 CX_FILETYPE_HARDLINK,
00049 CX_FILETYPE_CHAR_DEVICE,
00050 CX_FILETYPE_BLOCK_DEVICE,
00051 CX_FILETYPE_FIFO
00052 };
00053
00059 struct _CxFile
00060 {
00061 CxArchive *archive;
00062 CxDirectory *parentDir;
00064 char *name;
00066 CxFileType type;
00072 char *path;
00073
00078 char *physPath;
00079
00080 mode_t mode;
00081 uid_t uid;
00082 gid_t gid;
00084 unsigned int compressedSize;
00085 unsigned int uncompressedSize;
00087 time_t date;
00089 char isLocalFile;
00091 void *moduleData;
00093 unsigned int refCount;
00095 CxFile *prev;
00096 CxFile *next;
00097 };
00098
00099
00101
00111 CxFile *cxNewFile(void);
00112
00120 void cxDestroyFile(CxFile *file);
00121
00124
00126
00139 void cxSetFileArchive(CxFile *file, CxArchive *archive);
00140
00149 void cxSetFileParent(CxFile *file, CxDirectory *parent);
00150
00159 void cxSetFileName(CxFile *file, const char *name);
00160
00174 void cxSetFilePath(CxFile *file, const char *path);
00175
00188 void cxSetFilePhysicalPath(CxFile *file, const char *path);
00189
00198 void cxSetFileType(CxFile *file, CxFileType type);
00199
00208 void cxSetFileMode(CxFile *file, mode_t mode);
00209
00218 void cxSetFileUid(CxFile *file, uid_t uid);
00219
00228 void cxSetFileGid(CxFile *file, gid_t gid);
00229
00238 void cxSetFileCompressedSize(CxFile *file, unsigned int size);
00239
00248 void cxSetFileSize(CxFile *file, unsigned int size);
00249
00258 void cxSetFileDate(CxFile *file, time_t date);
00259
00271 void cxSetFileLocal(CxFile *file, char isLocalFile);
00272
00275
00277
00289 CxArchive *cxGetFileArchive(CxFile *file);
00290
00300 CxDirectory *cxGetFileParent(CxFile *file);
00301
00311 const char *cxGetFileName(CxFile *file);
00312
00327 const char *cxGetFilePath(CxFile *file);
00328
00342 const char *cxGetFilePhysicalPath(CxFile *file);
00343
00353 CxFileType cxGetFileType(CxFile *file);
00354
00364 mode_t cxGetFileMode(CxFile *file);
00365
00375 uid_t cxGetFileUid(CxFile *file);
00376
00386 gid_t cxGetFileGid(CxFile *file);
00387
00397 unsigned int cxGetFileCompressedSize(CxFile *file);
00398
00408 unsigned int cxGetFileSize(CxFile *file);
00409
00419 time_t cxGetFileDate(CxFile *file);
00420
00433 char cxIsFileLocal(CxFile *file);
00434
00437
00439
00452 CxFile *cxGetNextFile(CxFile *file);
00453
00464 CxFile *cxGetPreviousFile(CxFile *file);
00465
00468 #ifdef __cplusplus
00469 }
00470 #endif
00471
00472 #endif
00473