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;
158 while((Ch = fgetc(
STACK_LAST.m_inp)) != EOF) {
172 }
return -STATE_UNEXPECTED;
184 while((Ch = fgetc(
STACK_LAST.m_inp)) != EOF && (Ch ==
' ' || Ch ==
'\t'));
188 puts(
"/** Unknown EOF bug has appeared. */");
191 case '\"': path_closing =
'\"';
break;
192 case '<': path_closing =
'>';
break;
199 puts(
"/** include detected */");
202 path_cursor = inc_path_buff;
203 FLAGS.m_path_nclosed = 1;
205 puts(
"/** Path cursor */");
209 puts(
"/** Stack has smashed. shame. */");
213 while((Ch = fgetc(
STACK_LAST.m_inp)) != EOF && Ch !=
'\n' && Ch !=
'\r') {
229 return -STATE_STACK_SMASHED;
232 while(path_cursor - inc_path_buff <
PATHLEN) {
235 if(Ch == path_closing) {
237 FLAGS.m_path_nclosed = 0;
243 if(FLAGS.m_path_nclosed)
return -STATE_OPENING_UNKNOWN;
246 strcat(
STACK_NXT.m_current, inc_path_buff);
249 fputs(
"/* Opening: ", stdout);
250 fputs(STACK_NXT.m_current, stdout);
251 fputs(
" */\n", stdout);
256 printf(
"/** first fp: %p */\n", STACK_NXT.m_inp);
260 for(i = argc; !
STACK_NXT.m_inp && i-- != 1;) {
262 strcat(
STACK_NXT.m_current, inc_path_buff);
265 fputs(
"/* Opening: ", stdout);
266 fputs(STACK_NXT.m_current, stdout);
267 fputs(
" */ \n", stdout);
275 puts(
"/** Failed but ignoring it. */");
278 fputs(
"#include <", stdout);
279 fputs(inc_path_buff, stdout);
288 puts(
"/** Failed. */");
290 return -STATE_FOPEN_BAD;
294 for(i = strlen(
STACK_NXT.m_current); i--;) {
302 printf(
"/** Current %s */\n", STACK_NXT.m_current);
303 printf(
"/** Dir %s */\n", STACK_NXT.m_dir);
312 puts(
"/** Found something. Now let's validate. */");
315 for(STACK_IDX_BUFF = STACK_IDX; STACK_IDX_BUFF--;) {
316 if(!strcmp(STACK[STACK_IDX_BUFF].m_current,
STACK_NXT.m_current)) {
318 puts(
"/** It's repeating himself for some reason. */");
326 puts(
"/** It's not repeating */");
333 "/******************** */\n"
334 "/* Now the path will be: */ \n /*"
338 fputs(STACK_NXT.m_current, stdout);
351 puts(
"/** One eof gracefully */");
358 puts(
"/** All done. */");
#define INC_IGNORE_NFOUND