mirror of
https://github.com/wiiu-env/gdbstub_plugin.git
synced 2024-06-01 14:18:45 +02:00
71 lines
2.1 KiB
C++
71 lines
2.1 KiB
C++
|
#include "IOUtils.h"
|
||
|
#include <cstdint>
|
||
|
#include <cstring>
|
||
|
|
||
|
#define THREAD_INFO_BUFFER_CAPACITY 0x10001
|
||
|
static char sThreadInfoBuffer[THREAD_INFO_BUFFER_CAPACITY] = {};
|
||
|
static uint32_t sThreadInfoBufferOffset = 0;
|
||
|
|
||
|
char *GetThreadInfoBuffer() {
|
||
|
sThreadInfoBuffer[sThreadInfoBufferOffset] = '\0';
|
||
|
return sThreadInfoBuffer;
|
||
|
}
|
||
|
void InitThreadInfoBuffer() {
|
||
|
memset(sThreadInfoBuffer, 0, sizeof(sThreadInfoBuffer));
|
||
|
sThreadInfoBufferOffset = 0;
|
||
|
}
|
||
|
|
||
|
bool PutStringIntoThreadInfoBuffer(const char *str) {
|
||
|
uint32_t offset = 0;
|
||
|
while (str[offset] != '\0') {
|
||
|
if (sThreadInfoBufferOffset < (THREAD_INFO_BUFFER_CAPACITY - 2)) {
|
||
|
sThreadInfoBuffer[sThreadInfoBufferOffset] = str[offset];
|
||
|
sThreadInfoBufferOffset++;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
offset++;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
bool PutCharIntoThreadInfoBuffer(char c) {
|
||
|
// we want to keep a null byte at the end
|
||
|
if (sThreadInfoBufferOffset < (THREAD_INFO_BUFFER_CAPACITY - 2)) {
|
||
|
sThreadInfoBuffer[sThreadInfoBufferOffset] = c;
|
||
|
sThreadInfoBufferOffset++;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
void PutXMLEscapedStringIntoThreadInfoBuffer(const char *str) {
|
||
|
if (str != nullptr) {
|
||
|
const char *curPtr = str;
|
||
|
while (curPtr[0] != '\0') {
|
||
|
switch (curPtr[0]) {
|
||
|
case '<':
|
||
|
PutStringIntoThreadInfoBuffer("<");
|
||
|
break;
|
||
|
case '>':
|
||
|
PutStringIntoThreadInfoBuffer(">");
|
||
|
break;
|
||
|
case '&':
|
||
|
PutStringIntoThreadInfoBuffer("&");
|
||
|
break;
|
||
|
case '"':
|
||
|
PutStringIntoThreadInfoBuffer(""");
|
||
|
break;
|
||
|
case '\'':
|
||
|
PutStringIntoThreadInfoBuffer("'");
|
||
|
break;
|
||
|
default:
|
||
|
PutCharIntoThreadInfoBuffer(curPtr[0]);
|
||
|
break;
|
||
|
}
|
||
|
curPtr++;
|
||
|
}
|
||
|
}
|
||
|
}
|