|
|
| version 1.35, 2004/02/03 08:24:40 | version 1.36, 2004/02/18 06:52:33 |
|---|---|
| Line 143 typedef struct { | Line 143 typedef struct { |
| UINT stat; | UINT stat; |
| FILEH fh; | FILEH fh; |
| UINT secpos; | UINT secpos; |
| // long pos; | |
| // long bak; | |
| // long next; | |
| NP2FHDR f; | NP2FHDR f; |
| // NP2FENT p; | } _SFFILEH, *SFFILEH; |
| } _NP2FFILE, *NP2FFILE, _SFFILEH, *SFFILEH; | |
| static SFFILEH statflag_open(const char *filename, char *err, int errlen) { | static SFFILEH statflag_open(const char *filename, char *err, int errlen) { |
| Line 366 void statflag_seterr(STFLAGH sfh, const | Line 361 void statflag_seterr(STFLAGH sfh, const |
| } | } |
| #if 0 | |
| static int flagopen(NP2FFILE f, const char *filename, ERR_BUF *e) { | |
| if (f) { | |
| f->fh = file_open(filename); | |
| if (f->fh == FILEH_INVALID) { | |
| return(STATFLAG_FAILURE); | |
| } | |
| if (file_read(f->fh, &f->f, sizeof(NP2FHDR)) | |
| != sizeof(NP2FHDR)) { | |
| file_close(f->fh); | |
| return(STATFLAG_FAILURE); | |
| } | |
| f->pos = sizeof(NP2FHDR); | |
| if (strcmp(f->f.name, np2flagdef.name)) { | |
| file_close(f->fh); | |
| return(STATFLAG_FAILURE); | |
| } | |
| if (strcmp(f->f.vername, np2flagdef.vername)) { | |
| #if 1 | |
| file_close(f->fh); | |
| return(STATFLAG_FAILURE); | |
| #else | |
| return(STATFLAG_VERSION); // 他形式を読むのであれば… | |
| #endif | |
| } | |
| if (f->f.ver != np2flagdef.ver) { | |
| #if 1 | |
| file_close(f->fh); | |
| return(STATFLAG_FAILURE); | |
| #else | |
| return(STATFLAG_VERSION); // 他verを読むのであれば… | |
| #endif | |
| } | |
| return(STATFLAG_SUCCESS); | |
| } | |
| (void)e; | |
| return(STATFLAG_FAILURE); | |
| } | |
| static int flagcreate(NP2FFILE f, const char *filename) { | |
| if (f) { | |
| f->fh = file_create(filename); | |
| if (f->fh == FILEH_INVALID) { | |
| return(STATFLAG_FAILURE); | |
| } | |
| if (file_write(f->fh, &np2flagdef, sizeof(NP2FHDR)) | |
| != sizeof(NP2FHDR)) { | |
| file_close(f->fh); | |
| return(STATFLAG_FAILURE); | |
| } | |
| f->pos = sizeof(NP2FHDR); | |
| return(STATFLAG_SUCCESS); | |
| } | |
| return(STATFLAG_FAILURE); | |
| } | |
| static int flagload_create(NP2FFILE f) { | |
| if (f) { | |
| ZeroMemory(&f->p, sizeof(NP2FENT)); | |
| if (f->pos & 15) { | |
| f->pos += 15; | |
| f->pos &= ~0xf; | |
| if (file_seek(f->fh, f->pos, 0) != f->pos) { | |
| return(STATFLAG_FAILURE); | |
| } | |
| } | |
| if (file_read(f->fh, &f->p, sizeof(NP2FENT)) != sizeof(NP2FENT)) { | |
| return(STATFLAG_FAILURE); | |
| } | |
| f->pos += sizeof(NP2FENT); | |
| f->next = f->pos + f->p.size; | |
| return(STATFLAG_SUCCESS); | |
| } | |
| return(STATFLAG_FAILURE); | |
| } | |
| static int flagload_load(NP2FFILE f, void *buf, UINT size) { | |
| if (f && buf && size && (file_read(f->fh, buf, size) == size)) { | |
| f->pos += size; | |
| return(STATFLAG_SUCCESS); | |
| } | |
| return(STATFLAG_FAILURE); | |
| } | |
| static int flagload_close(NP2FFILE f) { | |
| if (file_seek(f->fh, f->next, 0) != f->next) { | |
| return(STATFLAG_FAILURE); | |
| } | |
| f->pos = f->next; | |
| return(STATFLAG_SUCCESS); | |
| } | |
| static int flagsave_create(NP2FFILE f, const SFENTRY *t) { | |
| if (f && t) { | |
| int len; | |
| ZeroMemory(&f->p, sizeof(NP2FENT)); | |
| if (f->pos & 15) { | |
| UINT rem; | |
| rem = 16 - (f->pos & 15); | |
| if (file_write(f->fh, &f->p, rem) != rem) { | |
| return(STATFLAG_FAILURE); | |
| } | |
| f->pos += rem; | |
| } | |
| f->bak = f->pos; | |
| len = strlen(t->index); | |
| if (len >= 10) { | |
| len = 10; | |
| } | |
| if (len) { | |
| CopyMemory(f->p.index, t->index, len); | |
| } | |
| f->p.ver = t->ver; | |
| if (file_write(f->fh, &f->p, sizeof(NP2FENT)) != sizeof(NP2FENT)) { | |
| return(STATFLAG_FAILURE); | |
| } | |
| f->pos += sizeof(NP2FENT); | |
| return(STATFLAG_SUCCESS); | |
| } | |
| return(STATFLAG_FAILURE); | |
| } | |
| static int flagsave_save(NP2FFILE f, void *buf, UINT size) { | |
| if (f && buf && size && (file_write(f->fh, buf, size) == size)) { | |
| f->pos += size; | |
| f->p.size += size; | |
| return(STATFLAG_SUCCESS); | |
| } | |
| return(STATFLAG_FAILURE); | |
| } | |
| static int flagsave_close(NP2FFILE f) { | |
| if (!f) { | |
| goto fs_closeerr; | |
| } | |
| if (file_seek(f->fh, f->bak, 0) != f->bak) { | |
| goto fs_closeerr; | |
| } | |
| if (file_write(f->fh, &f->p, sizeof(NP2FENT)) != sizeof(NP2FENT)) { | |
| goto fs_closeerr; | |
| } | |
| if (file_seek(f->fh, f->pos, 0) == f->pos) { | |
| return(STATFLAG_SUCCESS); | |
| } | |
| fs_closeerr: | |
| return(STATFLAG_FAILURE); | |
| } | |
| static void flagclose(NP2FFILE f) { | |
| if (f) { | |
| file_close(f->fh); | |
| } | |
| } | |
| #endif | |
| // ---- common | // ---- common |
| static int flagsave_common(STFLAGH sfh, const SFENTRY *tbl) { | static int flagsave_common(STFLAGH sfh, const SFENTRY *tbl) { |