static void inter_storage_save_sub(struct storage *data, FILE *fp) { FString line = storage_tostr(data); if (line) FPRINTF(fp, "%s\n", line); }
//--------------------------------------------------------- // 倉庫データを書き込む int inter_storage_save() { struct DBIterator* iter; DBKey key; struct storage_data* data; FILE *fp; int lock; if( (fp=lock_fopen(storage_txt,&lock))==NULL ){ ShowError("int_storage: can't write [%s] !!! data is lost !!!\n",storage_txt); return 1; } iter = storage_db->iterator(storage_db); for( data = (struct storage_data*)iter->first(iter,&key); iter->exists(iter); data = (struct storage_data*)iter->next(iter,&key) ) { int account_id = key.i; char line[65536]; storage_tostr(line,account_id,data); fprintf(fp,"%s\n",line); } iter->destroy(iter); lock_fclose(fp,storage_txt,&lock); return 0; }
int inter_storage_save_sub(DBKey key,void *data,va_list ap) { char line[65536]; FILE *fp; storage_tostr(line,(struct storage *)data); fp=va_arg(ap,FILE *); if(*line) fprintf(fp,"%s" RETCODE,line); return 0; }
/*========================================== * 倉庫データの同期 *------------------------------------------ */ static int storagedb_txt_sync_sub(void *key, void *data, va_list ap) { char line[65536]; FILE *fp; storage_tostr(line, (struct storage *)data); fp = va_arg(ap, FILE *); if(*line) fprintf(fp, "%s" NEWLINE, line); return 0; }
//--------------------------------------------------------- // 倉庫データを書き込む int inter_storage_save() { char line[65536]; int i; FILE *fp; fp=fopen(storage_txt,"w"); if(fp==NULL) return 0; for(i=0;i<storage_num;i++){ storage_tostr(line,&storage[i]); if(line[0]) fprintf(fp,"%s" RETCODE,line); } fclose(fp); return 0; }