82 {
83 int ri, fi, n;
85 FILE *fp;
86
87
88 if(filename==NULL || dft==NULL || strlen(filename)<1) {
89 strcpy(
dfterrmsg,
"program error");
return(1);
90 }
91
92
93 fp=fopen(filename, "r");
94 if(fp==NULL) {
95 strcpy(
dfterrmsg,
"cannot open file");
return(2);
96 }
97
98
99 fi=0; do {
101 strcpy(
dfterrmsg,
"wrong format"); fclose(fp);
return(3);}
102 lptr=tmp;
103
104 cptr=strtok(lptr, "; \t\n\r"); if(cptr==NULL) continue;
105
106 if(cptr[0]=='#' || cptr[0]==';') continue;
107
108 fi=atoi(cptr); break;
109 } while(1);
110 if(fi<1) {strcpy(
dfterrmsg,
"wrong format"); fclose(fp);
return(3);}
111
112
114 lptr=tmp;
115
116 cptr=strtok(lptr, "; \t\n\r"); if(cptr==NULL) continue;
117
118 if(cptr[0]=='#' || cptr[0]==';') continue;
119 n++;
120 }
121
122 ri=n/fi;
123 if(ri<1) {strcpy(
dfterrmsg,
"wrong format"); fclose(fp);
return(4);}
124
125
126
128 strcpy(
dfterrmsg,
"out of memory"); fclose(fp);
return(11);}
130
131
132 rewind(fp); n=ri=fi=0;
133 do {
136 fclose(fp);
dftEmpty(dft);
return(3);
137 }
138 lptr=tmp;
139
140 cptr=strtok(lptr, "; \t\n\r"); if(cptr==NULL) continue;
141
142 if(cptr[0]=='#' || cptr[0]==';') continue;
143 n++;
144
145 if(n==1) {continue;}
146
147 dft->
x[fi]=atof(cptr);
148
149 cptr=strtok(NULL, "; \t\n\r"); if(cptr==NULL) continue;
150 dft->
voi[ri].
y[fi]=atof(cptr);
151
152 cptr=strtok(NULL, "; \t\n\r"); if(cptr==NULL) continue;
153 dft->
w[fi]+=atof(cptr);
154
155 cptr=strtok(NULL, "; \t\n\r"); if(cptr==NULL) continue;
156 if(fi==0) sprintf(dft->
voi[ri].
voiname,
"%-*.*s",
158 else if(strncasecmp(dft->
voi[ri].
voiname, cptr, strlen(cptr))!=0) {
160
161 fclose(fp);
dftEmpty(dft);
return(4);
162 }
163 fi++;
164 if(fi==dft->
frameNr) {fi=0; ri++;}
165 if(ri==dft->
voiNr)
break;
166 } while(1);
168 for(fi=0; fi<dft->
frameNr; fi++) dft->
w[fi]/=(
double)dft->
voiNr;
169
170
171 fclose(fp);
172
173
178
179 return(0);
180}
int dftSetmem(DFT *data, int frameNr, int voiNr)
void dftFrametimes(DFT *data)
#define MAX_IDWC_LINE_LEN
#define MAX_REGIONSUBNAME_LEN
char voiname[MAX_REGIONSUBNAME_LEN+1]