Overview
| Comment: | Add the write_lump() function (uses upsert, which SQLite recently added) |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
a55e51e10053ba27ea308951b3423de0 |
| User & Date: | user on 2018-06-09 00:42:29.445 |
| Other Links: | manifest | tags |
Context
|
2018-06-10
| ||
| 05:27 | Corrections and completions of class loading; implement -x switch; correction to schema check-in: 08625cbba0 user: user tags: trunk | |
|
2018-06-09
| ||
| 00:42 | Add the write_lump() function (uses upsert, which SQLite recently added) check-in: a55e51e100 user: user tags: trunk | |
|
2018-06-08
| ||
| 21:15 | More class loading codes; correction to user cache check-in: 81d74d79e1 user: user tags: trunk | |
Changes
Modified heromesh.h
from [89943d20fd]
to [e6403c7a41].
| ︙ | ︙ | |||
38 39 40 41 42 43 44 45 46 47 48 49 50 51 | extern xrm_db*resourcedb; extern const char*basefilename; extern xrm_quark optionquery[16]; extern Uint32 generation_number; extern char main_options[128]; unsigned char*read_lump(int sol,int lvl,long*sz,sqlite3_value**us); void set_cursor(int id); #define FIL_SOLUTION 1 #define FIL_LEVEL 0 #define LUMP_LEVEL_IDX (-1) #define LUMP_CLASS_DEF (-2) | > | 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | extern xrm_db*resourcedb; extern const char*basefilename; extern xrm_quark optionquery[16]; extern Uint32 generation_number; extern char main_options[128]; unsigned char*read_lump(int sol,int lvl,long*sz,sqlite3_value**us); void write_lump(int sol,int lvl,long sz,const unsigned char*data); void set_cursor(int id); #define FIL_SOLUTION 1 #define FIL_LEVEL 0 #define LUMP_LEVEL_IDX (-1) #define LUMP_CLASS_DEF (-2) |
| ︙ | ︙ |
Modified main.c
from [91b8dc3f22]
to [af17e022b5].
| ︙ | ︙ | |||
171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
} else {
*sz=0;
if(us) *us=0;
}
sqlite3_reset(readusercachest);
return buf;
}
static void init_usercache(void) {
sqlite3_stmt*st;
int z;
sqlite3_int64 t1,t2;
char*nam1;
char*nam2;
| > > > > > > > > > > > > > > > > | 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
} else {
*sz=0;
if(us) *us=0;
}
sqlite3_reset(readusercachest);
return buf;
}
void write_lump(int sol,int lvl,long sz,const unsigned char*data) {
// Writes a lump to the user cache.
// The actual Hamster archive files will be updated when the program terminates.
sqlite3_stmt*st;
int e;
if(e=sqlite3_prepare_v2(userdb,"INSERT INTO `USERCACHEDATA`(`FILE`,`LEVEL`,`NAME`,`DATA`) VALUES(?1,?2,CASE WHEN ?2 < 0 THEN ?3 ELSE ?2 || ?3 END,?4)"
" ON CONFLICT(`FILE`,`LEVEL`) DO UPDATE SET `DATA` = ?4;",-1,&st,0)) fatal("SQL error (%d): %s\n",e,sqlite3_errmsg(userdb));
sqlite3_bind_int64(st,1,sol?solutionuc:leveluc);
sqlite3_bind_int(st,2,lvl);
sqlite3_bind_text(st,3,lvl==LUMP_CLASS_DEF?"CLASS.DEF":lvl==LUMP_LEVEL_IDX?"LEVEL.IDX":sol?".SOL":".LVL",-1,SQLITE_STATIC);
sqlite3_bind_blob64(st,4,data,sz,0);
while((e=sqlite3_step(st))==SQLITE_ROW);
if(e!=SQLITE_DONE) fatal("SQL error (%d): %s\n",e,sqlite3_errmsg(userdb));
sqlite3_finalize(st);
}
static void init_usercache(void) {
sqlite3_stmt*st;
int z;
sqlite3_int64 t1,t2;
char*nam1;
char*nam2;
|
| ︙ | ︙ |