Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/windirstat.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '3rdparty/lua/src/modules/lua-winreg/src/winreg.c')
-rw-r--r--3rdparty/lua/src/modules/lua-winreg/src/winreg.c58
1 files changed, 24 insertions, 34 deletions
diff --git a/3rdparty/lua/src/modules/lua-winreg/src/winreg.c b/3rdparty/lua/src/modules/lua-winreg/src/winreg.c
index 4ea9795..a787b87 100644
--- a/3rdparty/lua/src/modules/lua-winreg/src/winreg.c
+++ b/3rdparty/lua/src/modules/lua-winreg/src/winreg.c
@@ -3,9 +3,7 @@
#endif
#include <assert.h>
-#ifndef lua_assert
-# define lua_assert assert
-#endif // lua_assert
+#define lua_assert assert
#include <lua.h>
#include <lualib.h>
@@ -40,19 +38,14 @@
#endif
-#ifdef LUA_REG_AS_DLL
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved){
UNUSED(hModule);
UNUSED(lpReserved);
UNUSED(ul_reason_for_call);
- return TRUE;
+ return TRUE;
}
-__declspec(dllexport)
-#else
-LUA_API
-#endif // LUA_REG_AS_DLL
-int luaopen_winreg(lua_State *L){
+__declspec(dllexport) int luaopen_winreg(lua_State *L){
luaL_register(L, "winreg", lreg_reglib);
return 1;
}
@@ -104,8 +97,20 @@ REGSAM reg_aux_getaccess(lua_State *L, int i){
case 'w': acc |= KEY_WRITE; break;
case 'r': acc |= KEY_READ ; break;
case 'a': acc |= KEY_ALL_ACCESS ; break;
- case 'X': acc |= KEY_WOW64_64KEY ; break;
- case 'x': acc |= KEY_WOW64_32KEY ; break;
+#ifdef KEY_WOW64_64KEY
+ case '6': if(*++psz == '4') {
+ // Access a 64-bit key from either a 32-bit or 64-bit application
+ acc |= KEY_WOW64_64KEY;
+ break;
+ }
+#endif
+#ifdef KEY_WOW64_32KEY
+ case '3': if(*++psz == '2') {
+ // Access a 64-bit key from either a 32-bit or 64-bit application
+ acc |= KEY_WOW64_32KEY;
+ break;
+ }
+#endif
default : lua_error_invalid_option(L, i);
}
}
@@ -146,7 +151,7 @@ HKEY reg_aux_strtohkey(lua_State *L, const char * psz){
WIN_TRACEA("DIGIT ROOTKEY %s", psz);
return (HKEY)(size_t)x;
}else{
- for(pph = ph; pph->name && _stricmp(psz, pph->name); pph++);
+ for(pph = ph; pph->name && stricmp(psz, pph->name); pph++);
if(!pph->data)luaL_error(L, "invalid prefix key '%s'", psz);
return (HKEY)pph->data;
}
@@ -194,7 +199,7 @@ int reglib_openkey(lua_State *L){//reglib.openkey
const TCHAR * pszMachine;
const char * pszRootKey;
// \\computer_name\hkxx
- while(szPath[0] && ISSLASH(szPath[0]) )szPath++;// skip the beginning slashes
+ while(szPath[0] && ISSLASH(szPath[0]) )szPath++;// skip the begining slashes
reg_aux_splitkey(L, szPath);
pszMachine = lua_totstring(L,-1);
pszRootKey = lua_tostring(L,-2);
@@ -289,7 +294,7 @@ BOOL reg_aux_setvalue(lua_State *L, HKEY hKey, const TCHAR * pszVal, int type, i
luaL_buffinit(L, &B);
if(lua_istable(L, i)){
int n;
- int last = (int)lua_objlen(L, i);
+ int last = lua_objlen(L, i);
for (n = 1; n <= last; n++) {
lua_rawgeti(L, i, n);
luaL_addstring(&B, lua_checkstring(L, -1));
@@ -337,10 +342,7 @@ void reg_aux_pusheregstrdata(lua_State *L, PVOID pdata, size_t cdata, DWORD dwTy
}else{
n = (DWORD64)(*((PDWORD32)pdata));
}
- if(0 == _ui64toa_s(n, buf, _countof(buf) - 1, 10))
- lua_pushstring(L, buf);
- else
- LUA_CHECK_DLL_ERROR(L, ERROR_INVALID_DATA);
+ lua_pushstring(L, _ui64toa(n, buf, 10));
}
break; case REG_MULTI_SZ:
{
@@ -370,7 +372,7 @@ void reg_aux_pusheregluadata(lua_State *L, PVOID pdata, size_t cdata, DWORD dwTy
case REG_DWORD: case REG_DWORD_BIG_ENDIAN:
lua_pushnumber(L, *((PDWORD32)pdata));
break; case REG_QWORD:
- lua_pushUINT64(L, *((PDWORD64)pdata), "reg_aux_pusheregluadata(REG_QWORD)", __FILE__, __LINE__);
+ lua_pushUINT64(L, *((PDWORD64)pdata));
break; case REG_MULTI_SZ:
{
int c = 1;
@@ -390,7 +392,7 @@ void reg_aux_pusheregluadata(lua_State *L, PVOID pdata, size_t cdata, DWORD dwTy
}
typedef struct _REG_ENUM_TAG { // rc
HKEY hKey;
- DWORD dwIndex;
+ DWORD dwIndex;
PTSTR buffer;
DWORD bchlen;
} REG_ENUM_TAG;
@@ -459,13 +461,7 @@ int reg_createkey(lua_State *L){//regobj.createkey
}
//docok
int reg_deletekey(lua_State *L){//regobj.deletekey
- LONG ret;
- // the key name is optional
- if(reg_aux_gethkey(L,1) && lua_isnoneornil(L, 2))
- {
- lua_pushtstring(L, TEXT(""));
- }
- ret = win_reg_deltree(reg_aux_gethkey(L,1), lua_checktstring(L, 2));
+ LONG ret = win_reg_deltree(reg_aux_gethkey(L,1), lua_checktstring(L, 2));
LUA_CHECK_DLL_ERROR(L, ret);
LUA_CHECK_RETURN_OBJECT(L, ret == ERROR_SUCCESS);
}
@@ -576,7 +572,6 @@ int reg_getvalue(lua_State *L){//regobj.getvalue
}
return 2;
}
-#ifndef LUA_REG_NO_HIVEOPS
//docok
int reg_loadkey(lua_State *L){//regobj.load
LONG ret;
@@ -585,14 +580,12 @@ int reg_loadkey(lua_State *L){//regobj.load
LUA_CHECK_DLL_ERROR(L, ret);
LUA_CHECK_RETURN_OBJECT(L, ret == ERROR_SUCCESS);
}
-#endif // LUA_REG_NO_HIVEOPS
//docok
int reg_openkey(lua_State *L){//regobj.openkey
reg_aux_newkey(L, reg_aux_gethkey(L, 1),
lua_checktstring(L, 2), NULL, reg_aux_getaccess(L, 3), FALSE);
return 1;
}
-#ifndef LUA_REG_NO_HIVEOPS
//docok
int reg_replacekey(lua_State *L){//regobj.replace
LONG ret;
@@ -623,14 +616,12 @@ int reg_savekey(lua_State *L){//regobj.save
LUA_CHECK_DLL_ERROR(L, ret);
LUA_CHECK_RETURN_OBJECT(L, ret == ERROR_SUCCESS);
}
-#endif // LUA_REG_NO_HIVEOPS
//docok
int reg_setvalue(lua_State *L){//regobj.setvalue
LUA_CHECK_RETURN_OBJECT(L,
reg_aux_setvalue(L, reg_aux_gethkey(L, 1), lua_opttstring(L, 2, NULL), reg_aux_getdatatype(L, 4), 3)
);
}
-#ifndef LUA_REG_NO_HIVEOPS
//docok
int reg_unloadkey(lua_State *L){//regobj.unload
LONG ret;
@@ -639,7 +630,6 @@ int reg_unloadkey(lua_State *L){//regobj.unload
LUA_CHECK_DLL_ERROR(L, ret);
LUA_CHECK_RETURN_OBJECT(L, ret == ERROR_SUCCESS);
}
-#endif // LUA_REG_NO_HIVEOPS
int reg_handle(lua_State *L){//regobj.handle
HKEY hKey = reg_aux_gethkey(L, 1);