Back to index

tetex-bin  3.0
Classes | Defines | Typedefs | Functions | Variables
ctie.c File Reference
#include <stdio.h>
#include <malloc.h>
#include <errno.h>

Go to the source code of this file.

Classes

struct  _indsc
struct  _idsc

Defines

#define version_number   "1.1"
#define banner   "This is CTIE, Version 1.1"
#define copyright
#define false   0
#define true   1 \
#define buf_size   1024
#define max_file_index   32 \
#define xisupper(c)
#define spotless   0
#define troublesome   1
#define fatal   2 \
#define max_include_files   20 \
#define max_file_name_length   60 \
#define too_long()
#define fatal_error(i, s, t)
#define none   (-1) \
#define search   0
#define test   1
#define reading   2
#define ignore   3
#define unknown   0
#define master   1
#define chf   2
#define normal   0
#define pre   1
#define post   2

Typedefs

typedef int boolean
typedef char * string
typedef int in_file_modes
typedef int file_types
typedef int out_md_type
typedef int file_index
typedef struct _indsc include_description
typedef struct _idsc input_description

Functions

int strlen ()
char * strcpy ()
int strncmp ()
char * strncpy ()
char * strerror ()
void err_print ()
int wrap_up ()
void pfatal_error ()
void usage_help ()
void print_version_and_exit ()
void err_print (file_index i, char *s)
void pfatal_error (char *s, char *t)
boolean get_line (file_index i, boolean do_includes)
boolean lines_dont_match (file_index i, file_index j)
void init_change_file (file_index i)
void put_line (file_index j)
boolean e_of_ch_module (file_index i)
boolean e_of_ch_preamble (file_index i)
void usage_error ()
 main (int argc, string *argv)
void print_version_and_exit (string name, string version)

Variables

int history = spotless
int total_include_files = 0
file_index actual_input
file_index test_input
file_index no_ch
file_types prod_chf = unknown
out_md_type out_mode
input_descriptioninput_organisation [max_file_index+1]
boolean input_has_ended = false
FILEout_file
string out_name
string CTIEHELP []

Class Documentation

struct _indsc

Definition at line 93 of file ctie-k.c.

Collaboration diagram for _indsc:
Class Members
char file_name
long line
struct _indsc * parent
FILE * the_file
struct _idsc

Definition at line 104 of file ctie-k.c.

Collaboration diagram for _idsc:
Class Members
char buffer
ASCII_Code buffer
char * buffer_end
include_description * current_include
int dont_match
string file_name
char * limit
buffer_index limit
long line
char * loc
in_file_modes mode
string name_of_file
FILE * the_file
text_file the_file
file_types type_of_file

Define Documentation

#define banner   "This is CTIE, Version 1.1"

Definition at line 2 of file ctie.c.

#define buf_size   1024

Definition at line 11 of file ctie.c.

#define chf   2

Definition at line 83 of file ctie.c.

#define copyright
Value:
"Copyright 2002,2003 Julian Gilbey.  All rights reserved.  There is no warranty.\n\Run with the --version option for other important information." \
 \

Definition at line 3 of file ctie.c.

#define false   0

Definition at line 8 of file ctie.c.

#define fatal   2 \

Definition at line 19 of file ctie.c.

#define fatal_error (   i,
  s,
  t 
)
Value:
{ \
fprintf(stderr,"\n%s",s) ; \
err_print(i,t) ; \
history= fatal; \
exit(wrap_up() ) ; \
} \
 \

Definition at line 28 of file ctie.c.

#define ignore   3

Definition at line 79 of file ctie.c.

#define master   1

Definition at line 82 of file ctie.c.

#define max_file_index   32 \

Definition at line 12 of file ctie.c.

#define max_file_name_length   60 \

Definition at line 23 of file ctie.c.

#define max_include_files   20 \

Definition at line 21 of file ctie.c.

#define none   (-1) \

Definition at line 36 of file ctie.c.

#define normal   0

Definition at line 90 of file ctie.c.

#define post   2

Definition at line 92 of file ctie.c.

#define pre   1

Definition at line 91 of file ctie.c.

#define reading   2

Definition at line 78 of file ctie.c.

#define search   0

Definition at line 76 of file ctie.c.

#define spotless   0

Definition at line 17 of file ctie.c.

#define test   1

Definition at line 77 of file ctie.c.

