24 #include <netinet/in.h>
28 #include <sys/socket.h>
29 #include <sys/types.h>
35 #define __PRINTF__ printf
37 #define __MF_SUBJECT__ "doxy_main"
39 #define __SHORTFILE__ \
40 (__builtin_strstr(&__FILE__[0], "/srcs/") \
41 ? __builtin_strstr(&__FILE__[0], "/srcs/") + 6 \
43 #define __COUT_HDR_L__ "[" << std::dec << __LINE__ << " |\t"
44 #define __COUT_HDR_FL__ __SHORTFILE__ << " " << __COUT_HDR_L__
46 #define __COUT_TYPE__(X) std::cout << QUOTE(X) << ":"
47 #define __COUT_ERR__ __COUT_TYPE__(LogError) << __COUT_HDR_FL__
48 #define __COUT_WARN__ __COUT_TYPE__(LogWarning) << __COUT_HDR_FL__
49 #define __COUT_INFO__ __COUT_TYPE__(LogInfo) << __COUT_HDR_FL__
50 #define __COUT__ __COUT_TYPE__(LogDebug) << __COUT_HDR_FL__
53 std::stringstream ss; \
54 ss << "|" << __MF_DECOR__ << ": " << __COUT_HDR_FL__
55 #define __SS_THROW__ \
57 __COUT_ERR__ << "\n" << ss.str(); \
58 throw std::runtime_error(ss.str()); \
60 #define __E__ std::endl
63 #define __COUTV__(X) __COUT__ << QUOTE(X) << " = " << X << __E__
69 int main(
int argc,
char** argv)
71 __COUT__ <<
"Starting doxygen main.html editor..." << __E__;
75 __COUT__ <<
"Need 3 arguments: for the full path to main.html AND to "
76 "ARRAY:<html-to-inject>"
80 std::string mainfn = argv[1];
81 std::string injectfn = argv[2];
82 std::string inject2fn = argv[3];
83 __COUT__ <<
"main.html destination full path: " << mainfn << __E__;
84 __COUT__ <<
"main.html source full path: " << mainfn +
".bk" << __E__;
85 __COUT__ <<
"inject.html source full path: " << injectfn << __E__;
86 __COUT__ <<
"inject2.html source full path: " << inject2fn << __E__;
88 FILE* mainSrc = fopen((mainfn +
".bk").c_str(),
"r");
91 __COUT__ <<
"Failed to open... " << mainfn +
".bk" << __E__;
94 FILE* injectSrc = fopen((injectfn).c_str(),
"r");
97 __COUT__ <<
"Failed to open... " << injectfn << __E__;
100 FILE* inject2Src = fopen((inject2fn).c_str(),
"r");
103 __COUT__ <<
"Failed to open... " << inject2fn << __E__;
106 FILE* mainDest = fopen((mainfn).c_str(),
"w");
109 __COUT__ <<
"Failed to open... " << mainfn << __E__;
114 unsigned int countdown = -1;
116 unsigned int injectIndex = 0;
118 bool injected =
true;
119 while(fgets(line, 1000, mainSrc))
121 fputs(line, mainDest);
122 __COUT__ << line << (line[strlen(line) - 1] ==
'\n' ?
"" :
"\n");
124 if(injected && !strcmp(line,
"<div class=\"contents\">\n"))
131 else if(injected && !strcmp(line,
"<head>\n"))
139 if(!injected && countdown == 0)
160 while(fgets(line, 1000, injectSrc))
162 fputs(line, mainDest);
163 __COUT__ << line << (line[strlen(line) - 1] ==
'\n' ?
"" :
"\n");
173 while(fgets(line, 1000, inject2Src))
175 fputs(line, mainDest);
176 __COUT__ << line << (line[strlen(line) - 1] ==
'\n' ?
"" :
"\n");
181 __COUT__ <<
"Unknown injection!" << __E__;
194 __COUT__ <<
"Doxygen main.html editor complete!" << __E__;