X-Git-Url: https://hackdaworld.org/gitweb/?p=physik%2Fmorpheus.git;a=blobdiff_plain;f=main.c;fp=main.c;h=08c6a6c42be5bea2c3a0b230da94bf9b2ba53884;hp=d171490c9286ba63af063212c3ca7db0ea01db66;hb=8d3f810a0ef6906e51969d4afb1f00302cd025d9;hpb=81759e39f6f84b5e1e31c5a680dec75e4299849b 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