/* io subroutines for hazard programs, last modified 10/95 */ #include #include #include #include #include #define MAXCHAR 30 FILE *fporg,*fp[50]; //long int index; struct header { char name[MAXCHAR][6]; float period; int32_t nlev; float xlev[20]; float extra[10]; }; struct header *headr; void openr_(name,len) char name[]; int32_t len; { int i; char st[MAXCHAR]; for(i=0; i_fileno; if(*fpx > 49) { fprintf(stderr,"too many files open\n"); fclose(fporg); exit(2); } //*fpx = fporg->fd; //*fpx = fp[*ip]->fd; fp[*fpx] = fporg; //fprintf(stderr,"opened %s\n",st); //printf("fpx %u\n",*fpx); //printf("fileno %u\n",fp[*fpx]->_fileno); //printf("flags %u\n",fp[*fpx]->_flags); //fprintf(stderr,"File structure\n"); //fprintf(stderr,"%d\n",fp[*ip]->count); //fprintf(stderr,"%c\n",*fp[*ip]->curadr); //fprintf(stderr,"%c\n",*fp[*ip]->bufadr); //fprintf(stderr,"%d\n",fp[*ip]->reclen); //fprintf(stderr,"%d\n",fp[*ip]->fd); //fprintf(stderr,"%d\n",fp[*ip]->flags); } void close_() { int j; for (j=0;j<10;j++) if(fclose(fp[j])!= 0) { fprintf(stderr,"cant close \n"); exit(1); } } void getbuf_(buf,bufsiz,readn) int32_t *bufsiz,*readn; short int *buf; { *readn= fread(buf,2,*bufsiz,fp[0]); } void getbuf2_(buf2,bufsiz,readn) int32_t *bufsiz,*readn; float *buf2; { *readn= fread(buf2,4,*bufsiz,fp[0]); } void getbuf3_(buf2,bufsiz,readn,skip) int32_t *bufsiz, *readn; long int *skip; float *buf2; { fseek(fp[0], *skip, 0); *readn= fread(buf2,4,*bufsiz,fp[0]); } void putbuf2_(buf2,bufsiz,readn) int32_t *bufsiz,*readn; float *buf2; { *readn= fwrite(buf2,4,*bufsiz,fp[0]); } void putbuf_(buf2,bufsiz,readn) int32_t *bufsiz,*readn; short int *buf2; { *readn= fwrite(buf2,2,*bufsiz,fp[0]); } void putbufx_(fpx,buf2,bufsiz,readn) //int *ip; int32_t *bufsiz,*readn; float *buf2; int32_t *fpx; { //fprintf(stderr,"File structure\n"); //fprintf(stderr,"%d\n",fp->count); //fprintf(stderr,"%c\n",*fp->curadr); //fprintf(stderr,"%c\n",*fp->bufadr); //fprintf(stderr,"%d\n",fp->reclen); //fprintf(stderr,"%d\n",fp->fd); //fprintf(stderr,"%d\n",fp->flags); //fp->count = 0; //fp[ip]->fd = *fpx; //*fp->curadr = 'x'; //*fp->bufadr = 'x'; //fp->reclen = 1024; //fp->flags = 1026; //fprintf(stderr,"File structure\n"); //fprintf(stderr,"%d\n",fp->count); //fprintf(stderr,"%c\n",*fp->curadr); //fprintf(stderr,"%c\n",*fp->bufadr); //fprintf(stderr,"%d\n",fp->reclen); //fprintf(stderr,"fd %d\n",fp[*ip]->fd); //fprintf(stderr,"%d\n",fp->flags); //*readn= write(*fpx,buf2,*bufsiz*4); //*readn= fwrite(buf2,*bufsiz*4,1,fp[*ip]); *readn= fwrite(buf2,4,*bufsiz,fp[*fpx]); //*readn= fwrite(buf2,4,*bufsiz,fp[*ip]); } void puthead_(fpx,headr,bufsiz,readn) struct header *headr; int32_t *bufsiz,*readn; int32_t *fpx; { int limit = *bufsiz/2; int hm, i; //fprintf(stderr,"Printing header\n"); //fprintf(stderr,"File descriptor %u\n",*fpx); //fprintf(stderr,"File structure\n"); //fprintf(stderr,"%d\n",fp[0]->count); //fprintf(stderr,"%c\n",*fp[0]->curadr); //fprintf(stderr,"%c\n",*fp[0]->bufadr); //fprintf(stderr,"%d\n",fp[0]->reclen); //fprintf(stderr,"%d\n",fp[0]->fd); //fprintf(stderr,"%d\n",fp[0]->flags); //fp->count = 0; //fp[0]->fd = *fpx; //*fp->curadr = 'x'; //*fp->bufadr = 'x'; //fp->reclen = 1024; //fp->flags = 1026; //fprintf(stderr,"File structure\n"); //fprintf(stderr,"%d\n",fp->count); //fprintf(stderr,"%c\n",*fp->curadr); //fprintf(stderr,"%c\n",*fp->bufadr); //fprintf(stderr,"%d\n",fp->reclen); //fprintf(stderr,"fd %d\n",fp[*ip]->fd); //fprintf(stderr,"%d\n",fp->flags); //printf("Writing header\n"); //printf("%30s\n",headr->name); //printf("%f\n",headr->period); //printf("%d\n",headr->nlev); //for (i=0;i<*bufsiz;++i) //fprintf(stderr,"I: %d %c\n",i,((char *)headr)[i]); //fprintf(stderr,"\n"); //*readn= write(*fpx,buf2,*bufsiz*4); //*readn= write(*fpx,headr,*bufsiz); //*readn= fwrite(headr,*bufsiz,1,fp[*fpx]); *readn= fwrite(headr,*bufsiz,1,fp[*fpx]); if(!*readn) { perror("fwrite Error:"); exit(-1); } //printf("%d\n",*readn); //printf("%d\n",*bufsiz); //for(i=0;i_fileno); //printf("flags %u\n",fp[*fpx]->_flags); //*readn= fwrite(headr,*bufsiz,1,fp[*ip]); } void gethead_(headr,bufsiz,readn) struct header *headr; int32_t *bufsiz,*readn; { //int index; *readn= fread(headr,*bufsiz,1,fp[0]); //fprintf(stderr,"Reading header\n"); //printf("%30s\n",headr->name); //printf("%f\n",headr->period); //printf("%d\n",headr->nlev); //for (index=0;index<20;index++) //fprintf(stderr,"%e\t",headr->xlev[index]); //fprintf(stderr,"\n"); }