71 int i, c, n, frameNr, yy, mm, dd, h, m, s, longest=0;
77 if(
SIF_TEST) printf(
"sifRead(%s, *sif)\n", filename);
78 if(filename==NULL || data==NULL)
return(1);
83 fp=fopen(filename,
"r");
84 if(fp==NULL) {strcpy(
siferrmsg,
"cannot open file");
return(2);}
87 i=0;
while((c=fgetc(fp))!=EOF) {
88 if(c==10) {
if(i>longest) longest=i; i=0;}
else i++;
90 if(i>longest) longest=i;
91 rewind(fp); longest+=1;
93 line=(
char*)malloc((longest+1)*
sizeof(char));
94 if(line==NULL) {strcpy(
siferrmsg,
"out of memory"); fclose(fp);
return(3);}
98 if(fgets(line, longest, fp)==NULL) {
99 strcpy(
siferrmsg,
"wrong format"); fclose(fp); free(line);
return(4);
101 cptr=strpbrk(line,
"\n\r");
if(cptr!=NULL) *cptr=
'\0';
102 cptr=line+strspn(line,
" \t");
103 }
while(*cptr==
'#' || strlen(cptr)==0);
104 n=sscanf(line,
"%d/%d/%d %d:%d:%d %d %d %d %10s %7s",
105 &dd, &mm, &yy, &h, &m, &s, &frameNr, &data->
colNr, &data->
version,
107 if(n<9 || frameNr<1 || data->colNr<2 || data->version!=1) {
108 strcpy(
siferrmsg,
"wrong filetype"); fclose(fp); free(line);
return(5);}
109 timet=time(NULL); st=localtime(&timet);
111 st->tm_mday=dd; st->tm_mon=mm-1; st->tm_year=yy-1900;
112 st->tm_hour=h; st->tm_min=m; st->tm_sec=s; st->tm_isdst=-1;
120 fclose(fp); free(line);
return(6);
125 while(i<data->frameNr) {
127 if(fgets(line, longest, fp)==NULL) {
129 fclose(fp); free(line);
return(8);
131 cptr=strpbrk(line,
"\n\r");
if(cptr!=NULL) *cptr=
'\0';
132 cptr=line+strspn(line,
" \t");
134 }
while(*cptr==
'#' || strlen(cptr)==0);
135 n=sscanf(line,
"%lf %lf %lf %lf", &data->
x1[i], &data->
x2[i],
142 if(n<data->colNr || data->
x2[i]<data->
x1[i]) {
144 fclose(fp); free(line);
return(9);
150 fclose(fp); free(line);