s4-scripting: generate a hresult_errstr() function.
[mat/samba.git] / source4 / scripting / bin / gen_hresult.py
index 6644553f3c59b7c0ecfbc30527b466701c782e3e..24d96c4a14b869cd45fbf0ee50e15d03af591a36 100755 (executable)
@@ -130,6 +130,7 @@ def generateHeaderFile(out_file):
         line = "#define {0:49} HRES_ERROR({1})\n".format(err.err_define ,err.err_code)
         out_file.write(line)
     out_file.write("\nconst char *hresult_errstr_const(HRESULT err_code);\n")
+    out_file.write("\nconst char *hresult_errstr(HRESULT err_code);\n")
     out_file.write("\n#define FACILITY_WIN32 0x0007\n")
     out_file.write("#define WIN32_FROM_HRESULT(x) (HRES_ERROR_V(x) == 0 ? HRES_ERROR_V(x) : ~((FACILITY_WIN32 << 16) | 0x80000000) & HRES_ERROR_V(x))\n")
     out_file.write("#define HRESULT_IS_LIKELY_WERR(x) ((HRES_ERROR_V(x) & 0xFFFF0000) == 0x80070000)\n")
@@ -180,6 +181,20 @@ def generateSourceFile(out_file):
     out_file.write("   }\n")
     out_file.write("   return result;\n")
     out_file.write("};\n")
+    out_file.write("\n")
+    out_file.write("const char *hresult_errstr(HRESULT err_code)\n")
+    out_file.write("{\n");
+    out_file.write("   static char msg[20];\n")
+    out_file.write("   int i;\n")
+    out_file.write("\n")
+    out_file.write("   for (i = 0; i < ARRAY_SIZE(hresult_errs); i++) {\n")
+    out_file.write("           if (HRES_IS_EQUAL(err_code, hresult_errs[i].error_code)) {\n")
+    out_file.write("                   return hresult_errs[i].error_str;\n")
+    out_file.write("           }\n")
+    out_file.write("   }\n")
+    out_file.write("   snprintf(msg, sizeof(msg), \"HRES code 0x%08x\", HRES_ERROR_V(err_code));\n")
+    out_file.write("   return msg;\n")
+    out_file.write("};\n")
 
 # Very simple script to generate files hresult.c & hresult.h
 # The script simply takes a text file as input, format of input file is