int depcache_save(const char *filename, struct GRAPH *graph) { struct WRITEINFO info; info.index = 0; info.graph = graph; info.fp = io_open_write(filename); if(!io_valid(info.fp)) return -1; cache_setup_header("DEP"); if(write_header(&info) || write_nodes(&info)) { /* error occured, trunc the cache file so we don't leave a corrupted file */ printf("%s: warning: error saving cache file '%s', truncating it\n", session.name, filename); io_close(info.fp); io_close(io_open_write(filename)); return -1; } /* close up and return */ io_close(info.fp); return 0; }
int main() { define_exp(exp); TRY(exp) { do_init(); launch_resource_process(); struct bitmap_t * b = load_bitmap("0*XP3:ss_保有背景真アサシン.tlg|FILE:/home/wn/Windows/Fate/image.xp3", NULL); struct bitmap_array_t * array = split_bitmap(b, 128, 128, 1); if (array->original_bitmap == NULL) { free_bitmap(b); } struct rect_mesh_t * mesh = build_mesh_by_array(array); assert(mesh != NULL); VERBOSE(SYSTEM, "%dx%d\n", array->nr_w, array->nr_h); char name[128]; for (volatile int j = 0; j < array->nr_h; j++) { for (volatile int i = 0; i < array->nr_w; i++) { snprintf(name, 128, "/tmp/%dx%d.png", j, i); define_exp(exp); catch_var(struct io_t *, writer, NULL); TRY(exp) { set_catched_var(writer, io_open_write("FILE", name)); bitmap_to_png(&array->tiles[j * array->nr_w + i], writer); } FINALLY { get_catched_var(writer); if (writer != NULL) io_close(writer); } CATCH(exp) { RETHROW(exp); } } } print_rect_mesh(mesh); destroy_rect_mesh(mesh); if (array->original_bitmap != NULL) { free_bitmap(array->original_bitmap); free_bitmap_array(array); } } FINALLY { shutdown_resource_process(); do_cleanup(); } CATCH(exp) { } return 0; }