diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 313605f0..8dc997b8 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -27,6 +27,8 @@ add_library(appleii SHARED linux/benchmark.cpp linux/paddle.cpp linux/version.cpp + linux/stringcb.cpp + linux/registry.cpp Z80VICE/z80.cpp Z80VICE/z80mem.cpp diff --git a/source/linux/registry.cpp b/source/linux/registry.cpp new file mode 100644 index 00000000..a9ce0e03 --- /dev/null +++ b/source/linux/registry.cpp @@ -0,0 +1,18 @@ +#include "linux/wincompat.h" +#include "linux/stringcb.h" +#include "linux/interface.h" + +BOOL RegLoadString (LPCTSTR section, LPCTSTR key, BOOL peruser, LPTSTR buffer, DWORD chars, LPCTSTR defaultValue) +{ + BOOL success = RegLoadString(section, key, peruser, buffer, chars); + if (!success) + StringCbCopy(buffer, chars, defaultValue); + return success; +} + +BOOL RegLoadValue (LPCTSTR section, LPCTSTR key, BOOL peruser, DWORD* value, DWORD defaultValue) { + BOOL success = RegLoadValue(section, key, peruser, value); + if (!success) + *value = defaultValue; + return success; +} diff --git a/source/linux/stringcb.cpp b/source/linux/stringcb.cpp new file mode 100644 index 00000000..105339fa --- /dev/null +++ b/source/linux/stringcb.cpp @@ -0,0 +1,16 @@ +#include "linux/stringcb.h" +#include + +HRESULT StringCbCopy(char * pszDest, const size_t cbDest, const char * pszSrc) +{ + strncpy(pszDest, pszSrc, cbDest - 1); + pszDest[cbDest - 1] = '\0'; + return 0; +} + +HRESULT StringCbCat(char * pszDest, const size_t cbDest, const char * pszSrc) +{ + strncat(pszDest, pszSrc, cbDest - strlen(pszDest) - 1); + pszDest[cbDest - 1] = '\0'; + return 0; +} diff --git a/source/linux/stringcb.h b/source/linux/stringcb.h new file mode 100644 index 00000000..0d8443e0 --- /dev/null +++ b/source/linux/stringcb.h @@ -0,0 +1,5 @@ +#include "linux/wincompat.h" + +HRESULT StringCbCopy(char * pszDest, const size_t cbDest, const char * pszSrc); +HRESULT StringCbCat(char * pszDest,const size_t cbDest, const char * pszSrc); +#define StringCbPrintf snprintf diff --git a/source/linux/wwrapper.h b/source/linux/wwrapper.h index b92b8acb..ab38b06a 100644 --- a/source/linux/wwrapper.h +++ b/source/linux/wwrapper.h @@ -5,6 +5,7 @@ #include "linux/wincompat.h" #include "linux/dummies.h" +#include "linux/stringcb.h" #include "minizip/unzip.h" #define FILE_BEGIN SEEK_SET