aboutsummaryrefslogtreecommitdiff
path: root/Src/nu/trace.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/nu/trace.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/nu/trace.cpp')
-rw-r--r--Src/nu/trace.cpp86
1 files changed, 86 insertions, 0 deletions
diff --git a/Src/nu/trace.cpp b/Src/nu/trace.cpp
new file mode 100644
index 00000000..77faf092
--- /dev/null
+++ b/Src/nu/trace.cpp
@@ -0,0 +1,86 @@
+#include "./trace.h"
+#include <strsafe.h>
+
+#ifdef _DEBUG
+
+#ifdef __cplusplus
+extern "C" {
+#endif /*__cplusplus*/
+
+void DebugPrintfW(LPCWSTR format, ...)
+{
+ va_list argList;
+ wchar_t *pstr(NULL);
+ void *buffer;
+ size_t allocated(0), remaining(0);
+ int attempt(0);
+
+ va_start(argList, format);
+
+ do
+ {
+ attempt++;
+ if(attempt)
+ {
+ allocated += (512 * attempt);
+ buffer = realloc(pstr, allocated * sizeof(wchar_t));
+ if (NULL == buffer)
+ break;
+
+ pstr = (wchar_t*)buffer;
+ }
+
+ }
+ while (STRSAFE_E_INSUFFICIENT_BUFFER == StringCchVPrintfExW(pstr, allocated, NULL, &remaining,
+ STRSAFE_NULL_ON_FAILURE, format, argList));
+
+ OutputDebugStringW(pstr);
+
+ if (NULL != pstr)
+ free(pstr);
+
+ va_end(argList);
+
+}
+
+void DebugPrintfA(LPCSTR format, ...)
+{
+ va_list argList;
+ char *pstr(NULL);
+ void *buffer;
+ size_t allocated(0), remaining(0);
+ int attempt(0);
+
+ va_start(argList, format);
+
+ do
+ {
+ attempt++;
+ if(attempt)
+ {
+ allocated += (512 * attempt);
+ buffer = realloc(pstr, allocated * sizeof(char));
+ if (NULL == buffer)
+ break;
+
+ pstr = (char*)buffer;
+ }
+
+ }
+ while (STRSAFE_E_INSUFFICIENT_BUFFER == StringCchVPrintfExA(pstr, allocated, NULL, &remaining,
+ STRSAFE_NULL_ON_FAILURE, format, argList));
+
+ OutputDebugStringA(pstr);
+
+ if (NULL != pstr)
+ free(pstr);
+
+ va_end(argList);
+}
+
+
+#ifdef __cplusplus
+}
+#endif /*__cplusplus*/
+
+#endif /*_DEBUG*/ \ No newline at end of file