#define too_long ( )
Value:
{total_include_files--;free(new_inc) ; \
err_print(i,"! Include file name too long") ;goto restart;} \

Definition at line 25 of file ctie.c.

#define troublesome   1

Definition at line 18 of file ctie.c.

#define true   1 \

Definition at line 9 of file ctie.c.

#define unknown   0

Definition at line 81 of file ctie.c.

#define version_number   "1.1"

Definition at line 1 of file ctie.c.

#define xisupper (   c)
Value:
(isupper(c) &&((unsigned char) c<0200) )  \
 \

Definition at line 14 of file ctie.c.


Typedef Documentation

typedef int boolean

Definition at line 69 of file ctie.c.

typedef int file_index

Definition at line 99 of file ctie.c.

typedef int file_types

Definition at line 84 of file ctie.c.

typedef int in_file_modes

Definition at line 80 of file ctie.c.

typedef struct _indsc include_description
typedef struct _idsc input_description
typedef int out_md_type

Definition at line 93 of file ctie.c.

typedef char* string

Definition at line 70 of file ctie.c.


Function Documentation

Definition at line 656 of file ctie.c.

{
register input_description*inp_desc= input_organisation[i];

if(inp_desc->limit==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;
}

Here is the caller graph for this function:

Definition at line 676 of file ctie.c.

{
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;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void err_print ( file_index  i,
char*  s 
)

Definition at line 229 of file ctie.c.

{
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;k<l;k++)
if(*k=='\t')putc(' ',stderr);
else putc(*k,stderr);
putc('\n',stderr);
for(k= inp_desc->buffer;k<l;k++)
putc(' ',stderr);
}
for(k= l;k<inp_desc->limit;k++)
putc(*k,stderr);
putc('\n',stderr);
}


/*:30*/
#line 595 "./ctie.w"

else putc('\n',stderr);
fflush(stderr);
history= troublesome;
}

Here is the call graph for this function:

boolean get_line ( file_index  i,
boolean  do_includes 
)

Definition at line 298 of file ctie.c.

{
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;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 593 of file ctie.c.

{
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->limit<inp_desc->buffer+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;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 578 of file ctie.c.

{
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);
}

Here is the call graph for this function:

main ( int  argc,
string argv 
)

Definition at line 722 of file ctie.c.

{
/*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(i<no_ch){
input_organisation[i]->the_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_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;
}
}


/*: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;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");

}
}
}


/*:58*/
#line 112 "./ctie.w"

exit(wrap_up());
}

Here is the call graph for this function:

Here is the caller graph for this function:

void pfatal_error ( char*  s,
char*  t 
)

Definition at line 279 of file ctie.c.

{
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());
}

Here is the call graph for this function:

Here is the caller graph for this function:

void print_version_and_exit ( string  name,
string  version 
)

Definition at line 1097 of file ctie.c.

{
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);
}

Here is the call graph for this function:

Definition at line 642 of file ctie.c.

{
char*ptr= input_organisation[j]->buffer;
char*lmt= input_organisation[j]->limit;

while(ptr<lmt)putc(*ptr++,out_file);
putc('\n',out_file);
}

Here is the caller graph for this function:

char* strcpy ( )
char* strerror ( )

Here is the caller graph for this function:

int strlen ( )
int strncmp ( )
char* strncpy ( )

Definition at line 698 of file ctie.c.

{
/*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);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 1080 of file ctie.c.

{
string*message= CTIEHELP;

while(*message){
fputs(*message,stdout);
putchar('\n');
++message;
}
putchar('\n');
exit(0);
}

Here is the call graph for this function:

Here is the caller graph for this function:

int wrap_up ( )

Definition at line 554 of file ctie.c.

{
/*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;
}

Here is the caller graph for this function:


Variable Documentation

Definition at line 183 of file ctie.c.

Initial value:
 {
"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
}

Definition at line 209 of file ctie.c.

Definition at line 172 of file ctie.c.

Definition at line 196 of file ctie.c.

Definition at line 190 of file ctie.c.

Definition at line 183 of file ctie.c.

Definition at line 202 of file ctie.c.

Definition at line 185 of file ctie.c.

Definition at line 203 of file ctie.c.

Definition at line 184 of file ctie.c.

Definition at line 183 of file ctie.c.

Definition at line 178 of file ctie.c.