#include "complex.h" #include "arh.h" #include "screen.h" #include "q.h" int form_doc_eq(int dden); st_blank *p_st_bl; di_blank *p_di_bl; //------------------------------------------------------------------- int inblank(int data) { int fh,adr,adr0,dl,inf,i,j,print,nom; char *buf,*buf1,shifr[10],naim[13]; controller *ptr_c; analog *a_ptr; for(nom=1; nom<10; nom++) { shifr[9]='\0'; sprintf(naim,"uc%d.din",nom); if((fh=sopen(naim,O_BINARY|O_RDONLY,SH_DENYNO))==-1) return 0; buf=(char *)malloc((unsigned)filelength(fh)); //!! if(buf==NULL) { close(fh); continue; } read(fh,buf,(unsigned)filelength(fh)); buf1=(char *)malloc(sizeof(st_blank)); //!! if(buf1==NULL) { close(fh); free(buf); continue; } //!! memset((char *)buf1,0,sizeof(st_blank)); p_st_bl=(st_blank *)buf1; p_st_bl->nom=nom; for(adr=0,inf=0; adr<(unsigned)filelength(fh); adr++) { switch(buf[adr]) { case 0xd: if(inf) { p_st_bl->kolstr++; p_st_bl->kolstl=max(inf,p_st_bl->kolstl); inf=0; } adr++; break; case '~': p_st_bl->adrdate=adr; p_st_bl->den=atoi(&buf[adr+1]); p_st_bl->chas=atoi(&buf[adr+4]); if(buf[adr+7]=='') print++; else print=0; break; case '$': case '&': case '@': case '#': inf++; break; default : break; } } buf1=(char *)malloc(sizeof(di_blank)*p_st_bl->kolstr); //!! if(buf1==NULL) { close(fh); free(buf); free(p_st_bl); continue; } //!! memset((char *)buf1,0,sizeof(di_blank)*p_st_bl->kolstr); p_di_bl=(di_blank *)buf1; for(adr=0,inf=0,adr0=0; adr<(unsigned)filelength(fh); adr++) { switch(buf[adr]) { case 0xd: if(inf) { adr0++; inf=0; } break; case '$': case '&': case '@': if(buf[adr+1]!=' ') { for(i=0; i<9; i++) shifr[i]=' '; for(i=adr+1;;i++) { if(buf[i]==' '||buf[i]==''||buf[i]==''||buf[i]=='*') break; shifr[i-adr-1]=buf[i]; } for(i=0,ptr_c=c_ptr,dl=0; ia_ptr; jnum_ap; j++,a_ptr++,dl++) if(!strncmp(a_ptr->cipher,shifr,9)) { p_di_bl[adr0][inf].ind=dl; p_di_bl[adr0][inf].nomk=i; p_di_bl[adr0][inf].nomz=j; } } case '#': p_di_bl[adr0][inf].adr=adr; if(buf[adr+1]!=' ') { for(i=adr;;i++) if(buf[i]==''||buf[i]==''||buf[i]=='*') { p_di_bl[adr0][inf].column=i-adr; break; } switch(buf[adr]) { case '$': p_di_bl[adr0][inf].tip=1; break; case '&': p_di_bl[adr0][inf].tip=2; break; case '@': p_di_bl[adr0][inf].tip=3; break; case '#': p_di_bl[adr0][inf].tip=4; p_di_bl[adr0][inf].zn=(float)atof(&buf[adr+1]); break; } } inf++; break; default :break; } } close(fh); free(buf); //!! if(data <0 && print==0) data*=-1; form_doc_eq(data); free(p_di_bl); //!! free(p_st_bl); //!! } return 0; } //-------------------------------------------------------------------