From ad547a6b5986815fda458221149728d9d9ab1d87 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 25 Feb 2021 19:22:25 +0000 Subject: restore Build,TODO from r57911 git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/texk/web2c/ctiedir/ctie.c | 1111 ++++++++++++++++++++++++++++++++ 1 file changed, 1111 insertions(+) create mode 100644 Build/source/texk/web2c/ctiedir/ctie.c (limited to 'Build/source/texk/web2c/ctiedir/ctie.c') diff --git a/Build/source/texk/web2c/ctiedir/ctie.c b/Build/source/texk/web2c/ctiedir/ctie.c new file mode 100644 index 00000000000..840c7800144 --- /dev/null +++ b/Build/source/texk/web2c/ctiedir/ctie.c @@ -0,0 +1,1111 @@ +#define version_number "1.1" +#define banner "This is CTIE, Version 1.1" +#define copyright \ +"Copyright 2002,2003 Julian Gilbey. All rights reserved. There is no warranty.\n\ +Run with the --version option for other important information." \ + \ + +#define false 0 +#define true 1 \ + +#define buf_size 1024 +#define max_file_index 32 \ + +#define xisupper(c) (isupper(c) &&((unsigned char) c<0200) ) \ + \ + +#define spotless 0 +#define troublesome 1 +#define fatal 2 \ + +#define max_include_files 20 \ + +#define max_file_name_length 60 \ + +#define too_long() {total_include_files--;free(new_inc) ; \ +err_print(i,"! Include file name too long") ;goto restart;} \ + +#define fatal_error(i,s,t) { \ +fprintf(stderr,"\n%s",s) ; \ +err_print(i,t) ; \ +history= fatal; \ +exit(wrap_up() ) ; \ +} \ + \ + +#define none (-1) \ + +/*2:*/ +#line 89 "./ctie.w" + +/*8:*/ +#line 172 "./ctie.w" + +#include + + +/*:8*//*9:*/ +#line 180 "./ctie.w" + +#ifdef __STDC__ +#include +#else +#include +#endif + + +/*:9*//*37:*/ +#line 715 "./ctie.w" + +#include + + +/*:37*/ +#line 90 "./ctie.w" + +/*4:*/ +#line 124 "./ctie.w" + +typedef int boolean; +typedef char*string; + + +/*:4*//*10:*/ +#line 211 "./ctie.w" + +#define search 0 +#define test 1 +#define reading 2 +#define ignore 3 +typedef int in_file_modes; +#define unknown 0 +#define master 1 +#define chf 2 +typedef int file_types; + + +/*:10*//*11:*/ +#line 229 "./ctie.w" + +#define normal 0 +#define pre 1 +#define post 2 +typedef int out_md_type; + + +/*:11*//*12:*/ +#line 239 "./ctie.w" + +typedef int file_index; + + +/*:12*//*13:*/ +#line 246 "./ctie.w" + +typedef struct _indsc{ +char file_name[max_file_name_length]; +long line; +FILE*the_file; +struct _indsc*parent; +}include_description; + + +/*:13*//*14:*/ +#line 259 "./ctie.w" + +typedef struct _idsc{ +string file_name; +char buffer[buf_size]; +in_file_modes mode; +long line; +file_types type_of_file; +include_description*current_include; +char*buffer_end; +char*limit; +char*loc; +FILE*the_file; +int dont_match; +}input_description; + + +/*:14*/ +#line 91 "./ctie.w" + +/*5:*/ +#line 134 "./ctie.w" + +extern int strlen(); +extern char*strcpy(); +extern int strncmp(); +extern char*strncpy(); +extern char*strerror(); + + +/*:5*//*28:*/ +#line 584 "./ctie.w" + +void err_print(); + +/*:28*//*33:*/ +#line 673 "./ctie.w" + +int wrap_up(); + +/*:33*//*35:*/ +#line 696 "./ctie.w" + +void pfatal_error(); + +/*:35*//*67:*/ +#line 1232 "./ctie.w" + +void usage_help(); +void print_version_and_exit(); + + +/*:67*/ +#line 92 "./ctie.w" + +/*7:*/ +#line 162 "./ctie.w" + +int history= spotless; + + +/*:7*//*15:*/ +#line 286 "./ctie.w" + +int total_include_files= 0; + +/*:15*//*16:*/ +#line 292 "./ctie.w" + +file_index actual_input,test_input,no_ch; +file_types prod_chf= unknown; +out_md_type out_mode; + +/*:16*//*18:*/ +#line 309 "./ctie.w" + +input_description*input_organisation[max_file_index+1]; + + +/*:18*//*22:*/ +#line 406 "./ctie.w" + +boolean input_has_ended= false; + + +/*:22*//*39:*/ +#line 742 "./ctie.w" + +FILE*out_file; +string out_name; + + +/*:39*//*66:*/ +#line 1217 "./ctie.w" + +string CTIEHELP[]= { +"Usage: ctie -[mc] outfile master changefile(s)", +" Create a new master file or change file from the given", +" master (C)WEB file and changefiles.", +" All filenames are taken literally; no suffixes are added.", +"", +"-m create a new master file from original (C)WEB and change file(s)", +"-c create a master change file for original (C)WEB file from changefile(s)", +"--help display this help and exit", +"--version display version information and exit", +NULL +}; + + +/*:66*/ +#line 93 "./ctie.w" + +/*29:*/ +#line 589 "./ctie.w" + +void err_print(i,s) +file_index i;char*s; +{ +char*k,*l; +fprintf(stderr,*s=='!'?"\n%s":"%s",s); +if(i>=0)/*30:*/ +#line 611 "./ctie.w" + +{ +register input_description*inp_desc= input_organisation[i]; +register include_description*inc_desc= inp_desc->current_include; + +if(inc_desc!=NULL){ +fprintf(stderr,". (l. %ld of include file %s",inc_desc->line, +inc_desc->file_name); +fprintf(stderr," included from l. %ld of %s file %s)\n", +inp_desc->line, +inp_desc->type_of_file==master?"master":"change", +inp_desc->file_name); +} +else +fprintf(stderr,". (l. %ld of %s file %s)\n",inp_desc->line, +inp_desc->type_of_file==master?"master":"change", +inp_desc->file_name); +l= (inp_desc->loc>=inp_desc->limit?inp_desc->limit:inp_desc->loc); +if(l> inp_desc->buffer){ +for(k= inp_desc->buffer;kbuffer;klimit;k++) +putc(*k,stderr); +putc('\n',stderr); +} + + +/*:30*/ +#line 595 "./ctie.w" + +else putc('\n',stderr); +fflush(stderr); +history= troublesome; +} + +/*:29*//*36:*/ +#line 699 "./ctie.w" + +void pfatal_error(s,t) +char*s,*t; +{ +char*strerr= strerror(errno); + +fprintf(stderr,"\n%s%s",s,t); +if(strerr)fprintf(stderr," (%s)\n",strerr); +else fprintf(stderr,"\n"); +history= fatal; +exit(wrap_up()); +} + + +/*:36*/ +#line 94 "./ctie.w" + +/*19:*/ +#line 328 "./ctie.w" + +boolean get_line(i,do_includes) +file_index i;boolean do_includes; +{ +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; +/*24:*/ +#line 426 "./ctie.w" + +{ +register int c; +register char*k; + +if(feof(fp)) +/*25:*/ +#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; +} + + +/*:25*/ +#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) +/*25:*/ +#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; +} + + +/*:25*/ +#line 444 "./ctie.w" + + +inc_desc->line++; +} + +/*:24*/ +#line 342 "./ctie.w" + +} +else{ +fp= inp_desc->the_file; +/*20:*/ +#line 366 "./ctie.w" + +{ +register int c; +register char*k; + +if(feof(fp)) +/*21:*/ +#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; +} + + +/*:21*/ +#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) +/*21:*/ +#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; +} + + +/*:21*/ +#line 384 "./ctie.w" + + +/*23:*/ +#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); +} + + +/*:23*/ +#line 387 "./ctie.w" + +} + + +/*:20*/ +#line 346 "./ctie.w" + +} + +if(do_includes) +/*26:*/ +#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++; +/*27:*/ +#line 507 "./ctie.w" + +{ +include_description*new_inc; +char temp_file_name[max_file_name_length]; +char*file_name_end; +char*k,*kk; +int l; + +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'; +if((new_inc->the_file= fopen(new_inc->file_name,"r"))!=NULL){ +new_inc->parent= inp_desc->current_include; +inp_desc->current_include= new_inc; +goto restart; +} +kk= getenv("CWEBINPUTS"); +if(kk!=NULL){ +if((l= strlen(kk))> max_file_name_length-2)too_long(); +strcpy(temp_file_name,kk); +} +else{ +#ifdef CWEBINPUTS +if((l= strlen(CWEBINPUTS))> max_file_name_length-2)too_long(); +strcpy(temp_file_name,CWEBINPUTS); +#else +l= 0; +#endif +} +if(l> 0){ +if(k+l+2>=file_name_end)too_long(); +for(;k>=new_inc->file_name;k--)*(k+l+1)= *k; +strcpy(new_inc->file_name,temp_file_name); +new_inc->file_name[l]= '/'; +if((new_inc->the_file= fopen(new_inc->file_name,"r"))!=NULL){ +new_inc->parent= inp_desc->current_include; +inp_desc->current_include= new_inc; +goto restart; +} +} +total_include_files--; +free(new_inc); +err_print(i,"! Cannot open include file"); + +goto restart; +} + + + +/*:27*/ +#line 488 "./ctie.w" +; +} +} + + +/*:26*/ +#line 351 "./ctie.w" + +return true; +} + + +/*:19*//*32:*/ +#line 663 "./ctie.w" + +int wrap_up() +{ +/*34:*/ +#line 682 "./ctie.w" + +switch(history){ +case spotless: +printf("\n(No errors were found.)\n");break; +case troublesome: +printf("\n(Pardon me, but I think I spotted something wrong.)\n");break; +case fatal:printf("(That was a fatal error, my friend.)\n"); +} + + +/*:34*/ +#line 666 "./ctie.w" +; +if(history> spotless)return 1; +else return 0; +} + +/*:32*//*42:*/ +#line 791 "./ctie.w" + +boolean lines_dont_match(i,j) +file_index i,j; +{ +register input_description*iptr= input_organisation[i], +*jptr= input_organisation[j]; + +if(iptr->limit-iptr->buffer!=jptr->limit-jptr->buffer) +return true; +return strncmp(iptr->buffer,jptr->buffer,iptr->limit-iptr->buffer); +} + + +/*:42*//*43:*/ +#line 808 "./ctie.w" + +void init_change_file(i) +file_index i; +{ +register input_description*inp_desc= input_organisation[i]; +char ccode; + +inp_desc->limit= inp_desc->buffer; +/*44:*/ +#line 827 "./ctie.w" + +while(1){ +if(!get_line(i,false))return; +if(inp_desc->limitbuffer+2)continue; +if(inp_desc->buffer[0]!='@')continue; +ccode= inp_desc->buffer[1]; +if(xisupper(ccode))ccode= tolower(ccode); +if(ccode=='x')break; +if(ccode=='y'||ccode=='z'||ccode=='i'){ +inp_desc->loc= inp_desc->buffer+2; +err_print(i,"! Missing @x in change file"); + +} +} + +/*:44*/ +#line 816 "./ctie.w" + +/*45:*/ +#line 844 "./ctie.w" + +do{ +if(!get_line(i,true)){ +err_print(i,"! Change file ended after @x"); + +return; +} +}while(inp_desc->limit==inp_desc->buffer); + + +/*:45*/ +#line 817 "./ctie.w" + +inp_desc->dont_match= 0; +} + + +/*:43*//*46:*/ +#line 857 "./ctie.w" + +void put_line(j) +file_index j; +{ +char*ptr= input_organisation[j]->buffer; +char*lmt= input_organisation[j]->limit; + +while(ptrlimit==NULL){ +err_print(i,"! Change file ended without @z"); + +return true; +}else if(inp_desc->limit>=inp_desc->buffer+2) +if(inp_desc->buffer[0]=='@'&& +(inp_desc->buffer[1]=='Z'||inp_desc->buffer[1]=='z')) +return true; +return false; +} + + +/*:47*//*48:*/ +#line 893 "./ctie.w" + +boolean e_of_ch_preamble(i) +file_index i; +{ +register input_description*inp_desc= input_organisation[i]; + +if(inp_desc->limit>=inp_desc->buffer+2&&inp_desc->buffer[0]=='@') +if(inp_desc->buffer[1]=='Y'||inp_desc->buffer[1]=='y'){ +if(inp_desc->dont_match> 0){ +inp_desc->loc= inp_desc->buffer+2; +fprintf(stderr,"\n! Hmm... %d ",inp_desc->dont_match); +err_print(i,"of the preceding lines failed to match"); +} +return true; +} +return false; +} + + + +/*:48*//*59:*/ +#line 1105 "./ctie.w" + +void usage_error() +{ +/*60:*/ +#line 1118 "./ctie.w" + +printf("%s\n",banner); +printf("%s\n",copyright); + + +/*:60*/ +#line 1108 "./ctie.w" +; +fprintf(stderr,"Usage: ctie -[mc] outfile master changefile(s)\n"); +fprintf(stderr,"Type ctie --help for more information\n"); +exit(1); +} + + +/*:59*/ +#line 95 "./ctie.w" + +/*3:*/ +#line 101 "./ctie.w" + +main(argc,argv) +int argc;string*argv; +{ +/*17:*/ +#line 300 "./ctie.w" + +actual_input= 0; +out_mode= normal; + +/*:17*/ +#line 105 "./ctie.w" +; +/*61:*/ +#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) +/*64:*/ +#line 1202 "./ctie.w" + +usage_help(); + + + +/*:64*/ +#line 1142 "./ctie.w" +; +if(strcmp("-version",*argv)==0||strcmp("--version",*argv)==0) +/*65:*/ +#line 1208 "./ctie.w" + +{ +print_version_and_exit("CTIE",version_number); + +} + + +/*:65*/ +#line 1144 "./ctie.w" +; +if(**argv=='-')/*62:*/ +#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(); +} + + +/*:62*/ +#line 1145 "./ctie.w" + +else/*63:*/ +#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++; +} + + +/*:63*/ +#line 1146 "./ctie.w" + +} +if(no_ch<=0||prod_chf==unknown)usage_error(); +} + + +/*:61*/ +#line 106 "./ctie.w" + +/*60:*/ +#line 1118 "./ctie.w" + +printf("%s\n",banner); +printf("%s\n",copyright); + + +/*:60*/ +#line 107 "./ctie.w" +; +/*40:*/ +#line 750 "./ctie.w" + +{ +input_organisation[0]->the_file= +fopen(input_organisation[0]->file_name,"r"); + +if(input_organisation[0]->the_file==NULL) +pfatal_error("! Cannot open master file ", +input_organisation[0]->file_name); + +printf("(%s)\n",input_organisation[0]->file_name); +input_organisation[0]->type_of_file= master; +get_line(0,true); +} + + +/*:40*/ +#line 108 "./ctie.w" + +/*41:*/ +#line 768 "./ctie.w" + +{ +file_index i; + +i= 1; +while(ithe_file= +fopen(input_organisation[i]->file_name,"r"); +if(input_organisation[i]->the_file==NULL) +pfatal_error("! Cannot open change file ", +input_organisation[i]->file_name); + +printf("(%s)\n",input_organisation[i]->file_name); +init_change_file(i); +i++; +} +} + + +/*:41*/ +#line 109 "./ctie.w" + +/*38:*/ +#line 729 "./ctie.w" + +{ +out_file= fopen(out_name,"w"); +if(out_file==NULL){ +pfatal_error("! Cannot open/create output file",""); + +} +} + + +/*:38*/ +#line 110 "./ctie.w" + +/*57:*/ +#line 1074 "./ctie.w" + +actual_input= 0; +input_has_ended= false; +while(input_has_ended==false||actual_input!=0) +/*49:*/ +#line 917 "./ctie.w" + +{ +file_index test_file; + +/*50:*/ +#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--; +} +} + + +/*:50*/ +#line 921 "./ctie.w" + +if(input_has_ended&&actual_input==0)break; +/*51:*/ +#line 960 "./ctie.w" + +test_input= none; +test_file= actual_input; +while(test_input==none&&test_filemode){ +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; +} +} + + +/*:51*/ +#line 923 "./ctie.w" + +/*52:*/ +#line 993 "./ctie.w" + +if(prod_chf==chf){ +while(1){ +/*53:*/ +#line 1007 "./ctie.w" + +if(out_mode==normal){ +if(test_input!=none){ +fprintf(out_file,"@x\n"); +out_mode= pre; +}else break; +} + + +/*:53*/ +#line 996 "./ctie.w" + +/*54:*/ +#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; +} +} + + +/*:54*/ +#line 997 "./ctie.w" + +/*55:*/ +#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; +} +} + + +/*:55*/ +#line 998 "./ctie.w" + +} +}else +if(test_input==none)put_line(actual_input); + + +/*:52*/ +#line 924 "./ctie.w" + +/*56:*/ +#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; +} +} + + +/*:56*/ +#line 925 "./ctie.w" + +} + + +/*:49*/ +#line 1078 "./ctie.w" + +if(out_mode==post) +fprintf(out_file,"@z\n"); + + +/*:57*/ +#line 111 "./ctie.w" + +/*58:*/ +#line 1087 "./ctie.w" + +{ +file_index i; + +for(i= 1;imode!=ignore){ +input_organisation[i]->loc= input_organisation[i]->buffer; +err_print(i,"! Change file entry did not match"); + +} +} +} + + +/*:58*/ +#line 112 "./ctie.w" + +exit(wrap_up()); +} + +/*:3*/ +#line 96 "./ctie.w" + + +/*:2*//*68:*/ +#line 1237 "./ctie.w" + +void usage_help() +{ +string*message= CTIEHELP; + +while(*message){ +fputs(*message,stdout); +putchar('\n'); +++message; +} +putchar('\n'); +exit(0); +} + + +/*:68*//*69:*/ +#line 1252 "./ctie.w" + +void print_version_and_exit(name,version) +string name,version; +{ +printf("%s %s\n",name,version); + +puts("Copyright (C) 2002,2003 Julian Gilbey."); + +puts("There is NO warranty. This is free software. See the source"); +puts("code of CTIE for redistribution conditions."); + +exit(0); +} + + +/*:69*/ -- cgit v1.2.3