From 50f43a1ab6f142722d1a8f0ec5cecd1c1eeb5d93 Mon Sep 17 00:00:00 2001 From: Peter Breitenlohner Date: Wed, 12 Feb 2014 08:50:58 +0000 Subject: web2c: ctangle, ctie, and tie: Handle input files with CRLF git-svn-id: svn://tug.org/texlive/trunk@32948 c570f23f-e606-0410-a88d-b1316a301751 --- .../source/texk/texlive/linked_scripts/scripts.lst | 1 + Build/source/texk/web2c/ctiedir/ChangeLog | 4 + Build/source/texk/web2c/ctiedir/ctie-k.ch | 14 +++ Build/source/texk/web2c/cwebboot.cin | 106 +++++++++++---------- Build/source/texk/web2c/cwebboot.hin | 20 ++-- Build/source/texk/web2c/cwebdir/ChangeLog | 4 + Build/source/texk/web2c/cwebdir/comm-w2c.ch | 6 ++ Build/source/texk/web2c/luatexdir/ChangeLog | 2 +- Build/source/texk/web2c/tiedir/ChangeLog | 4 + Build/source/texk/web2c/tiedir/tie-w2c.ch | 14 ++- 10 files changed, 111 insertions(+), 64 deletions(-) (limited to 'Build/source/texk') diff --git a/Build/source/texk/texlive/linked_scripts/scripts.lst b/Build/source/texk/texlive/linked_scripts/scripts.lst index d61415314c8..6286f7b7099 100644 --- a/Build/source/texk/texlive/linked_scripts/scripts.lst +++ b/Build/source/texk/texlive/linked_scripts/scripts.lst @@ -96,6 +96,7 @@ ptex2pdf/ptex2pdf.lua purifyeps/purifyeps pythontex/pythontex.py pythontex/depythontex.py +rubik/rubikrotation.pl splitindex/splitindex.pl sty2dtx/sty2dtx.pl svn-multi/svn-multi.pl diff --git a/Build/source/texk/web2c/ctiedir/ChangeLog b/Build/source/texk/web2c/ctiedir/ChangeLog index 4c5001aafe5..9e16d1d1e91 100644 --- a/Build/source/texk/web2c/ctiedir/ChangeLog +++ b/Build/source/texk/web2c/ctiedir/ChangeLog @@ -1,3 +1,7 @@ +2014-02-12 Peter Breitenlohner + + * ctie-k.ch: Handle input lines with CRLF. + 2013-06-28 Peter Breitenlohner * ctie-k.ch: Include after . diff --git a/Build/source/texk/web2c/ctiedir/ctie-k.ch b/Build/source/texk/web2c/ctiedir/ctie-k.ch index b527aa373ea..ebb0fa0d910 100644 --- a/Build/source/texk/web2c/ctiedir/ctie-k.ch +++ b/Build/source/texk/web2c/ctiedir/ctie-k.ch @@ -151,6 +151,20 @@ static boolean get_line (file_index i, boolean do_includes) @z +Handle input lines with CRLF + +@x l.376 + if ((*(k++) = c) != ' ') inp_desc->limit = k; +@y + if ((*(k++) = c) != ' ' && c != '\r') inp_desc->limit = k; +@z + +@x l.436 + if ((*(k++) = c) != ' ') inp_desc->limit = k; +@y + if ((*(k++) = c) != ' ' && c != '\r') inp_desc->limit = k; +@z + The next piece is simplified using the kpathsea kpse_find_file function. diff --git a/Build/source/texk/web2c/cwebboot.cin b/Build/source/texk/web2c/cwebboot.cin index ef2ce2c0dd1..dfe81a7c209 100644 --- a/Build/source/texk/web2c/cwebboot.cin +++ b/Build/source/texk/web2c/cwebboot.cin @@ -18,7 +18,7 @@ /*:8*//*22:*/ #line 471 "cwebdir/common.w" -#line 187 "cwebdir/comm-w2c.ch" +#line 193 "cwebdir/comm-w2c.ch" #include #include #include "help.h" @@ -226,7 +226,7 @@ name_pointer hash[hash_size]; hash_pointer hash_end= hash+hash_size-1; hash_pointer h; -#line 313 "cwebdir/comm-w2c.ch" +#line 319 "cwebdir/comm-w2c.ch" /*:34*//*58:*/ #line 1082 "cwebdir/common.w" @@ -250,7 +250,7 @@ FILE*C_file; FILE*tex_file; FILE*idx_file; FILE*scn_file; -#line 699 "cwebdir/comm-w2c.ch" +#line 705 "cwebdir/comm-w2c.ch" FILE*active_file; char*found_filename; #line 1376 "cwebdir/common.w" @@ -276,14 +276,14 @@ char*change_limit; /*55:*/ #line 1017 "cwebdir/common.w" -#line 487 "cwebdir/comm-w2c.ch" +#line 493 "cwebdir/comm-w2c.ch" static int section_name_cmp(char**,int,name_pointer); #line 1019 "cwebdir/common.w" /*:55*//*71:*/ #line 1251 "cwebdir/common.w" -#line 616 "cwebdir/comm-w2c.ch" +#line 622 "cwebdir/comm-w2c.ch" static void scan_args(void); #line 1253 "cwebdir/common.w" @@ -322,7 +322,7 @@ root= NULL; #line 65 "cwebdir/comm-w2c.ch" ; /*24:*/ -#line 222 "cwebdir/comm-w2c.ch" +#line 228 "cwebdir/comm-w2c.ch" kpse_set_program_name(argv[0],"cweb"); #line 473 "cwebdir/common.w" @@ -334,7 +334,7 @@ kpse_set_program_name(argv[0],"cweb"); /*70:*/ #line 1233 "cwebdir/common.w" -#line 608 "cwebdir/comm-w2c.ch" +#line 614 "cwebdir/comm-w2c.ch" show_banner= show_happiness= show_progress= 1; #line 1235 "cwebdir/common.w" @@ -346,14 +346,14 @@ show_banner= show_happiness= show_progress= 1; scan_args(); if(program==ctangle){ -#line 708 "cwebdir/comm-w2c.ch" +#line 714 "cwebdir/comm-w2c.ch" if((C_file= fopen(C_file_name,"wb"))==NULL) #line 1381 "cwebdir/common.w" fatal("! Cannot open output file ",C_file_name); } else{ -#line 714 "cwebdir/comm-w2c.ch" +#line 720 "cwebdir/comm-w2c.ch" if((tex_file= fopen(tex_file_name,"wb"))==NULL) #line 1386 "cwebdir/common.w" fatal("! Cannot open output file ",tex_file_name); @@ -376,7 +376,9 @@ register char*k; if(feof(fp))return(0); limit= k= buffer; while(k<=buffer_end&&(c= getc(fp))!=EOF&&c!='\n') -if((*(k++)= c)!=' ')limit= k; +#line 99 "cwebdir/comm-w2c.ch" +if((*(k++)= c)!=' '&&c!='\r')limit= k; +#line 182 "cwebdir/common.w" if(k> buffer_end) if((c= getc(fp))!=EOF&&c!='\n'){ ungetc(c,fp);loc= buffer;err_print("! Input line too long"); @@ -390,7 +392,7 @@ return(1); /*:9*//*12:*/ #line 251 "cwebdir/common.w" -#line 115 "cwebdir/comm-w2c.ch" +#line 121 "cwebdir/comm-w2c.ch" static void prime_the_change_buffer(void) #line 254 "cwebdir/common.w" @@ -447,7 +449,7 @@ strncpy(change_buffer,buffer,limit-buffer+1); /*:12*//*16:*/ #line 320 "cwebdir/common.w" -#line 125 "cwebdir/comm-w2c.ch" +#line 131 "cwebdir/comm-w2c.ch" static void check_change(void) #line 323 "cwebdir/common.w" @@ -519,7 +521,7 @@ if(lines_dont_match)n++; #line 378 "cwebdir/common.w" void -#line 134 "cwebdir/comm-w2c.ch" +#line 140 "cwebdir/comm-w2c.ch" reset_input(void) #line 381 "cwebdir/common.w" { @@ -527,7 +529,7 @@ limit= buffer;loc= buffer+1;buffer[0]= ' '; /*19:*/ #line 393 "cwebdir/common.w" -#line 146 "cwebdir/comm-w2c.ch" +#line 152 "cwebdir/comm-w2c.ch" if((found_filename= kpse_find_cweb(web_file_name))==NULL|| (web_file= fopen(found_filename,"r"))==NULL){ fatal("! Cannot open input file ",web_file_name); @@ -539,7 +541,7 @@ free(found_filename); web_file_open= 1; -#line 159 "cwebdir/comm-w2c.ch" +#line 165 "cwebdir/comm-w2c.ch" if((found_filename= kpse_find_cweb(change_file_name))==NULL|| (change_file= fopen(found_filename,"r"))==NULL){ fatal("! Cannot open change file ",change_file_name); @@ -561,7 +563,7 @@ limit= buffer;loc= buffer+1;buffer[0]= ' ';input_has_ended= 0; /*:18*//*21:*/ #line 426 "cwebdir/common.w" -#line 179 "cwebdir/comm-w2c.ch" +#line 185 "cwebdir/comm-w2c.ch" int get_line(void) #line 428 "cwebdir/common.w" { @@ -645,7 +647,7 @@ include_depth++; /*25:*/ #line 474 "cwebdir/common.w" { -#line 235 "cwebdir/comm-w2c.ch" +#line 241 "cwebdir/comm-w2c.ch" char*cur_file_name_end= cur_file_name+max_file_name_length-1; char*k= cur_file_name; #line 479 "cwebdir/common.w" @@ -659,7 +661,7 @@ while(*loc!=' '&&*loc!='\t'&&*loc!='"'&&k<=cur_file_name_end)*k++= *loc++; if(k> cur_file_name_end)too_long(); *k= '\0'; -#line 242 "cwebdir/comm-w2c.ch" +#line 248 "cwebdir/comm-w2c.ch" if((found_filename= kpse_find_cweb(cur_file_name))!=NULL&& (cur_file= fopen(found_filename,"r"))!=NULL){ @@ -686,7 +688,7 @@ return 1; #line 569 "cwebdir/common.w" void -#line 286 "cwebdir/comm-w2c.ch" +#line 292 "cwebdir/comm-w2c.ch" check_complete(void){ #line 572 "cwebdir/common.w" if(change_limit!=change_buffer){ @@ -702,14 +704,14 @@ err_print("! Change file entry did not match"); #line 660 "cwebdir/common.w" name_pointer -#line 325 "cwebdir/comm-w2c.ch" +#line 331 "cwebdir/comm-w2c.ch" id_lookup(const char*first,const char*last,char t) #line 666 "cwebdir/common.w" { -#line 332 "cwebdir/comm-w2c.ch" -const char*i= first; #line 338 "cwebdir/comm-w2c.ch" +const char*i= first; +#line 344 "cwebdir/comm-w2c.ch" int h; #line 669 "cwebdir/common.w" int l; @@ -719,7 +721,7 @@ l= last-first; /*38:*/ #line 683 "cwebdir/common.w" -#line 347 "cwebdir/comm-w2c.ch" +#line 353 "cwebdir/comm-w2c.ch" h= (unsigned char)*i; while(++ilink; if(p==NULL){ p= name_ptr; -#line 362 "cwebdir/comm-w2c.ch" +#line 368 "cwebdir/comm-w2c.ch" p->link= hash[h];hash[h]= p; #line 697 "cwebdir/common.w" } @@ -765,7 +767,7 @@ return(p); #line 764 "cwebdir/common.w" void -#line 381 "cwebdir/comm-w2c.ch" +#line 387 "cwebdir/comm-w2c.ch" print_section_name(name_pointer p) #line 768 "cwebdir/common.w" { @@ -787,7 +789,7 @@ if(q)term_write("...",3); #line 783 "cwebdir/common.w" void -#line 391 "cwebdir/comm-w2c.ch" +#line 397 "cwebdir/comm-w2c.ch" sprint_section_name(char*dest,name_pointer p) #line 788 "cwebdir/common.w" { @@ -809,7 +811,7 @@ s= p->byte_start; /*:45*//*46:*/ #line 804 "cwebdir/common.w" -#line 401 "cwebdir/comm-w2c.ch" +#line 407 "cwebdir/comm-w2c.ch" static void print_prefix_name(name_pointer p) #line 808 "cwebdir/common.w" @@ -823,13 +825,13 @@ if(s+l<(p+1)->byte_start)term_write("...",3); /*:46*//*47:*/ #line 825 "cwebdir/common.w" -#line 412 "cwebdir/comm-w2c.ch" +#line 418 "cwebdir/comm-w2c.ch" static int web_strcmp(char*j,int j_len,char*k,int k_len) #line 829 "cwebdir/common.w" { -#line 424 "cwebdir/comm-w2c.ch" +#line 430 "cwebdir/comm-w2c.ch" char*j1= j+j_len,*k1= k+k_len; while(kllink= p):(par->rlink= p); /*:49*//*50:*/ #line 884 "cwebdir/common.w" -#line 467 "cwebdir/comm-w2c.ch" +#line 473 "cwebdir/comm-w2c.ch" static void extend_section_name(name_pointer p,char*first,char*last,int ispref) #line 891 "cwebdir/common.w" @@ -895,7 +897,7 @@ if(ispref)*(byte_ptr-1)= ' '; #line 912 "cwebdir/common.w" name_pointer -#line 478 "cwebdir/comm-w2c.ch" +#line 484 "cwebdir/comm-w2c.ch" section_lookup(char*first,char*last,int ispref) #line 917 "cwebdir/common.w" @@ -988,7 +990,7 @@ return r; /*:51*//*56:*/ #line 1020 "cwebdir/common.w" -#line 498 "cwebdir/comm-w2c.ch" +#line 504 "cwebdir/comm-w2c.ch" static int section_name_cmp(char**pfirst,int len,name_pointer r) #line 1025 "cwebdir/common.w" @@ -1023,7 +1025,7 @@ default:return c; #line 1095 "cwebdir/common.w" void -#line 518 "cwebdir/comm-w2c.ch" +#line 524 "cwebdir/comm-w2c.ch" err_print(const char*s) #line 1099 "cwebdir/common.w" { @@ -1058,7 +1060,7 @@ update_terminal;mark_error; /*:60*//*63:*/ #line 1150 "cwebdir/common.w" -#line 538 "cwebdir/comm-w2c.ch" +#line 544 "cwebdir/comm-w2c.ch" int wrap_up(void){ #line 1152 "cwebdir/common.w" putchar('\n'); @@ -1086,7 +1088,7 @@ else return(0); /*:63*//*66:*/ #line 1179 "cwebdir/common.w" void -#line 558 "cwebdir/comm-w2c.ch" +#line 564 "cwebdir/comm-w2c.ch" fatal(const char*s,const char*t) #line 1182 "cwebdir/common.w" { @@ -1098,7 +1100,7 @@ history= fatal_message;exit(wrap_up()); /*:66*//*67:*/ #line 1190 "cwebdir/common.w" void -#line 567 "cwebdir/comm-w2c.ch" +#line 573 "cwebdir/comm-w2c.ch" overflow(const char*t) #line 1193 "cwebdir/common.w" { @@ -1109,7 +1111,7 @@ printf("\n! Sorry, %s capacity exceeded",t);fatal("",""); /*:67*//*72:*/ #line 1254 "cwebdir/common.w" -#line 626 "cwebdir/comm-w2c.ch" +#line 632 "cwebdir/comm-w2c.ch" static void scan_args(void) #line 1257 "cwebdir/common.w" @@ -1123,40 +1125,40 @@ boolean flag_change; while(--argc> 0){ if((**(++argv)=='-'||**argv=='+')&&*(*argv+1))/*76:*/ -#line 651 "cwebdir/comm-w2c.ch" +#line 657 "cwebdir/comm-w2c.ch" { if(strcmp("-help",*argv)==0||strcmp("--help",*argv)==0) /*86:*/ -#line 766 "cwebdir/comm-w2c.ch" +#line 772 "cwebdir/comm-w2c.ch" usagehelp(program==ctangle?CTANGLEHELP:CWEAVEHELP,NULL); /*:86*/ -#line 654 "cwebdir/comm-w2c.ch" +#line 660 "cwebdir/comm-w2c.ch" ; if(strcmp("-version",*argv)==0||strcmp("--version",*argv)==0) /*87:*/ -#line 775 "cwebdir/comm-w2c.ch" +#line 781 "cwebdir/comm-w2c.ch" printversionandexit((program==ctangle?ctangle_banner:cweave_banner), "Silvio Levy and Donald E. Knuth",NULL,NULL); /*:87*/ -#line 656 "cwebdir/comm-w2c.ch" +#line 662 "cwebdir/comm-w2c.ch" ; #line 1346 "cwebdir/common.w" if(**argv=='-')flag_change= 0; -#line 662 "cwebdir/comm-w2c.ch" +#line 668 "cwebdir/comm-w2c.ch" else flag_change= 1; if(*(*argv+1)=='d') if(sscanf(*argv+2,"%u",&kpathsea_debug)!=1)/*77:*/ #line 1352 "cwebdir/common.w" { -#line 685 "cwebdir/comm-w2c.ch" +#line 691 "cwebdir/comm-w2c.ch" if(program==ctangle){ fprintf(stderr,"ctangle: Need one to three file arguments.\n"); usage("ctangle"); @@ -1168,11 +1170,11 @@ usage("cweave"); } /*:77*/ -#line 664 "cwebdir/comm-w2c.ch" +#line 670 "cwebdir/comm-w2c.ch" ; #line 1348 "cwebdir/common.w" for(dot_pos= *argv+1;*dot_pos> '\0';dot_pos++) -#line 670 "cwebdir/comm-w2c.ch" +#line 676 "cwebdir/comm-w2c.ch" flags[(unsigned char)*dot_pos]= flag_change; #line 1350 "cwebdir/common.w" } @@ -1272,7 +1274,7 @@ sprintf(scn_file_name,"%s.scn",*argv); found_out= 1; } -#line 651 "cwebdir/comm-w2c.ch" +#line 657 "cwebdir/comm-w2c.ch" /*:75*/ #line 1277 "cwebdir/common.w" @@ -1280,7 +1282,7 @@ else/*77:*/ #line 1352 "cwebdir/common.w" { -#line 685 "cwebdir/comm-w2c.ch" +#line 691 "cwebdir/comm-w2c.ch" if(program==ctangle){ fprintf(stderr,"ctangle: Need one to three file arguments.\n"); usage("ctangle"); @@ -1300,7 +1302,7 @@ if(!found_web)/*77:*/ #line 1352 "cwebdir/common.w" { -#line 685 "cwebdir/comm-w2c.ch" +#line 691 "cwebdir/comm-w2c.ch" if(program==ctangle){ fprintf(stderr,"ctangle: Need one to three file arguments.\n"); usage("ctangle"); @@ -1314,7 +1316,7 @@ usage("cweave"); /*:77*/ #line 1281 "cwebdir/common.w" ; -#line 636 "cwebdir/comm-w2c.ch" +#line 642 "cwebdir/comm-w2c.ch" if(found_change<=0)strcpy(change_file_name,DEV_NULL); #line 1283 "cwebdir/common.w" } diff --git a/Build/source/texk/web2c/cwebboot.hin b/Build/source/texk/web2c/cwebboot.hin index 8d732dd28f1..1e9e1edbaa3 100644 --- a/Build/source/texk/web2c/cwebboot.hin +++ b/Build/source/texk/web2c/cwebboot.hin @@ -1,49 +1,49 @@ /*84:*/ -#line 755 "cwebdir/comm-w2c.ch" +#line 761 "cwebdir/comm-w2c.ch" /* Prototypes for functions, either * declared in common.w and used in ctangle.w and cweave.w, or * used in common.w and declared in ctangle.w and cweave.w. */ /*35:*/ -#line 313 "cwebdir/comm-w2c.ch" +#line 319 "cwebdir/comm-w2c.ch" extern int names_match(name_pointer,const char*,int,char); #line 652 "cwebdir/common.w" /*:35*//*40:*/ -#line 371 "cwebdir/comm-w2c.ch" +#line 377 "cwebdir/comm-w2c.ch" extern void init_p(name_pointer p,char t); #line 705 "cwebdir/common.w" /*:40*//*48:*/ -#line 437 "cwebdir/comm-w2c.ch" +#line 443 "cwebdir/comm-w2c.ch" extern void init_node(name_pointer node); #line 854 "cwebdir/common.w" /*:48*//*59:*/ -#line 508 "cwebdir/comm-w2c.ch" +#line 514 "cwebdir/comm-w2c.ch" extern void err_print(const char*); #line 1094 "cwebdir/common.w" /*:59*//*62:*/ -#line 528 "cwebdir/comm-w2c.ch" +#line 534 "cwebdir/comm-w2c.ch" extern int wrap_up(void); extern void print_stats(void); #line 1143 "cwebdir/common.w" /*:62*//*65:*/ -#line 547 "cwebdir/comm-w2c.ch" +#line 553 "cwebdir/comm-w2c.ch" extern void fatal(const char*,const char*); extern void overflow(const char*); #line 1175 "cwebdir/common.w" /*:65*//*83:*/ -#line 736 "cwebdir/comm-w2c.ch" +#line 742 "cwebdir/comm-w2c.ch" extern void common_init(void); extern int input_ln(FILE*fp); @@ -56,9 +56,9 @@ extern void sprint_section_name(char*dest,name_pointer p); extern name_pointer section_lookup(char*first,char*last,int ispref); #line 1417 "cwebdir/common.w" -#line 751 "cwebdir/comm-w2c.ch" +#line 757 "cwebdir/comm-w2c.ch" /*:83*/ -#line 759 "cwebdir/comm-w2c.ch" +#line 765 "cwebdir/comm-w2c.ch" extern const char*versionstring; diff --git a/Build/source/texk/web2c/cwebdir/ChangeLog b/Build/source/texk/web2c/cwebdir/ChangeLog index a218edfebdb..c1d40c72915 100644 --- a/Build/source/texk/web2c/cwebdir/ChangeLog +++ b/Build/source/texk/web2c/cwebdir/ChangeLog @@ -1,3 +1,7 @@ +2014-02-12 Peter Breitenlohner + + * comm-w2c.ch: Handle input lines with CRLF. + 2013-07-02 Peter Breitenlohner * comm-w2c.ch: Include system headers after "cpascal.h". diff --git a/Build/source/texk/web2c/cwebdir/comm-w2c.ch b/Build/source/texk/web2c/cwebdir/comm-w2c.ch index 61475576a3c..07a945b69b2 100644 --- a/Build/source/texk/web2c/cwebdir/comm-w2c.ch +++ b/Build/source/texk/web2c/cwebdir/comm-w2c.ch @@ -93,6 +93,12 @@ FILE *fp; /* what file to read from */ int input_ln (FILE *fp) /* copies a line into |buffer| or returns 0 */ @z +@x l.181 + if ((*(k++) = c) != ' ') limit = k; +@y + if ((*(k++) = c) != ' ' && c!='\r') limit = k; +@z + Section 10. @x l.207 - max_file_name_length is way too small. diff --git a/Build/source/texk/web2c/luatexdir/ChangeLog b/Build/source/texk/web2c/luatexdir/ChangeLog index 15b080d21e6..6b3356a62a1 100644 --- a/Build/source/texk/web2c/luatexdir/ChangeLog +++ b/Build/source/texk/web2c/luatexdir/ChangeLog @@ -1,7 +1,7 @@ 2014-02-11 Peter Breitenlohner * lua/luanode.w, tex/linebreak.w, tex/mlist.w, - tex/texnodes.w, tex/textoken.w: Convert line ends Dos=>native. + tex/texnodes.w, tex/textoken.w: Convert CRLF => NL. 2014-02-11 Akira Kakuto diff --git a/Build/source/texk/web2c/tiedir/ChangeLog b/Build/source/texk/web2c/tiedir/ChangeLog index 780fb8771e7..8bc990c1af7 100644 --- a/Build/source/texk/web2c/tiedir/ChangeLog +++ b/Build/source/texk/web2c/tiedir/ChangeLog @@ -1,3 +1,7 @@ +2014-02-12 Peter Breitenlohner + + * tie-w2c.ch: Handle input lines with CRLF. + 2012-05-18 Peter Breitenlohner * tie-w2c.ch: Use binary mode for output files. diff --git a/Build/source/texk/web2c/tiedir/tie-w2c.ch b/Build/source/texk/web2c/tiedir/tie-w2c.ch index df384da9669..37d5bd7b21d 100644 --- a/Build/source/texk/web2c/tiedir/tie-w2c.ch +++ b/Build/source/texk/web2c/tiedir/tie-w2c.ch @@ -38,7 +38,7 @@ typedef char* string; #define usage tieusage @z -@x +@x l.617 void get_line(i) file_index i; @y @@ -46,6 +46,18 @@ static void get_line (file_index i) @z +@x l.650 +replacement part of a change file, or in an incomplerte check if the +@y +replacement part of a change file, or in an incomplete check if the +@z + +@x l.667 + if (c!=@' ' && c!=tab_mark) +@y + if (c!=@' ' && c!=tab_mark && c!=@'\r') +@z + @x l.745 void err_loc(i) /* prints location of error */ int i; -- cgit v1.2.3