7 #define MAX_FILES 10000
8 #define MAXMULTIFILES 25
11 char data_filenames
[MAXMULTIFILES
][20];
12 size_t num_data_files
;
13 char filenames
[MAX_FILES
][25];
14 unsigned offset
[MAX_FILES
];
15 unsigned length
[MAX_FILES
];
16 char file_datafile
[MAX_FILES
]; // number of datafile
20 struct MultiFileLibNew
{
21 char data_filenames
[MAXMULTIFILES
][50];
22 size_t num_data_files
;
23 char filenames
[MAX_FILES
][100];
24 unsigned long long offset
[MAX_FILES
];
25 unsigned long long length
[MAX_FILES
];
26 char file_datafile
[MAX_FILES
]; // number of datafile
31 struct ByteArray f
[MAXMULTIFILES
];
32 struct MultiFileLibNew mflib
;
37 const char *exestub_fn
;
40 /* generic interface */
41 void AgsFile_init(struct AgsFile
*buf
, char* filename
);
42 void AgsFile_close(struct AgsFile
*f
);
44 /* reader interface */
45 int AgsFile_open(struct AgsFile
*buf
);
47 int AgsFile_getVersion(struct AgsFile
*f
);
48 size_t AgsFile_getFileCount(struct AgsFile
*f
);
49 char *AgsFile_getFileName(struct AgsFile
*f
, size_t index
);
50 size_t AgsFile_getOffset(struct AgsFile
*f
, size_t index
);
51 size_t AgsFile_getFileSize(struct AgsFile
*f
, size_t index
);
52 int AgsFile_getFileNumber(struct AgsFile
*f
, size_t index
);
53 size_t AgsFile_getDataFileCount(struct AgsFile
*f
);
54 char *AgsFile_getDataFileName(struct AgsFile
*f
, size_t index
);
55 int AgsFile_dump(struct AgsFile
* f
, size_t index
, const char* outfn
);
56 int AgsFile_extract(struct AgsFile
* f
, int multifileno
, off_t start
, size_t len
, const char* outfn
);
58 /* writer interface */
59 // the directory containing the files passed via setFile
60 void AgsFile_setSourceDir(struct AgsFile
*f
, char* sourcedir
);
61 void AgsFile_setVersion(struct AgsFile
*f
, int version
);
62 void AgsFile_setFileCount(struct AgsFile
*f
, size_t count
);
63 int AgsFile_setFile(struct AgsFile
*f
, size_t index
, char* fn
);
64 void AgsFile_setDataFileCount(struct AgsFile
*f
, size_t count
);
65 void AgsFile_setFileNumber(struct AgsFile
*f
, size_t index
, int number
);
66 int AgsFile_setDataFile(struct AgsFile
*f
, size_t index
, char* fn
);
67 void AgsFile_setExeStub(struct AgsFile
*f
, const char *fn
);
68 int AgsFile_write(struct AgsFile
*f
);
70 #pragma RcB2 DEP "Clib32.c"