char p_file[MAX_CHARS];
char n_e_file[MAX_CHARS];
char r_file[MAX_CHARS];
+char s_file[MAX_CHARS];
+int start_fd;
t_net *gnet;
d3_lattice *gd3_l;
info *gmy_info;
int usage(char *prog)
{
puts("usage:");
- printf("%s -i ip -p port -r/P/n random/profile/neloss file\n",prog);
+ printf("%s -i ip -p port -r/P/n/s random/profile/neloss/start file\n",prog);
return 1;
}
strcpy(p_file,IMP_PROFILE);
strcpy(n_e_file,NEL_PROFILE);
strcpy(r_file,"");
+ strcpy(s_file,"");
+ start_fd=0;
port=1025;
/* parse/check argv */
case 'p':
port=atoi(argv[++i]);
break;
+ case 's':
+ strcpy(s_file,argv[++i]);
+ break;
default:
usage(argv[0]);
return -1;
return -1;
}
+ /* try a file to start from */
+ if(strcmp(s_file,"")) {
+ start_fd=open(s_file,O_RDONLY);
+ if(start_fd>0) printf("using %s as a starting file ...\n",s_file);
+ else printf("errors opening %s!\n",s_file);
+ }
+
/* event init */
event_init(&event,1);
event_set_timeout(&event,0,0);
event_start(&event,NULL,get_data_and_calc,nop);
network_shutdown(&net);
+ if(start_fd>0) close(start_fd);
return 1;
}
u32 x_c,y_c,z_c;
int i,j;
int c_step;
+ unsigned char do_sputter;
unsigned char data;
t_net *net;
c_step=0;
ne_max=0;
ip_max=0;
+ do_sputter=1;
net=gnet;
gd3_l=&d3_l;
memset(d3_l.status,0,j*sizeof(unsigned char));
memset(d3_l.extra,0,j*sizeof(int));
}
+ /* check for file to start from ... */
+ if(start_fd>0) {
+ printf("starting from a save file!\n");
+ unsigned char *nullbuf;
+ nullbuf=(unsigned char *)malloc(sizeof(d3_lattice));
+ if(read(start_fd,nullbuf,sizeof(d3_lattice))!=sizeof(d3_lattice)) {
+ printf("read failed (start file d3l)\n");
+ return -1;
+ }
+ free(nullbuf);
+ nullbuf=(unsigned char *)malloc(sizeof(info));
+ if(read(start_fd,nullbuf,sizeof(info))!=sizeof(info)) {
+ printf("read failed (start file info)\n");
+ return -1;
+ }
+ free(nullbuf);
+ if(read(start_fd,d3_l.status,j*sizeof(unsigned char))!=j*sizeof(unsigned char)) {
+ printf("read failed (start file status)\n");
+ return -1;
+ }
+ if(read(start_fd,d3_l.extra,j*sizeof(int))!=j*sizeof(int)) {
+ printf("read failed (start file extra)\n");
+ return -1;
+ }
+ }
}
else {
printf("unknown instruction, restarting ...\n");
/* this should be obsolete - z is high enough - we check now! */
if(c_profile[d3_l.max_z-1]!=0) {
printf("max_z (%d) too small - sputtering not possible\n",d3_l.max_z);
- return -1;
+ do_sputter=0;
}
/* sputtering really possible ?*/
send_data(0);
dc=DC_QUIT;
}
- if(i%my_info.s_rate==0) sputter(&d3_l);
+ if((do_sputter)&(i%my_info.s_rate==0)) sputter(&d3_l);
if(shut_down) {
free(d3_l.status);
free(d3_l.extra);