X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tools%2Fprotoparse.h;h=3d70d8658dfc1988e14a659bf851c38ffa6b7dd1;hb=66bdb2b07a1f50833ad79ea71a378dafd79030e6;hp=a34d1a632912e534978acc600795fddf4b939a67;hpb=5f70a34fac7e0f26d6154b3b4d7132ec813b41f4;p=ia32rtools.git diff --git a/tools/protoparse.h b/tools/protoparse.h index a34d1a6..3d70d86 100644 --- a/tools/protoparse.h +++ b/tools/protoparse.h @@ -42,7 +42,8 @@ struct parsed_proto { unsigned int is_noreturn:1; unsigned int is_unresolved:1; unsigned int is_userstack:1; - unsigned int is_oslib:1; // OS/system library func + unsigned int is_include:1; // not from top-level header + unsigned int is_osinc:1; // OS/system library func unsigned int is_arg:1; // declared in some func arg unsigned int has_structarg:1; unsigned int has_retreg:1; @@ -54,16 +55,17 @@ static int hdrfline = 0; static void pp_copy_arg(struct parsed_proto_arg *d, const struct parsed_proto_arg *s); -static int b_pp_c_handler(char *proto, const char *fname, int is_oslib); +static int b_pp_c_handler(char *proto, const char *fname, + int is_include, int is_osinc); -static int do_protostrs(FILE *fhdr, const char *fname) +static int do_protostrs(FILE *fhdr, const char *fname, int is_include) { const char *finc_name; const char *hdrfn_saved; char protostr[256]; char path[256]; char fname_inc[256]; - int is_oslib; + int is_osinc; FILE *finc; int line = 0; int ret; @@ -72,7 +74,7 @@ static int do_protostrs(FILE *fhdr, const char *fname) hdrfn_saved = hdrfn; hdrfn = fname; - is_oslib = strstr(fname, "stdc.hlist") + is_osinc = strstr(fname, "stdc.hlist") || strstr(fname, "win32.hlist"); while (fgets(protostr, sizeof(protostr), fhdr)) @@ -99,7 +101,7 @@ static int do_protostrs(FILE *fhdr, const char *fname) fname_inc, line, finc_name); continue; } - ret = do_protostrs(finc, finc_name); + ret = do_protostrs(finc, finc_name, 1); fclose(finc); if (ret < 0) break; @@ -116,7 +118,8 @@ static int do_protostrs(FILE *fhdr, const char *fname) hdrfline = line; - ret = b_pp_c_handler(protostr, hdrfn, is_oslib); + ret = b_pp_c_handler(protostr, hdrfn, is_include, + is_osinc); if (ret < 0) break; } @@ -661,7 +664,8 @@ static struct parsed_proto *pp_cache; static int pp_cache_size; static int pp_cache_alloc; -static int b_pp_c_handler(char *proto, const char *fname, int is_oslib) +static int b_pp_c_handler(char *proto, const char *fname, + int is_include, int is_osinc) { int ret; @@ -679,7 +683,8 @@ static int b_pp_c_handler(char *proto, const char *fname, int is_oslib) if (ret < 0) return -1; - pp_cache[pp_cache_size].is_oslib = is_oslib; + pp_cache[pp_cache_size].is_include = is_include; + pp_cache[pp_cache_size].is_osinc = is_osinc; pp_cache_size++; return 0; } @@ -692,7 +697,7 @@ static void build_pp_cache(FILE *fhdr) pos = ftell(fhdr); rewind(fhdr); - ret = do_protostrs(fhdr, hdrfn); + ret = do_protostrs(fhdr, hdrfn, 0); if (ret < 0) exit(1);