1#include "./main.auto.h"
16 STATE_OPENING_UNKNOWN,
18 STATE_ARGC_UNEXPECTED,
31#define STACK_LAST STACK[STACK_IDX]
32#define STACK_NXT STACK[STACK_IDX + 1
]
37char inc_key[
sizeof(
"#include")] = {0, };
38char inc_path_buff[
PATHLEN + 1] = {0, };
40typedef unsigned char flag_t;
44 flag_t m_path_nclosed : 1;
45 flag_t m_ManyCmtOutMaybe : 1;
52int main(
int argc,
char** argv) {
55 return -STATE_ARGC_UNEXPECTED;
57 for(i = argc; i-- != 1;) {
58 if(strlen(argv[i]) >
DIRLEN)
69 memset(inc_key, 0,
sizeof(inc_key));
72 assert(STACK_LAST.m_inp);
110 if(Ch == EOF)
return -STATE_EOF;
118 FLAGS.m_Key_Idx <
sizeof(
"#include") - 1
119 && (inc_key[FLAGS.m_Key_Idx] = fgetc(
STACK_LAST.m_inp))
120 ==
"#include"[FLAGS.m_Key_Idx];
124 if(FLAGS.m_Key_Idx ==
sizeof(
"#include") - 1) {
127 fputs(inc_key, stdout);
140 while((Ch = fgetc(
STACK_LAST.m_inp)) != EOF && Ch !=
'\n' && Ch !=
'\r') {
146 if(Ch == EOF)
return -STATE_EOF;
160 while((Ch = fgetc(
STACK_LAST.m_inp)) != EOF) {
180 }
return -STATE_UNEXPECTED;
192 while((Ch = fgetc(
STACK_LAST.m_inp)) != EOF && (Ch ==
' ' || Ch ==
'\t'));
196 puts(
"/** Unknown EOF bug has appeared. */ \\");
199 case '\"': path_closing =
'\"';
break;
200 case '<': path_closing =
'>';
break;
207 puts(
"/** include detected */ \\");
210 path_cursor = inc_path_buff;
211 FLAGS.m_path_nclosed = 1;
213 puts(
"/** Path cursor */ \\");
217 puts(
"/** Stack has smashed. shame. */ \\");
221 while((Ch = fgetc(
STACK_LAST.m_inp)) != EOF && Ch !=
'\n' && Ch !=
'\r') {
237 return -STATE_STACK_SMASHED;
240 while(path_cursor - inc_path_buff <
PATHLEN) {
243 if(Ch == path_closing) {
245 FLAGS.m_path_nclosed = 0;
251 if(FLAGS.m_path_nclosed)
return -STATE_OPENING_UNKNOWN;
254 strcat(
STACK_NXT.m_current, inc_path_buff);
257 fputs(
"/* Opening: ", stdout);
258 fputs(STACK_NXT.m_current, stdout);
259 fputs(
" */ \\\n", stdout);
264 printf(
"/** first fp: %p */ \\\n", STACK_NXT.m_inp);
268 for(i = argc; !
STACK_NXT.m_inp && i-- != 1;) {
270 strcat(
STACK_NXT.m_current, inc_path_buff);
273 fputs(
"/* Opening: ", stdout);
274 fputs(STACK_NXT.m_current, stdout);
275 fputs(
" */ \\\n", stdout);
283 puts(
"/** Failed but ignoring it. */ \\");
286 fputs(
"#include <", stdout);
287 fputs(inc_path_buff, stdout);
296 puts(
"/** Failed. */ \\");
298 return -STATE_FOPEN_BAD;
302 for(i = strlen(
STACK_NXT.m_current); i--;) {
310 printf(
"/** Current %s */ \\\n", STACK_NXT.m_current);
311 printf(
"/** Dir %s */ \\\n", STACK_NXT.m_dir);
320 puts(
"/** Found something. Now let's validate. */ \\");
323 for(STACK_IDX_BUFF = STACK_IDX; STACK_IDX_BUFF--;) {
324 if(!strcmp(STACK[STACK_IDX_BUFF].m_current,
STACK_NXT.m_current)) {
326 puts(
"/** It's repeating himself for some reason. */ \\");
334 puts(
"/** It's not repeating */ \\");
341 "/******************** */\\\n"
342 "/* Now the path will be: */ \\\n /*"
346 fputs(STACK_NXT.m_current, stdout);
359 puts(
"/** One eof gracefully */ \\");
366 puts(
"/** All done. */");
#define INC_IGNORE_NFOUND