65 printf(
" initC: using zlib version %s\n",ZLIB_VERSION);
78 FCALLSCSUB1(
initC,INITC,initc,PINT)
99 int fileIndex = *nFileIn-1;
100 if (fileIndex < 0)
return;
102 gzrewind(
files[fileIndex]);
105 fseek(
files[fileIndex], 0L, SEEK_SET);
106 clearerr(
files[fileIndex]);
109 FCALLSCSUB1(
resetC,RESETC,resetc,PINT)
113 void
openC(const
char *fileName,
int *errorFlag)
125 if (!errorFlag)
return;
137 if (!
files[numAllFiles]) {
139 }
else if (ferror(
files[numAllFiles])) {
140 fclose(
files[numAllFiles]);
151 FCALLSCSUB2(
openC,OPENC,openc,STRING,PINT)
170 void
readC(
float *bufferFloat,
int *bufferInt,
int *lengthBuffers,
171 int *nFileIn,
int *errorFlag)
180 if (!errorFlag)
return;
182 int fileIndex = *nFileIn-1;
183 if (fileIndex < 0)
return;
184 if (!bufferFloat || !bufferInt || !lengthBuffers) {
190 int recordLength = 0;
192 int nCheckR = gzread(
files[fileIndex], &recordLength,
sizeof(recordLength));
193 if (gzeof(
files[fileIndex])) {
194 gzrewind(
files[fileIndex]);
199 if (
sizeof(recordLength) != nCheckR) {
200 printf(
"readC: problem reading length of record file %d\n", fileIndex);
205 if (recordLength/2 > *lengthBuffers) {
210 for ( ; i< recordLength/2; ++i)
212 int nCheckF = gzread(
files[fileIndex], bufferFloat,
sizeof(bufferFloat[0]));
213 if (nCheckF !=
sizeof(bufferFloat[0])) {
214 printf(
"readC: problem with stream or EOF skiping floats\n");
221 for ( ; i< recordLength/2; ++i)
223 int nCheckI = gzread(
files[fileIndex], bufferInt,
sizeof(bufferInt[0]));
224 if (nCheckI !=
sizeof(bufferInt[0])) {
225 printf(
"readC: problem with stream or EOF skiping ints\n");
232 *lengthBuffers = recordLength/2;
235 *lengthBuffers = recordLength/2;
239 int nCheckF = gzread(
files[fileIndex], bufferFloat, *lengthBuffers*4);
240 if (nCheckF != *lengthBuffers*4) {
241 printf(
"readC: problem with stream or EOF reading floats\n");
247 int nCheckI = gzread(
files[fileIndex], bufferInt, *lengthBuffers*4);
248 if (nCheckI != *lengthBuffers*4) {
249 printf(
"readC: problem with stream or EOF reading ints\n");
254 size_t nCheckR = fread(&recordLength,
sizeof(recordLength), 1,
256 if (feof(
files[fileIndex])) {
258 fseek(
files[fileIndex], 0L, SEEK_SET);
259 clearerr(
files[fileIndex]);
264 if (1 != nCheckR || ferror(
files[fileIndex])) {
265 printf(
"readC: problem reading length of record, file %d\n",
271 if (recordLength/2 > *lengthBuffers) {
276 for ( ; i< recordLength/2; ++i)
278 size_t nCheckF = fread(bufferFloat,
sizeof(bufferFloat[0]), 1,
280 if (ferror(
files[fileIndex]) || feof(
files[fileIndex])
281 || nCheckF != *lengthBuffers) {
282 printf(
"readC: problem with stream or EOF skiping floats\n");
289 for ( ; i< recordLength/2; ++i)
291 size_t nCheckI = fread(bufferInt,
sizeof(bufferInt[0]), 1,
293 if (ferror(
files[fileIndex]) || feof(
files[fileIndex])
294 || nCheckI != *lengthBuffers) {
295 printf(
"readC: problem with stream or EOF skiping ints\n");
302 *lengthBuffers = recordLength/2;
305 *lengthBuffers = recordLength/2;
309 size_t nCheckF = fread(bufferFloat,
sizeof(bufferFloat[0]), *lengthBuffers,
311 if (ferror(
files[fileIndex]) || feof(
files[fileIndex])
312 || nCheckF != *lengthBuffers) {
313 printf(
"readC: problem with stream or EOF reading floats\n");
319 size_t nCheckI = fread(bufferInt,
sizeof(bufferInt[0]), *lengthBuffers,
321 if (ferror(
files[fileIndex]) || feof(
files[fileIndex])
322 || nCheckI != *lengthBuffers) {
323 printf(
"readC: problem with stream or EOF reading ints\n");
329 *errorFlag = *lengthBuffers;
331 FCALLSCSUB5(
readC,READC,readc,PFLOAT,PINT,PINT,PINT,PINT)