11 int whelk_win32_error(lua_State *L,DWORD err)
18 n=FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER|\
19 FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,0,err,0,
23 if (n>2 && buf[n-2]=='\r' && buf[n-1]=='\n')
25 utf8=whelk_utf16_to_utf8(buf,n);
27 lua_pushstring(L,utf8);
31 lua_pushstring(L,"Unknown error");
32 lua_pushinteger(L,err);
37 int whelk_perror(lua_State *L,const char *s)
41 lua_pushfstring(L,"%s: %s",s,strerror(errno));
43 lua_pushstring(L,strerror(errno));
44 lua_pushinteger(L,errno);
48 static int whelk_unsupported(lua_State *L)
51 return whelk_perror(L,NULL);
55 #define WIN32_ONLY(func) func
57 #define WIN32_ONLY(func) whelk_unsupported
60 static const luaL_reg whelk_functions[]={
61 { "GetFolderPath",WIN32_ONLY(whelk_get_folder_path) },
62 { "CreateShortCut",WIN32_ONLY(whelk_create_short_cut) },
63 { "Spawn",WIN32_ONLY(whelk_spawn) },
64 { "CryptCATAdmin",WIN32_ONLY(whelk_crypt_cat_admin_new) },
65 { "SetupCopyOEMInf",WIN32_ONLY(whelk_setup_copy_oem_inf) },
66 { "SetupUninstallOEMInf",WIN32_ONLY(whelk_setup_uninstall_oem_inf) },
70 LUALIB_API int luaopen_whelk(lua_State *L)
72 luaL_register(L,"whelk",whelk_functions);
73 lua_pushliteral(L,"version");
74 lua_pushliteral(L,PACKAGE_STRING);
77 whelk_open_get_folder_path(L);
78 whelk_open_reg_keys(L);