X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=main.c;h=b9b62e1e77d2a2395f41e99aed641cebb38d0f6d;hb=00546364f6dca53f2d6297026f2ba9da8b38979f;hp=ae849a9992dbe6b7530e3cd62d1690ca1a7bb05a;hpb=522645dd26dde56c59f48996e6ec399599be0b3d;p=cparser diff --git a/main.c b/main.c index ae849a9..b9b62e1 100644 --- a/main.c +++ b/main.c @@ -231,20 +231,29 @@ static void lextest(FILE *in, const char *fname) do { lexer_next_preprocessing_token(); print_token(stdout, &lexer_token); - puts(""); + putchar('\n'); } while (lexer_token.type != T_EOF); } static void add_flag(struct obstack *obst, const char *format, ...) { + char buf[4096]; va_list ap; - va_start(ap, format); - char buf[4096]; - vsnprintf(buf, sizeof(buf), format, ap); + va_start(ap, format); +#ifdef _WIN32 + int len = +#endif + vsnprintf(buf, sizeof(buf), format, ap); + va_end(ap); - /* escape stuff... */ obstack_1grow(obst, ' '); +#ifdef _WIN32 + obstack_1grow(obst, '"'); + obstack_grow(obst, buf, len); + obstack_1grow(obst, '"'); +#else + /* escape stuff... */ for (char *c = buf; *c != '\0'; ++c) { switch(*c) { case '"': @@ -259,23 +268,12 @@ static void add_flag(struct obstack *obst, const char *format, ...) case '(': case ')': obstack_1grow(obst, '\\'); - /* fallthrough */ + /* FALLTHROUGH */ default: obstack_1grow(obst, *c); break; } } - va_end(ap); -} - -static void add_quoted_string(struct obstack *obst, const char *s) -{ -#ifdef _WIN32 - obstack_1grow(obst, '"'); - obstack_grow(obst, s, strlen(s)); - obstack_1grow(obst, '"'); -#else - add_flag(obst, "%s", s); #endif } @@ -294,26 +292,23 @@ static FILE *preprocess(const char *fname) /* setup default defines */ add_flag(&cppflags_obst, "-U__WCHAR_TYPE__"); - add_flag(&cppflags_obst, "-D__WCHAR_TYPE__="); - add_quoted_string(&cppflags_obst, type_to_string(type_wchar_t)); + add_flag(&cppflags_obst, "-D__WCHAR_TYPE__=%s", type_to_string(type_wchar_t)); add_flag(&cppflags_obst, "-U__SIZE_TYPE__"); - add_flag(&cppflags_obst, "-D__SIZE_TYPE__="); - add_quoted_string(&cppflags_obst, type_to_string(type_size_t)); + add_flag(&cppflags_obst, "-D__SIZE_TYPE__=%s", type_to_string(type_size_t)); /* handle dependency generation */ if (dep_target[0] != '\0') { add_flag(&cppflags_obst, "-MF"); - add_quoted_string(&cppflags_obst, dep_target); + add_flag(&cppflags_obst, dep_target); if (outname != NULL) { add_flag(&cppflags_obst, "-MQ"); - add_quoted_string(&cppflags_obst, outname); + add_flag(&cppflags_obst, outname); } } if (flags[0] != '\0') { obstack_printf(&cppflags_obst, " %s", flags); } - obstack_1grow(&cppflags_obst, ' '); - add_quoted_string(&cppflags_obst, fname); + add_flag(&cppflags_obst, fname); obstack_1grow(&cppflags_obst, '\0'); const char *buf = obstack_finish(&cppflags_obst);