2006-04-13 20:47:06 +00:00
|
|
|
// cache1d.h
|
|
|
|
|
2014-11-22 12:32:56 +00:00
|
|
|
#ifndef cache1d_h_
|
|
|
|
#define cache1d_h_
|
2006-04-13 20:47:06 +00:00
|
|
|
|
2008-02-16 22:27:08 +00:00
|
|
|
#include "compat.h"
|
|
|
|
|
2014-11-26 04:39:23 +00:00
|
|
|
#ifdef __cplusplus
|
2006-04-13 20:47:06 +00:00
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2012-11-15 21:09:56 +00:00
|
|
|
#ifdef WITHKPLIB
|
|
|
|
int32_t cache1d_file_fromzip(int32_t fil);
|
|
|
|
#endif
|
2010-01-16 20:17:33 +00:00
|
|
|
|
2015-05-03 07:04:11 +00:00
|
|
|
extern char *kpzbuf;
|
2015-05-27 08:47:03 +00:00
|
|
|
extern int32_t kpzbufsiz;
|
2015-05-03 07:04:11 +00:00
|
|
|
extern int32_t kpzbufloadfil(int32_t);
|
|
|
|
extern int32_t kpzbufload(const char *);
|
|
|
|
|
2009-01-09 09:29:17 +00:00
|
|
|
void initcache(intptr_t dacachestart, int32_t dacachesize);
|
|
|
|
void allocache(intptr_t *newhandle, int32_t newbytes, char *newlockptr);
|
2006-04-13 20:47:06 +00:00
|
|
|
void agecache(void);
|
|
|
|
|
2009-01-09 09:29:17 +00:00
|
|
|
extern int32_t pathsearchmode; // 0 = gamefs mode (default), 1 = localfs mode (editor's mode)
|
2014-11-26 04:39:23 +00:00
|
|
|
char *listsearchpath(int32_t initp);
|
2015-01-08 15:14:47 +00:00
|
|
|
#define addsearchpath(a) addsearchpath_user(a, 0)
|
|
|
|
int32_t addsearchpath_user(const char *p, int32_t user);
|
2013-04-05 07:48:20 +00:00
|
|
|
int32_t removesearchpath(const char *p);
|
2015-01-08 15:14:47 +00:00
|
|
|
void removesearchpaths_withuser(int32_t usermask);
|
2009-01-09 09:29:17 +00:00
|
|
|
int32_t findfrompath(const char *fn, char **where);
|
|
|
|
int32_t openfrompath(const char *fn, int32_t flags, int32_t mode);
|
2006-04-13 20:47:06 +00:00
|
|
|
BFILE *fopenfrompath(const char *fn, const char *mode);
|
|
|
|
|
2016-01-03 20:07:24 +00:00
|
|
|
extern int32_t numgroupfiles;
|
2016-08-27 01:41:33 +00:00
|
|
|
int initgroupfile(const char *filename);
|
2006-04-13 20:47:06 +00:00
|
|
|
void uninitgroupfile(void);
|
2010-10-17 14:49:39 +00:00
|
|
|
int32_t kopen4load(const char *filename, char searchfirst); // searchfirst: 0 = anywhere, 1 = first group, 2 = any group
|
2009-01-09 09:29:17 +00:00
|
|
|
int32_t kread(int32_t handle, void *buffer, int32_t leng);
|
2015-09-23 17:54:50 +00:00
|
|
|
#define kread_and_test(handle, buffer, leng) EDUKE32_PREDICT_FALSE(kread((handle), (buffer), (leng)) != (leng))
|
2009-01-09 09:29:17 +00:00
|
|
|
int32_t klseek(int32_t handle, int32_t offset, int32_t whence);
|
2015-09-23 17:55:19 +00:00
|
|
|
#define klseek_and_test(handle, offset, whence) EDUKE32_PREDICT_FALSE(klseek((handle), (offset), (whence)) < 0)
|
2009-01-09 09:29:17 +00:00
|
|
|
int32_t kfilelength(int32_t handle);
|
|
|
|
int32_t ktell(int32_t handle);
|
|
|
|
void kclose(int32_t handle);
|
2006-04-13 20:47:06 +00:00
|
|
|
|
2015-03-23 08:30:41 +00:00
|
|
|
void krename(int32_t crcval, int32_t filenum, const char *newname);
|
2015-11-25 12:08:00 +00:00
|
|
|
char const * kfileparent(int32_t handle);
|
2015-03-23 06:28:08 +00:00
|
|
|
|
2010-08-02 08:13:51 +00:00
|
|
|
typedef struct { intptr_t *hand; int32_t leng; char *lock ; } cactype;
|
|
|
|
|
2006-04-13 20:47:06 +00:00
|
|
|
enum {
|
|
|
|
CACHE1D_FIND_FILE = 1,
|
|
|
|
CACHE1D_FIND_DIR = 2,
|
|
|
|
CACHE1D_FIND_DRIVE = 4,
|
2013-12-01 18:27:59 +00:00
|
|
|
CACHE1D_FIND_NOCURDIR = 8,
|
2006-04-13 20:47:06 +00:00
|
|
|
|
|
|
|
CACHE1D_OPT_NOSTACK = 0x100,
|
2016-06-05 04:46:28 +00:00
|
|
|
|
2006-04-13 20:47:06 +00:00
|
|
|
// the lower the number, the higher the priority
|
|
|
|
CACHE1D_SOURCE_DRIVE = 0,
|
|
|
|
CACHE1D_SOURCE_CURDIR = 1,
|
|
|
|
CACHE1D_SOURCE_PATH = 2, // + path stack depth
|
|
|
|
CACHE1D_SOURCE_ZIP = 0x7ffffffe,
|
|
|
|
CACHE1D_SOURCE_GRP = 0x7fffffff,
|
|
|
|
};
|
|
|
|
typedef struct _CACHE1D_FIND_REC {
|
|
|
|
char *name;
|
2009-01-09 09:29:17 +00:00
|
|
|
int32_t type, source;
|
2006-04-13 20:47:06 +00:00
|
|
|
struct _CACHE1D_FIND_REC *next, *prev, *usera, *userb;
|
|
|
|
} CACHE1D_FIND_REC;
|
|
|
|
void klistfree(CACHE1D_FIND_REC *rec);
|
2009-01-09 09:29:17 +00:00
|
|
|
CACHE1D_FIND_REC *klistpath(const char *path, const char *mask, int32_t type);
|
2006-04-13 20:47:06 +00:00
|
|
|
|
2009-01-09 09:29:17 +00:00
|
|
|
int32_t kdfread(void *buffer, bsize_t dasizeof, bsize_t count, int32_t fil);
|
2018-03-23 21:41:02 +00:00
|
|
|
int32_t kdfread_LZ4(void *buffer, bsize_t dasizeof, bsize_t count, int32_t fil);
|
2012-02-18 22:15:04 +00:00
|
|
|
#if 0
|
2009-01-09 09:29:17 +00:00
|
|
|
int32_t dfread(void *buffer, bsize_t dasizeof, bsize_t count, BFILE *fil);
|
2012-02-18 22:14:45 +00:00
|
|
|
void kdfwrite(const void *buffer, bsize_t dasizeof, bsize_t count, int32_t fil);
|
2012-02-18 22:15:04 +00:00
|
|
|
#endif
|
2012-02-18 22:14:45 +00:00
|
|
|
void dfwrite(const void *buffer, bsize_t dasizeof, bsize_t count, BFILE *fil);
|
2018-03-23 21:41:02 +00:00
|
|
|
void dfwrite_LZ4(const void *buffer, bsize_t dasizeof, bsize_t count, BFILE *fil);
|
2006-04-13 20:47:06 +00:00
|
|
|
|
2014-11-26 04:39:23 +00:00
|
|
|
#ifdef __cplusplus
|
2006-04-13 20:47:06 +00:00
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2014-11-22 12:32:56 +00:00
|
|
|
#endif // cache1d_h_
|
2006-04-13 20:47:06 +00:00
|
|
|
|