|
|
1.1 ! root 1: /* MAKEHELP.C */ ! 2: ! 3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */ ! 4: ! 5: /* Makes SCFG.HLP for Synchronet configuration program */ ! 6: ! 7: #include <stdio.h> ! 8: #include <string.h> ! 9: #include <fcntl.h> ! 10: #include <sys/stat.h> ! 11: #if defined(__unix__) ! 12: #include <unistd.h> /* write */ ! 13: #define O_BINARY 0 ! 14: #else ! 15: #include <io.h> /* open */ ! 16: #endif ! 17: ! 18: int main(int argc, char **argv) ! 19: { ! 20: char *dir="."; ! 21: char *files[]={ ! 22: "scfg.c" ! 23: ,"scfgsys.c" ! 24: ,"scfgmsg.c" ! 25: ,"scfgsub.c" ! 26: ,"scfgnode.c" ! 27: ,"scfgchat.c" ! 28: ,"scfgxfr1.c" ! 29: ,"scfgxfr2.c" ! 30: ,"scfgnet.c" ! 31: ,"scfgxtrn.c" ! 32: ,NULL }; ! 33: char str[256],tmp[256]; ! 34: int i,j,k,ixb; ! 35: unsigned short line; ! 36: long l; ! 37: FILE *stream,*out; ! 38: ! 39: if(argc>1) ! 40: dir=argv[1]; ! 41: ! 42: sprintf(str,"%s/scfghelp.dat",dir); ! 43: if((out=fopen(str,"wb"))==NULL) { ! 44: fprintf(stderr,"!error opening %s\n",str); ! 45: return(-1); } ! 46: ! 47: sprintf(str,"%s/scfghelp.ixb",dir); ! 48: if((ixb=open(str,O_WRONLY|O_CREAT|O_BINARY,S_IWRITE|S_IREAD))==-1) { ! 49: fprintf(stderr,"!error opening %s\n",str); ! 50: return(-1); } ! 51: ! 52: for(i=0;files[i];i++) { ! 53: if((stream=fopen(files[i],"rb"))==NULL) { ! 54: fprintf(stderr,"!error opening %s\r\n",files[i]); ! 55: return(-3); } ! 56: printf("\r\nIndexing %s ...",files[i]); ! 57: line=0; ! 58: while(!feof(stream)) { ! 59: if(!fgets(str,128,stream)) ! 60: break; ! 61: line++; ! 62: if(strstr(str,"SETHELP(WHERE);")) { ! 63: /* printf("%s:%u\n",files[i],line); */ ! 64: l=ftell(out); ! 65: write(ixb,files[i],12); ! 66: write(ixb,&line,2); ! 67: write(ixb,&l,4); ! 68: fgets(str,128,stream); /* skip start comment */ ! 69: line++; ! 70: while(!feof(stream)) { ! 71: if(!fgets(str,128,stream)) ! 72: break; ! 73: if(strchr(str,9)) { /* Tab expansion */ ! 74: strcpy(tmp,str); ! 75: k=strlen(tmp); ! 76: for(j=l=0;j<k;j++) { ! 77: if(tmp[j]==9) { ! 78: str[l++]=32; ! 79: while(l%4) ! 80: str[l++]=32; } ! 81: else ! 82: str[l++]=tmp[j]; } ! 83: str[l]=0; } ! 84: line++; ! 85: if(strstr(str,"*/")) /* end comment */ ! 86: break; ! 87: fputs(str,out); } ! 88: fputc(0,out); } } ! 89: fclose(stream); } ! 90: fclose(out); ! 91: printf("\n"); ! 92: return(0); ! 93: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.