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
00030
00031
00032
00033
00034 #ifndef FILE_H
00035 #define FILE_H
00036
00037 #include <time.h>
00038
00039 struct empfile {
00040
00041 int uid;
00042 char *name;
00043 char *file;
00044
00045 struct castr *cadef;
00046 int size;
00047 int flags;
00048
00049
00050 char *cache;
00051 int csize;
00052
00053
00054 int baseid;
00055 int cids;
00056 int fids;
00057 int fd;
00058
00059
00060 void (*init)(int, void *);
00061 int (*postread)(int, void *);
00062 int (*prewrite)(int, void *);
00063 };
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076 #define EFF_XY bit(0)
00077 #define EFF_OWNER bit(1)
00078 #define EFF_GROUP bit(2)
00079
00080 #define EFF_STATIC bit(3)
00081
00082 #define EFF_IMMUTABLE (EFF_XY | EFF_OWNER | EFF_GROUP | EFF_STATIC)
00083
00084
00085 #define EFF_MEM bit(8)
00086
00087 #define EFF_RDONLY bit(9)
00088
00089 #define EFF_CUSTOM bit(10)
00090
00091
00092 #define EFF_CREATE bit(11)
00093
00094
00095
00096
00097
00098
00099 enum {
00100
00101 EF_BAD = -1,
00102
00103 EF_SECTOR,
00104 EF_SHIP,
00105 EF_PLANE,
00106 EF_LAND,
00107 EF_NUKE,
00108 EF_NEWS,
00109 EF_TREATY,
00110 EF_TRADE,
00111 EF_POWER,
00112 EF_NATION,
00113 EF_LOAN,
00114 EF_MAP,
00115 EF_BMAP,
00116 EF_COMM,
00117 EF_LOST,
00118 EF_REALM,
00119 EF_GAME,
00120 EF_DYNMAX = EF_GAME,
00121
00122
00123 EF_ITEM,
00124 EF_PRODUCT,
00125 EF_SECTOR_CHR,
00126 EF_SHIP_CHR,
00127 EF_PLANE_CHR,
00128 EF_LAND_CHR,
00129 EF_NUKE_CHR,
00130 EF_NEWS_CHR,
00131 EF_INFRASTRUCTURE,
00132 EF_UPDATES,
00133 EF_TABLE,
00134 EF_META,
00135
00136 EF_AGREEMENT_STATUS,
00137 EF_LAND_CHR_FLAGS,
00138 EF_LEVEL,
00139 EF_META_FLAGS,
00140 EF_META_TYPE,
00141 EF_MISSIONS,
00142 EF_NATION_FLAGS,
00143 EF_NATION_REJECTS,
00144 EF_NATION_RELATIONS,
00145 EF_NATION_STATUS,
00146 EF_NUKE_CHR_FLAGS,
00147 EF_PACKING,
00148 EF_PAGE_HEADINGS,
00149 EF_PLAGUE_STAGES,
00150 EF_PLANE_CHR_FLAGS,
00151 EF_PLANE_FLAGS,
00152 EF_RESOURCES,
00153 EF_RETREAT_FLAGS,
00154 EF_SECTOR_NAVIGATION,
00155 EF_SHIP_CHR_FLAGS,
00156 EF_TREATY_FLAGS,
00157
00158 EF_COUNTRY,
00159
00160 EF_MAX
00161 };
00162
00163 #define EF_IS_GAME_STATE(type) (EF_SECTOR <= (type) && (type) <= EF_DYNMAX)
00164 #define EF_IS_VIEW(type) (EF_COUNTRY <= (type) && (type) < EF_MAX)
00165
00166 extern struct castr *ef_cadef(int);
00167 extern int ef_read(int, int, void *);
00168 extern void *ef_ptr(int, int);
00169 extern char *ef_nameof(int);
00170 extern time_t ef_mtime(int);
00171 extern int ef_open(int, int);
00172 extern int ef_check(int);
00173 extern int ef_close(int);
00174 extern int ef_flush(int);
00175 extern int ef_write(int, int, void *);
00176 extern int ef_extend(int, int);
00177 extern int ef_ensure_space(int, int, int);
00178 extern int ef_nelem(int);
00179 extern int ef_flags(int);
00180 extern int ef_byname(char *);
00181 extern int ef_byname_from(char *, int *);
00182 extern void ef_init(void);
00183 extern int ef_verify(void);
00184 extern int ef_elt_byname(int, char *);
00185
00186 extern struct empfile empfile[EF_MAX + 1];
00187
00188 #endif