From: hackbard Date: Wed, 23 Apr 2003 13:58:10 +0000 (+0000) Subject: added save/load feature X-Git-Url: https://hackdaworld.org/gitweb/?a=commitdiff_plain;h=8d3f810a0ef6906e51969d4afb1f00302cd025d9;p=physik%2Fmorpheus.git added save/load feature --- diff --git a/defines.h b/defines.h index 17e680f..3473e30 100644 --- a/defines.h +++ b/defines.h @@ -36,6 +36,8 @@ #define URAND_2BYTE_MAX 0xffff #define MAX_CHARS_RANDOM_FILE 64 +#define MAX_CHARS_SAVE_FILE 64 +#define MAX_CHARS_LOAD_FILE 64 typedef unsigned int u32; typedef long long unsigned int u64; diff --git a/main.c b/main.c index d171490..08c6a6c 100644 --- a/main.c +++ b/main.c @@ -11,12 +11,14 @@ * - Maik Haeberlen. Diplomarbeit, Universitaet Augsburg. */ +#define _GNU_SOURCE #include #include #include #include #include #include +#include /* important defines */ #include "defines.h" @@ -50,7 +52,9 @@ int usage() printf("-p \t p0 for probability of cell getting amorph (default %f)\n",DEFAULT_A_P_P0); printf("-C \t C start concentration (default %d)\n",DEFAULT_C_DIST_START_CONC); printf("-S \t slope of linear C distribution (default %d)\n",DEFAULT_C_DIST_SLOPE); - puts("-R \t read random datat from file (default not used)"); + puts("-R \t read random data from file (default not used)"); + puts("-D \t dump cell info into (default not used)"); + puts("-L \t load cell info and display it (default no)"); return -23; } @@ -66,6 +70,74 @@ int make_cryst(cell *cell) return 23; } +int load_from_file(char *file,display *display) +{ + int load_file_fd; + + if((load_file_fd=open(file,O_RDONLY))<0) + { + puts("cannot open load file"); + return -23; + } + if(read(load_file_fd,&(display->max_x),sizeof(u32))max_y),sizeof(u32))max_z),sizeof(u32))cell_p,display->max_x*display->max_y*display->max_z*sizeof(cell))max_x*display->max_y*display->max_z*sizeof(cell)) + { + puts("failed reading cell info from file"); + return -23; + } + close(load_file_fd); + puts("loaded file"); + return 23; +} + +int save_to_file(char *file,display *display) +{ + int save_file_fd; + + if((save_file_fd=open(file,O_CREAT|O_WRONLY|O_TRUNC))<0) + { + puts("cannot open save file"); + return -23; + } + if(write(save_file_fd,&(display->max_x),sizeof(u32))max_y),sizeof(u32))max_z),sizeof(u32))cell_p,display->max_x*display->max_y*display->max_z*sizeof(cell))!=display->max_x*display->max_y*display->max_z*sizeof(cell)) + { + puts("saving file failed"); + return -23; + } + close(save_file_fd); + puts("saved file"); + return 23; +} + int distrib_c_conc(cell *cell_p,int c_c0,int c_slope,u32 c_conc,u32 x_max,u32 y_max,u32 z_max) { int i,j; @@ -181,6 +253,8 @@ int main(int argc,char **argv) u32 display_x,display_y,display_z; /* intercept point of diplayed areas */ u32 display_refresh_rate; /* refresh rate for display */ int quit=0; /* continue/quit status */ + char save_file[MAX_CHARS_SAVE_FILE]; + char load_file[MAX_CHARS_LOAD_FILE]; printfd("debug: sizeof my u32 variable: %d\n",sizeof(u32)); printfd("debug: sizeof my cell struct: %d\n",sizeof(cell)); @@ -203,6 +277,8 @@ int main(int argc,char **argv) display_z=z_cell/2; display_refresh_rate=DEFAULT_DISPLAY_REF_RATE; strcpy(random_file,""); + strcpy(save_file,""); + strcpy(load_file,""); /* parse command args */ for(i=1;i