notaz.gp2x.de
/
ia32rtools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
minor fixes, winsvc api
[ia32rtools.git]
/
tools
/
protoparse.h
diff --git
a/tools/protoparse.h
b/tools/protoparse.h
index
a3eb0e6
..
7b449be
100644
(file)
--- a/
tools/protoparse.h
+++ b/
tools/protoparse.h
@@
-42,8
+42,10
@@
struct parsed_proto {
unsigned int is_fastcall:1;
unsigned int is_vararg:1; // vararg func
unsigned int is_fptr:1;
unsigned int is_fastcall:1;
unsigned int is_vararg:1; // vararg func
unsigned int is_fptr:1;
+ unsigned int is_import:1; // data import
unsigned int is_noreturn:1;
unsigned int is_unresolved:1;
unsigned int is_noreturn:1;
unsigned int is_unresolved:1;
+ unsigned int is_guessed:1; // for extra checking
unsigned int is_userstack:1;
unsigned int is_include:1; // not from top-level header
unsigned int is_osinc:1; // OS/system library func
unsigned int is_userstack:1;
unsigned int is_include:1; // not from top-level header
unsigned int is_osinc:1; // OS/system library func
@@
-214,6
+216,7
@@
static const char *known_ptr_types[] = {
"HRSRC",
"HKEY",
"HMENU",
"HRSRC",
"HKEY",
"HMENU",
+ "HMONITOR",
"HWAVEOUT",
"HWND",
"PAPPBARDATA",
"HWAVEOUT",
"HWND",
"PAPPBARDATA",
@@
-236,6
+239,8
@@
static const char *known_ptr_types[] = {
"REFCLSID",
"REFGUID",
"REFIID",
"REFCLSID",
"REFGUID",
"REFIID",
+ "SC_HANDLE",
+ "SERVICE_STATUS_HANDLE",
"HOOKPROC",
"DLGPROC",
"TIMERPROC",
"HOOKPROC",
"DLGPROC",
"TIMERPROC",
@@
-402,6
+407,9
@@
static int parse_arg(char **p_, struct parsed_proto_arg *arg, int xarg)
if (ret < 0)
return -1;
if (ret < 0)
return -1;
+ if (IS_START(arg->pp->name, "guess"))
+ arg->pp->is_guessed = 1;
+
// we don't use actual names right now...
snprintf(arg->pp->name, sizeof(arg->pp->name), "a%d", xarg);
// we don't use actual names right now...
snprintf(arg->pp->name, sizeof(arg->pp->name), "a%d", xarg);
@@
-462,6
+470,11
@@
static int parse_protostr(char *protostr, struct parsed_proto *pp)
p = sskip(p + l + 1);
}
p = sskip(p + l + 1);
}
+ if (IS_START(p, "DECL_IMPORT ")) {
+ pp->is_import = 1;
+ p = sskip(p + 12);
+ }
+
ret = check_type(p, &pp->ret_type);
if (ret <= 0) {
printf("%s:%d:%zd: unhandled return in '%s'\n",
ret = check_type(p, &pp->ret_type);
if (ret <= 0) {
printf("%s:%d:%zd: unhandled return in '%s'\n",