// recursive func! void dofile(void) { word incoff; word p; //open file //send to other routine //close file ch++; //below is almost impossible (mh=64) if (ch==mh) error("LIMIT:Too many include files(64) (increase mh in sources)\r\n"); h=open(file,O_BINARY|O_RDONLY); strcpy(buffn[ch],file); if (h==-1) { if (inc!=NULL) { incoff=0; while (h==-1) { if (!(*(inc+incoff))) break; p=0; while (*(inc+incoff)) { t2[p++]=*(inc+incoff++); if ((*(inc+incoff))==';') {incoff++;break;} } t2[p]=0; strcat(t2,"\\"); strcat(t2,file); h=open(t2,O_BINARY|O_RDONLY); } } if (h==-1) { sprintf(str,"Can't open file : %s\r\n",file); error(str); } } #ifdef DEBUG printf(" %s opened\n",file); #endif hs[ch]=h; bufin[ch]=(byte *)malloc(bufsiz); if ( ((dword) bufin[ch]) == ERROR ) error("Out of memory\n"); bufip[ch]=0; bufis[ch]=0; //size left bufln[ch]=0; //line # EOFF[ch]=0; prefile(); //pre process the file! free(bufin[ch]); close(h); #ifdef DEBUG printf(" closed\n"); #endif ch--; if (ch!=255) { h=hs[ch]; if (!h) { printf("Unknown error:h=0 ch=%d! \r\n",ch); exit(0); } } }