|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T m
Length: 2698 (0xa8a) Types: TextFile Names: »multitang.ch«
└─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦c319c2751⟧ »unix3.0/TeX3.0.tar.Z« └─⟦036c765ac⟧ └─⟦this⟧ »TeX3.0/Spiderweb/master/multitang.ch« └─⟦52210d11f⟧ Bits:30007239 EUUGD2: TeX 3 1992-12 └─⟦63303ae94⟧ »unix3.14/TeX3.14.tar.Z« └─⟦c58930e5c⟧ └─⟦this⟧ »TeX3.14/Spiderweb/master/multitang.ch«
@x 423 output: @y output. We have made some modifications to \.{TANGLE} so it will write output on multiple files. We do this very simply: if a module name is introduced by \.{@@(} instead of \.{@@<}, we treat it as the name of a file. All these special modules are saved on a stack, |output_files|. We write them out after we've done the unnamed module. @z @x 425 @c @y @d max_files 256 @<Glob...@>= name_pointer output_files[max_files]; name_pointer *cur_file, *end_output_files; char cur_module_char; /* is it |'<'| or |'('| */ char output_file_name[longest_name]; /* name of the file */ @ We make |end_output_files| point jsut beyond the end of |output_files|. |cur_file| starts out there. Every time we see a new file, we decrement |cur_file| and then write it in. @<Set initial...@>= cur_file=end_output_files=output_files+max_files; @ @<Add |cur_module| to the output file stack, or complain we're out of room@>= { if (cur_file>output_files) *--curfile=cur_module; else { overflow("output files"); } } @ Here is the output switch, then... @c @z @x 434 printf("\nWriting the output file"); update_terminal; @y printf("\nWriting the output files: (%s)",C_file_name); update_terminal; @z @x 438 printf("\nDone."); @y @<Write all the named output files@> printf("\nDone."); @z @x 442 @ First we go through the list of replacement texts and copy the ones @y @ To write the named output files, we proceed as for the unnamed module. The only subtlety is that we have to open each one. @<Write all the named output files@>= for (;cur_file<end_output_files; cur_file++) { strncpy(output_file_name,(*curfile)->byte_start, longest_name); output_file_name[length(*curfile)]='\0'; fclose(C_file); C_file=fopen(output_file_name,"w"); if (C_file <=0) { fatal("! Cannot open output file:",output_file_name) } else { printf("(%s)",output_file_name); update_terminal; } stack_ptr=stack+1; cur_name= (*cur_file); cur_repl= cur_name->equiv_or_xref; cur_byte=cur_repl->tok_start; cur_end=(cur_repl+1)->tok_start; /* cur_mod= it */; while (stack_ptr > stack) get_output(); flush_buffer(); } @ First we go through the list of replacement texts and copy the ones @z @x 575 ccode['&']=join; ccode['<']=module_name; @y ccode['&']=join; ccode['<']=ccode['(']=module_name; @z @x 778 case module_name: @<Scan the module name and make |cur_module| point to it@>; @y case module_name: cur_module_char=*(loc-1); @<Scan the module name and make |cur_module| point to it@>; @z @x 803 return(module_name); @y if (cur_module_char=='(') { @<Add |cur_module| to the output file stack, or complain we're out of room@> } return(module_name); @z