void #line 103 "./cwebdir/comm-w2c.ch" reset_input P1H(void) #line 381 "./cwebdir/common.w" { limit= buffer;loc= buffer+1;buffer[0]= ' '; /*19:*/ #line 393 "./cwebdir/common.w" #line 115 "./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); }else if(strlen(found_filename)<max_file_name_length){ strcpy(web_file_name,found_filename); free(found_filename); } #line 399 "./cwebdir/common.w" web_file_open= 1; #line 128 "./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); }else if(strlen(found_filename)<max_file_name_length){ strcpy(change_file_name,found_filename); free(found_filename); } #line 404 "./cwebdir/common.w" /*:19*/ #line 383 "./cwebdir/common.w" ; include_depth= 0;cur_line= 0;change_line= 0; change_depth= include_depth; changing= 1;prime_the_change_buffer();changing= !changing; limit= buffer;loc= buffer+1;buffer[0]= ' ';input_has_ended= 0; }
int get_line P1H(void) #line 428 "./cwebdir/common.w" { restart: if(changing&&include_depth==change_depth) /*27:*/ #line 537 "./cwebdir/common.w" { change_line++; if(!input_ln(change_file)){ err_print("! Change file ended without @z"); buffer[0]= '@';buffer[1]= 'z';limit= buffer+2; } if(limit> buffer){ if(change_pending){ if_section_start_make_pending(0); if(change_pending){ changed_section[section_count]= 1;change_pending= 0; } } *limit= ' '; if(buffer[0]=='@'){ if(xisupper(buffer[1]))buffer[1]= tolower(buffer[1]); if(buffer[1]=='x'||buffer[1]=='y'){ loc= buffer+2; err_print("! Where is the matching @z?"); } else if(buffer[1]=='z'){ prime_the_change_buffer();changing= !changing;print_where= 1; } } } } /*:27*/ #line 431 "./cwebdir/common.w" ; if(!changing||include_depth> change_depth){ /*26:*/ #line 520 "./cwebdir/common.w" { cur_line++; while(!input_ln(cur_file)){ print_where= 1; if(include_depth==0){input_has_ended= 1;break;} else{ fclose(cur_file);include_depth--; if(changing&&include_depth==change_depth)break; cur_line++; } } if(!changing&&!input_has_ended) if(limit-buffer==change_limit-change_buffer) if(buffer[0]==change_buffer[0]) if(change_limit> change_buffer)check_change(); } /*:26*/ #line 433 "./cwebdir/common.w" ; if(changing&&include_depth==change_depth)goto restart; } if(input_has_ended)return 0; loc= buffer;*limit= ' '; if(buffer[0]=='@'&&(buffer[1]=='i'||buffer[1]=='I')){ loc= buffer+2;*limit= '"'; while(*loc==' '||*loc=='\t')loc++; if(loc>=limit){ err_print("! Include file name not given"); goto restart; } if(include_depth>=max_include_depth-1){ err_print("! Too many nested includes"); goto restart; } include_depth++; /*25:*/ #line 474 "./cwebdir/common.w" { #line 200 "./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" if(*loc=='"'){ loc++; while(*loc!='"'&&k<=cur_file_name_end)*k++= *loc++; if(loc==limit)k= cur_file_name_end+1; }else while(*loc!=' '&&*loc!='\t'&&*loc!='"'&&k<=cur_file_name_end)*k++= *loc++; if(k> cur_file_name_end)too_long(); *k= '\0'; #line 207 "./cwebdir/comm-w2c.ch" if((found_filename= kpse_find_cweb(cur_file_name))!=NULL&& (cur_file= fopen(found_filename,"r"))!=NULL){ if(strlen(found_filename)<max_file_name_length){ strcpy(cur_file_name,found_filename); free(found_filename); } #line 490 "./cwebdir/common.w" cur_line= 0;print_where= 1; goto restart; } #line 517 "./cwebdir/common.w" include_depth--;err_print("! Cannot open include file");goto restart; } /*:25*/ #line 452 "./cwebdir/common.w" ; } return 1; }
int main P2C(int,argc,string*,argv) #line 104 "./ctie.w" { #line 38 "./ctie-k.ch" /*5:*/ #line 84 "./ctie-k.ch" kpse_set_program_name(argv[0],"ctie"); /*:5*/ #line 38 "./ctie-k.ch" ; /*19:*/ #line 300 "./ctie.w" actual_input= 0; out_mode= normal; /*:19*/ #line 39 "./ctie-k.ch" ; #line 106 "./ctie.w" /*63:*/ #line 1135 "./ctie.w" { if(argc> max_file_index+5-1)usage_error(); no_ch= -1; while(--argc> 0){ argv++; if(strcmp("-help",*argv)==0||strcmp("--help",*argv)==0) /*66:*/ #line 1202 "./ctie.w" usage_help(); /*:66*/ #line 1142 "./ctie.w" ; if(strcmp("-version",*argv)==0||strcmp("--version",*argv)==0) /*67:*/ #line 1208 "./ctie.w" { print_version_and_exit("CTIE",version_number); } /*:67*/ #line 1144 "./ctie.w" ; if(**argv=='-')/*64:*/ #line 1158 "./ctie.w" if(prod_chf!=unknown)usage_error(); else switch(*(*argv+1)){ case'c':case'C':prod_chf= chf;break; case'm':case'M':prod_chf= master;break; default:usage_error(); } /*:64*/ #line 1145 "./ctie.w" else/*65:*/ #line 1172 "./ctie.w" { if(no_ch==(-1)){ out_name= *argv; }else{ register input_description*inp_desc; inp_desc= (input_description*)malloc(sizeof(input_description)); if(inp_desc==NULL) fatal_error(-1,"! No memory for input descriptor",""); inp_desc->mode= search; inp_desc->line= 0; inp_desc->type_of_file= chf; inp_desc->limit= inp_desc->buffer; inp_desc->buffer[0]= ' '; inp_desc->loc= inp_desc->buffer+1; inp_desc->buffer_end= inp_desc->buffer+buf_size-2; inp_desc->file_name= *argv; inp_desc->current_include= NULL; input_organisation[no_ch]= inp_desc; } no_ch++; } /*:65*/ #line 1146 "./ctie.w" } if(no_ch<=0||prod_chf==unknown)usage_error(); } /*:63*/ #line 106 "./ctie.w" /*62:*/ #line 1118 "./ctie.w" #line 382 "./ctie-k.ch" { extern KPSEDLL string kpathsea_version_string; printf("%s (%s)\n",banner,kpathsea_version_string); } #line 1120 "./ctie.w" printf("%s\n",copyright); /*:62*/ #line 107 "./ctie.w" ; /*42:*/ #line 277 "./ctie-k.ch" { string fullname; fullname= kpse_find_cweb(input_organisation[0]->file_name); if(fullname) input_organisation[0]->the_file= fopen(fullname,"r"); if(fullname==NULL||input_organisation[0]->the_file==NULL){ if(fullname){ pfatal_error("! Cannot open master file ", input_organisation[0]->file_name); }else{ fatal_error(-1,"! Cannot find master file ", input_organisation[0]->file_name); } } else free(fullname); #line 759 "./ctie.w" printf("(%s)\n",input_organisation[0]->file_name); input_organisation[0]->type_of_file= master; get_line(0,true); } /*:42*/ #line 108 "./ctie.w" /*43:*/ #line 313 "./ctie-k.ch" { file_index i; string fullname; i= 1; while(i<no_ch){ fullname= kpse_find_cweb(input_organisation[i]->file_name); if(fullname) input_organisation[i]->the_file= fopen(fullname,"r"); if(fullname==NULL||input_organisation[i]->the_file==NULL){ if(fullname){ pfatal_error("! Cannot open change file ", input_organisation[i]->file_name); }else{ fatal_error(-1,"! Cannot find change file ", input_organisation[i]->file_name); } } else free(fullname); #line 780 "./ctie.w" printf("(%s)\n",input_organisation[i]->file_name); init_change_file(i); i++; } } /*:43*/ #line 109 "./ctie.w" /*40:*/ #line 729 "./ctie.w" { out_file= fopen(out_name,"w"); if(out_file==NULL){ pfatal_error("! Cannot open/create output file",""); } } /*:40*/ #line 110 "./ctie.w" /*59:*/ #line 1074 "./ctie.w" actual_input= 0; input_has_ended= false; while(input_has_ended==false||actual_input!=0) /*51:*/ #line 917 "./ctie.w" { file_index test_file; /*52:*/ #line 934 "./ctie.w" { register input_description*inp_desc; while(actual_input> 0&&e_of_ch_module(actual_input)){ inp_desc= input_organisation[actual_input]; if(inp_desc->type_of_file==master){ fatal_error(-1,"! This can't happen: change file is master file",""); } inp_desc->mode= search; init_change_file(actual_input); while((input_organisation[actual_input]->mode!=reading &&actual_input> 0)) actual_input--; } } /*:52*/ #line 921 "./ctie.w" if(input_has_ended&&actual_input==0)break; /*53:*/ #line 960 "./ctie.w" test_input= none; test_file= actual_input; while(test_input==none&&test_file<no_ch-1){ test_file++; switch(input_organisation[test_file]->mode){ case search: if(lines_dont_match(actual_input,test_file)==false){ input_organisation[test_file]->mode= test; test_input= test_file; } break; case test: if(lines_dont_match(actual_input,test_file)){ input_organisation[test_file]->dont_match++; } test_input= test_file; break; case reading: break; case ignore: break; } } /*:53*/ #line 923 "./ctie.w" /*54:*/ #line 993 "./ctie.w" if(prod_chf==chf){ while(1){ /*55:*/ #line 1007 "./ctie.w" if(out_mode==normal){ if(test_input!=none){ fprintf(out_file,"@x\n"); out_mode= pre; }else break; } /*:55*/ #line 996 "./ctie.w" /*56:*/ #line 1021 "./ctie.w" if(out_mode==pre){ if(test_input==none){ fprintf(out_file,"@y\n"); out_mode= post; }else{ if(input_organisation[actual_input]->type_of_file==master) put_line(actual_input); break; } } /*:56*/ #line 997 "./ctie.w" /*57:*/ #line 1040 "./ctie.w" if(out_mode==post){ if(input_organisation[actual_input]->type_of_file==chf){ if(test_input==none)put_line(actual_input); break; }else{ fprintf(out_file,"@z\n\n"); out_mode= normal; } } /*:57*/ #line 998 "./ctie.w" } }else if(test_input==none)put_line(actual_input); /*:54*/ #line 924 "./ctie.w" /*58:*/ #line 1055 "./ctie.w" get_line(actual_input,true); if(test_input!=none){ get_line(test_input,true); if(e_of_ch_preamble(test_input)==true){ get_line(test_input,true); input_organisation[test_input]->mode= reading; actual_input= test_input; test_input= none; } } /*:58*/ #line 925 "./ctie.w" } /*:51*/ #line 1078 "./ctie.w" if(out_mode==post) fprintf(out_file,"@z\n"); /*:59*/ #line 111 "./ctie.w" /*60:*/ #line 1087 "./ctie.w" { file_index i; for(i= 1;i<no_ch;i++){ if(input_organisation[i]->mode!=ignore){ input_organisation[i]->loc= input_organisation[i]->buffer; err_print(i,"! Change file entry did not match"); } } } /*:60*/ #line 112 "./ctie.w" exit(wrap_up()); }
boolean get_line P2C(file_index,i,boolean,do_includes) #line 331 "./ctie.w" { register input_description*inp_desc= input_organisation[i]; register FILE*fp; if(inp_desc->mode==ignore)return false; restart: if(inp_desc->current_include!=NULL){ register include_description*inc_desc= inp_desc->current_include; fp= inc_desc->the_file; /*26:*/ #line 426 "./ctie.w" { register int c; register char*k; if(feof(fp)) /*27:*/ #line 452 "./ctie.w" { include_description*temp= inc_desc->parent; fclose(fp); free(inc_desc); total_include_files--; inp_desc->current_include= temp; goto restart; } /*:27*/ #line 432 "./ctie.w" inp_desc->limit= k= inp_desc->buffer; while(k<=inp_desc->buffer_end&&(c= getc(fp))!=EOF&&c!='\n') if((*(k++)= c)!=' ')inp_desc->limit= k; if(k> inp_desc->buffer_end) if((c= getc(fp))!=EOF&&c!='\n'){ ungetc(c,fp);inp_desc->loc= inp_desc->buffer; err_print(i,"! Input line too long"); } if(c==EOF&&inp_desc->limit==inp_desc->buffer) /*27:*/ #line 452 "./ctie.w" { include_description*temp= inc_desc->parent; fclose(fp); free(inc_desc); total_include_files--; inp_desc->current_include= temp; goto restart; } /*:27*/ #line 444 "./ctie.w" inc_desc->line++; } /*:26*/ #line 342 "./ctie.w" } else{ fp= inp_desc->the_file; /*22:*/ #line 366 "./ctie.w" { register int c; register char*k; if(feof(fp)) /*23:*/ #line 394 "./ctie.w" { inp_desc->mode= ignore; inp_desc->limit= NULL; if(inp_desc->type_of_file==master)input_has_ended= true; fclose(fp); return false; } /*:23*/ #line 372 "./ctie.w" inp_desc->limit= k= inp_desc->buffer; while(k<=inp_desc->buffer_end&&(c= getc(fp))!=EOF&&c!='\n') if((*(k++)= c)!=' ')inp_desc->limit= k; if(k> inp_desc->buffer_end) if((c= getc(fp))!=EOF&&c!='\n'){ ungetc(c,fp);inp_desc->loc= inp_desc->buffer; err_print(i,"! Input line too long"); } if(c==EOF&&inp_desc->limit==inp_desc->buffer) /*23:*/ #line 394 "./ctie.w" { inp_desc->mode= ignore; inp_desc->limit= NULL; if(inp_desc->type_of_file==master)input_has_ended= true; fclose(fp); return false; } /*:23*/ #line 384 "./ctie.w" /*25:*/ #line 414 "./ctie.w" inp_desc->line++; if(inp_desc->type_of_file==master&&inp_desc->line%100==0){ if(inp_desc->line%500==0)printf("%ld",inp_desc->line); else putchar('.'); fflush(stdout); } /*:25*/ #line 387 "./ctie.w" } /*:22*/ #line 346 "./ctie.w" } if(do_includes) /*28:*/ #line 467 "./ctie.w" { inp_desc->loc= inp_desc->buffer; *inp_desc->limit= ' '; if(*inp_desc->buffer=='@'&& (inp_desc->buffer[1]=='i'||inp_desc->buffer[1]=='I')){ inp_desc->loc= inp_desc->buffer+2; *inp_desc->limit= '"'; while(*inp_desc->loc==' '||*inp_desc->loc=='\t') inp_desc->loc++; if(inp_desc->loc>=inp_desc->limit){ err_print(i,"! Include file name not given"); goto restart; } if(total_include_files>=max_include_files){ err_print(i,"! Too many nested includes"); goto restart; } total_include_files++; /*29:*/ #line 507 "./ctie.w" { include_description*new_inc; #line 166 "./ctie-k.ch" char*file_name_end; string fullname; char*k; #line 514 "./ctie.w" new_inc= (include_description*)malloc(sizeof(include_description)); if(new_inc==NULL) fatal_error(i,"! No memory for new include descriptor",""); new_inc->line= 0; k= new_inc->file_name; file_name_end= k+max_file_name_length-1; if(*inp_desc->loc=='"'){ inp_desc->loc++; while(*inp_desc->loc!='"'&&k<=file_name_end) *k++= *inp_desc->loc++; if(inp_desc->loc==inp_desc->limit) k= file_name_end+1; }else while(*inp_desc->loc!=' '&&*inp_desc->loc!='\t'&& *inp_desc->loc!='"'&&k<=file_name_end)*k++= *inp_desc->loc++; if(k> file_name_end)too_long(); *k= '\0'; #line 174 "./ctie-k.ch" fullname= kpse_find_cweb(new_inc->file_name); if(fullname) new_inc->the_file= fopen(fullname,"r"); if(fullname!=NULL&&new_inc->the_file!=NULL){ free(fullname); #line 535 "./ctie.w" new_inc->parent= inp_desc->current_include; inp_desc->current_include= new_inc; goto restart; } #line 563 "./ctie.w" total_include_files--; free(new_inc); #line 212 "./ctie-k.ch" if(fullname){ free(fullname); err_print(i,"! Cannot open include file"); }else err_print(i,"! Cannot find include file"); #line 566 "./ctie.w" goto restart; } /*:29*/ #line 488 "./ctie.w" ; } } /*:28*/ #line 351 "./ctie.w" return true; }