1 #include <ncbi.h>
2 
3 #define TEST_VERSION
4 
5 #define OPT_TUPLES  1
6 #define OPT_SHORT   2
7 
8 void ErrMsgRoot_PrintHeader (ErrMsgRootPtr idx, unsigned int opts, FILE *fd);
9 
10 
11 
main(int argc,char ** argv)12 int main (int argc, char **argv)
13 {
14 	ErrMsgRootPtr idx;
15 	FILE *fout = stdout;
16 	char mod[32];
17 	int i;
18 	unsigned int opts =0;
19 
20 	mod[0] = '\0';
21 
22 	ErrSetOptFlags(EO_LOGTO_STDERR);
23 	ErrClearOptFlags(EO_SHOW_CODES | EO_BEEP);
24 	ErrSetMessageLevel(SEV_MAX);
25 	ErrSetLogLevel(SEV_WARNING);
26 
27 	for (i=1; i<argc; ++i)
28 	{
29 		if (argv[i][0] == '-')
30 		{
31 			switch(argv[i][1])
32 			{
33 			case '2' :
34 				opts |= OPT_TUPLES;
35 				break;
36 			case 's' :
37 				opts |= OPT_SHORT;
38 				break;
39 			}
40 		}
41 		else if (mod[0] == '\0')
42 		{
43 			char *p;
44 			strncat(mod,argv[i],sizeof mod);
45 			if ((p = strstr(argv[i],".msg")) != NULL)
46 				*p = '\0';
47 		}
48 		else if (fout == stdout)
49 		{
50 			ErrSetFatalLevel(SEV_INFO);
51 			fout = fopen(argv[i],"w");
52 			ErrSetFatalLevel(SEV_FATAL);
53 		}
54 	}
55 
56 	if (mod[0] == '\0')
57 	{
58 		fprintf(stderr,"\nUSAGE:  errhdr [options] msgfile [hdrfile] \n\n");
59 		fprintf(stderr,"  options:  -2 for code,subcode tuples\n");
60 		fprintf(stderr,"            -s for short subcode defines\n");
61 		return 1;
62 	}
63 
64 
65 	if ((idx  = ErrGetMsgRoot(mod)) ==NULL)
66 	{
67 		return 1;
68 	}
69 
70 	if (idx->list == NULL  /*not_avail*/ )
71 	{
72 		fprintf(stderr,"Unable to find error message file for module \"%s\"\n",mod);
73 		return 1;
74 	}
75 
76 	ErrMsgRoot_PrintHeader(idx,opts,fout);
77 	return 0;
78 }
79 
ErrMsgRoot_PrintHeader(ErrMsgRootPtr idx,unsigned int opts,FILE * fd)80 void ErrMsgRoot_PrintHeader (ErrMsgRootPtr idx, unsigned int opts, FILE *fd)
81 {
82 	ErrMsgNode *lev1;
83 	ErrMsgNode *lev2;
84 
85 	fprintf(fd,"#ifndef __MODULE_%s__\n",idx->name);
86 	fprintf(fd,"#define __MODULE_%s__\n\n",idx->name);
87 
88 	for (lev1=idx->list; lev1; lev1=lev1->next)
89 	{
90 
91 		if (opts & OPT_TUPLES)
92 		{
93 			fprintf(fd,"#define ERR_%s  %d,0\n",lev1->name,(int)lev1->code);
94 			for (lev2=lev1->list; lev2; lev2=lev2->next)
95 				fprintf(fd,"#define ERR_%s_%s  %d,%d\n",lev1->name,lev2->name,
96 						(int)lev1->code,(int)lev2->code);
97 		}
98 		else
99 		{
100 			fprintf(fd,"#define ERR_%s  %d\n",lev1->name,(int)lev1->code);
101 			for (lev2=lev1->list; lev2; lev2=lev2->next)
102 			{
103 				if (opts & OPT_SHORT)
104 					fprintf(fd,"#define    SUB_%s  %d\n",
105 							lev2->name,(int)lev2->code);
106 				else
107 					fprintf(fd,"#define    SUB_%s_%s  %d\n",
108 							lev1->name,lev2->name,(int)lev2->code);
109 			}
110 		}
111 	}
112 
113 	fprintf(fd,"\n#endif\n");
114 }
115 
116 
117 Int2
Nlm_Main(void)118 Nlm_Main(void)
119 {
120     fprintf(stderr,"Kludge main executed in file %s", __FILE__);
121     exit (1);
122 }
123