1818 " *\n" \
1919 " * This file was generated from rules: %s\n" \
2020 " */ \n " \
21- "#ifndef _GENERATED_XE_WA_OOB_ \n" \
22- "#define _GENERATED_XE_WA_OOB_ \n" \
21+ "#ifndef _GENERATED_%s_ \n" \
22+ "#define _GENERATED_%s_ \n" \
2323 "\n" \
2424 "enum {\n"
2525
@@ -52,7 +52,7 @@ static char *strip(char *line, size_t linelen)
5252}
5353
5454#define MAX_LINE_LEN 4096
55- static int parse (FILE * input , FILE * csource , FILE * cheader )
55+ static int parse (FILE * input , FILE * csource , FILE * cheader , char * prefix )
5656{
5757 char line [MAX_LINE_LEN + 1 ];
5858 char * name , * prev_name = NULL , * rules ;
@@ -96,7 +96,7 @@ static int parse(FILE *input, FILE *csource, FILE *cheader)
9696 }
9797
9898 if (name ) {
99- fprintf (cheader , "\tXE_WA_OOB_% s = %u,\n" , name , idx );
99+ fprintf (cheader , "\t%s_% s = %u,\n" , prefix , name , idx );
100100
101101 /* Close previous entry before starting a new one */
102102 if (idx )
@@ -118,7 +118,33 @@ static int parse(FILE *input, FILE *csource, FILE *cheader)
118118 if (idx )
119119 fprintf (csource , ") },\n" );
120120
121- fprintf (cheader , "\t_XE_WA_OOB_COUNT = %u\n" , idx );
121+ fprintf (cheader , "\t_%s_COUNT = %u\n" , prefix , idx );
122+
123+ return 0 ;
124+ }
125+
126+ static int fn_to_prefix (const char * fn , char * prefix , size_t size )
127+ {
128+ size_t len ;
129+
130+ fn = basename (fn );
131+ len = strlen (fn );
132+
133+ if (len > size - 1 )
134+ return - ENAMETOOLONG ;
135+
136+ memcpy (prefix , fn , len + 1 );
137+
138+ for (char * p = prefix ; * p ; p ++ ) {
139+ switch (* p ) {
140+ case '.' :
141+ * p = '\0' ;
142+ return 0 ;
143+ default :
144+ * p = toupper (* p );
145+ break ;
146+ }
147+ }
122148
123149 return 0 ;
124150}
@@ -141,13 +167,17 @@ int main(int argc, const char *argv[])
141167 [ARGS_CHEADER ] = { .fn = argv [3 ], .mode = "w" },
142168 };
143169 int ret = 1 ;
170+ char prefix [128 ];
144171
145172 if (argc < 3 ) {
146173 fprintf (stderr , "ERROR: wrong arguments\n" );
147174 print_usage (stderr , argv [0 ]);
148175 return 1 ;
149176 }
150177
178+ if (fn_to_prefix (args [ARGS_CHEADER ].fn , prefix , sizeof (prefix )) < 0 )
179+ return 1 ;
180+
151181 for (int i = 0 ; i < _ARGS_COUNT ; i ++ ) {
152182 args [i ].f = fopen (args [i ].fn , args [i ].mode );
153183 if (!args [i ].f ) {
@@ -157,9 +187,10 @@ int main(int argc, const char *argv[])
157187 }
158188 }
159189
160- fprintf (args [ARGS_CHEADER ].f , HEADER , args [ARGS_INPUT ].fn );
190+ fprintf (args [ARGS_CHEADER ].f , HEADER , args [ARGS_INPUT ].fn , prefix , prefix );
191+
161192 ret = parse (args [ARGS_INPUT ].f , args [ARGS_CSOURCE ].f ,
162- args [ARGS_CHEADER ].f );
193+ args [ARGS_CHEADER ].f , prefix );
163194 if (!ret )
164195 fprintf (args [ARGS_CHEADER ].f , FOOTER );
165196
0 commit comments