8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-27 05:23:02 +01:00
firebird-mirror/src/misc/makeHeader.cpp

70 lines
1.1 KiB
C++
Raw Normal View History

2005-12-18 18:47:43 +01:00
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
void ProcessFile(FILE *in, bool stripFirstComment)
{
char s[256];
bool striping = false;
2006-04-06 10:18:53 +02:00
while (fgets(s, sizeof(s), in)) {
2005-12-18 18:47:43 +01:00
if (stripFirstComment) {
char *x = strstr(s, "/*");
if (x) {
striping = true;
stripFirstComment = false;
continue;
}
}
if (striping) {
char *x = strstr(s, "*/");
if (x) {
striping = false;
}
continue;
}
const char* include = "#include";
if (memcmp(s, include, strlen(include))) {
fputs(s, stdout);
continue;
}
char *p = strchr(s, '"');
if (! p) {
throw "#include misses \" - start of filename";
}
++p;
char *p2 = strchr(p, '"');
if (! p2) {
throw "#include misses \" - end of filename";
}
*p2 = 0;
p2 = strrchr(p, '/'); // always open files in current directory
if (p2) {
p = p2 + 1;
}
FILE *newIn = fopen(p, "rt");
if (! newIn) {
continue;
}
ProcessFile(newIn, true);
fclose(newIn);
// clean after Makefile's cp
unlink(p);
}
}
int main()
{
try {
ProcessFile(stdin, false);
}
2006-05-20 06:22:07 +02:00
catch (char* x)
2005-12-18 18:47:43 +01:00
{
fprintf(stderr, "%s\n", x);
return 1;
}
return 0;
}