//#! cint // length.cxx // // Limit C++ source length to certain number // Usage: cint length.cxx [length] file1 file2 ... // const int MAXLINE = 10000; int length=255; /////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////// int separateline(char* buf,FILE* ofp) { int i,j=0,pos=0,prev=0; int single_quote=0, double_quote=0; int len = strlen(buf); for(i=0;i=length && pos) { buf[pos] = 0; fprintf(ofp,"%s\n",buf+prev); buf[pos] = ','; prev = pos; j=0; } else { ++j; } } fprintf(ofp,"%s\n",buf+prev); } /////////////////////////////////////////////////////////// // CheckLength /////////////////////////////////////////////////////////// int CheckLength(char* fname) { int flag=0; FILE* fp = fopen(fname,"rb"); if(!fp) return(0); FILE* ofp = fopen("G__temp","wb"); if(!ofp) { fclose(fp); fprintf(stderr,"Error: output flie can not open\n"); return(0); } char buf[MAXLINE]; char* null_fgets; for(;;) { null_fgets=fgets(buf,MAXLINE,fp); if(null_fgets) { char *p = strchr(buf,'\n'); if(p) *p=0; if(strlen(buf)>length) { separateline(buf,ofp); ++flag; } else fprintf(ofp,"%s\n",buf); } else break; } fclose(fp); fclose(ofp); if(flag) rename("G__temp",fname); else remove("G__temp"); } /////////////////////////////////////////////////////////// // main /////////////////////////////////////////////////////////// int main(int argc,char** argv) { if(argc<3) { fprintf(stderr,"Usage: length.cxx [length] [file1] >\n"); exit(1); } length = atoi(argv[1]); for(int i=2;i