X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=tools%2Fprotoparse.h;h=d9f6ef8b2c7cfae3b41392e5474bc6eacc565ca3;hb=36595fd27d06b03f1abf320bd511aec325845ed5;hp=113f3b9ea4f58a8bd2f73f8b3a9952495e1af068;hpb=1cd4a6637bcc91c6daadfac995e9ed9fba6680cf;p=ia32rtools.git diff --git a/tools/protoparse.h b/tools/protoparse.h index 113f3b9..d9f6ef8 100644 --- a/tools/protoparse.h +++ b/tools/protoparse.h @@ -46,6 +46,8 @@ static int do_protostrs(FILE *fhdr, const char *fname) const char *finc_name; const char *hdrfn_saved; char protostr[256]; + char path[256]; + char fname_inc[256]; FILE *finc; int line = 0; int ret; @@ -63,10 +65,19 @@ static int do_protostrs(FILE *fhdr, const char *fname) if (p != NULL) *p = 0; - finc = fopen(finc_name, "r"); + path[0] = 0; + p = strrchr(hdrfn_saved, '/'); + if (p) { + memcpy(path, hdrfn_saved, + p - hdrfn_saved + 1); + path[p - hdrfn_saved + 1] = 0; + } + snprintf(fname_inc, sizeof(fname_inc), "%s%s", + path, finc_name); + finc = fopen(fname_inc, "r"); if (finc == NULL) { printf("%s:%d: can't open '%s'\n", - fname, line, finc_name); + fname_inc, line, finc_name); continue; } ret = do_protostrs(finc, finc_name); @@ -149,6 +160,7 @@ static const char *known_ptr_types[] = { "PHKEY", "PLONG", "PMEMORY_BASIC_INFORMATION", + "PUINT", "PVOID", "PCVOID", "DLGPROC", @@ -600,7 +612,8 @@ static void build_pp_cache(FILE *fhdr) qsort(pp_cache, pp_cache_size, sizeof(pp_cache[0]), pp_name_cmp); } -static const struct parsed_proto *proto_parse(FILE *fhdr, const char *sym) +static const struct parsed_proto *proto_parse(FILE *fhdr, const char *sym, + int quiet) { const struct parsed_proto *pp_ret; struct parsed_proto pp_search; @@ -614,7 +627,7 @@ static const struct parsed_proto *proto_parse(FILE *fhdr, const char *sym) strcpy(pp_search.name, sym); pp_ret = bsearch(&pp_search, pp_cache, pp_cache_size, sizeof(pp_cache[0]), pp_name_cmp); - if (pp_ret == NULL) + if (pp_ret == NULL && !quiet) printf("%s: sym '%s' is missing\n", hdrfn, sym); return pp_ret;