starting data converter tool
[ia32rtools.git] / tools / protoparse.h
index ec9d4ad..b49c216 100644 (file)
@@ -124,6 +124,7 @@ static const char *known_type_mod[] = {
        "unsigned",
        "struct",
        "enum",
+       "CONST",
 };
 
 static const char *known_ptr_types[] = {
@@ -136,17 +137,24 @@ static const char *known_ptr_types[] = {
        "HGDIOBJ",
        "HGLOBAL",
        "HINSTANCE",
+       "HIMC",
        "HMODULE",
        "HRGN",
        "HRSRC",
        "HKEY",
        "HMENU",
        "HWND",
-       "PLONG",
+       "PCRITICAL_SECTION",
        "PDWORD",
+       "PHKEY",
+       "PLONG",
+       "PMEMORY_BASIC_INFORMATION",
+       "PUINT",
        "PVOID",
        "PCVOID",
        "DLGPROC",
+       "TIMERPROC",
+       "WNDENUMPROC",
        "va_list",
        "__VALIST",
 };
@@ -232,6 +240,9 @@ static int check_type(const char *name, struct parsed_type *type)
 
        ret = n1 - name;
        type->name = strndup(name, ret);
+       if (IS(type->name, "VOID"))
+               memcpy(type->name, "void", 4);
+
        return ret;
 }
 
@@ -431,8 +442,14 @@ static int parse_protostr(char *protostr, struct parsed_proto *pp)
                        p++;
                        break;
                }
-               if (*p == ',')
+               if (xarg > 0) {
+                       if (*p != ',') {
+                               printf("%s:%d:%zd: ',' expected\n",
+                                hdrfn, hdrfline, (p - protostr) + 1);
+                               return -1;
+                       }
                        p = sskip(p + 1);
+               }
 
                if (!strncmp(p, "...", 3)) {
                        pp->is_vararg = 1;