+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))<sizeof(u32))
+ {
+ puts("failed reading max x");
+ return-23;
+ }
+ if(read(load_file_fd,&(display->max_y),sizeof(u32))<sizeof(u32))
+ {
+ puts("failed reading max y");
+ return -23;
+ }
+ if(read(load_file_fd,&(display->max_z),sizeof(u32))<sizeof(u32))
+ {
+ puts("failed reading max z");
+ return -23;
+ }
+ if(read(load_file_fd,display->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("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))<sizeof(u32))
+ {
+ puts("failed saving max x");
+ return -23;
+ }
+ if(write(save_file_fd,&(display->max_y),sizeof(u32))<sizeof(u32))
+ {
+ puts("failed saving max y");
+ return -23;
+ }
+ if(write(save_file_fd,&(display->max_z),sizeof(u32))<sizeof(u32))
+ {
+ puts("failed saving max z");
+ return -23;
+ }
+ if(write(save_file_fd,display->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;
+}
+