|
|
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