18 va_start(argptr, format);
23 int printed = vsnprintf(line,
MAX_LINE, format, argptr);
27 if (printed <= 0)
return false;
29 const char *prefixes[
D_LVL_COUNT] = {
"ERROR",
"WARNING",
"INFO" };
30 if (
static_cast<unsigned>(lvl) >
static_cast<unsigned>(
D_LVL_COUNT)) {
34 fprintf(stderr,
"[%s] %s\n", prefixes[lvl], line);
40 for (
size_t i = 0; i < maxLen; i++ ) {
41 if (inp[i] ==
'\0')
return false;
49 for (; i < maxInp; i++) {
50 const char c = inp[i];
51 if (c ==
'\0')
return i;
54 if (acceptNotTerminated)
return i;
61 for (; i < maxInp; i++) {
62 const WORD w = inp[i];
66 if (acceptNotTerminated)
return i;
73 for ( i = 0; i < maxInp; i++) {
83 if ((c >=
'a' && c <=
'z')
84 || (c >=
'A' && c <=
'Z')
85 || (c >=
'0' && c <=
'9')
101 if (!fPtr || !bufSize)
return false;
103 for (
char i = 0; i < bufSize; i++) {
104 const char c = fPtr[i];
115 if (!fPtr || bufSize == 0)
return 0;
118 bool has_dot =
false;
122 if (*fPtr ==
'.') has_dot =
true;
124 if ((--bufSize) == 0)
break;
139 for (i = 0; i < bufSize; i++) {
148 size_t bufSize = s.length();
151 for (i = 0; i < bufSize; i++) {
160 BYTE* testblock = (BYTE*) calloc(size,
sizeof(BYTE));
162 if (memcmp (testblock, ptr, size)) {
171 if (isdigit(c))
return true;
172 if (c >=
'A' && c <=
'F')
return true;
173 if (c >=
'a' && c <=
'f')
return true;
179 if (buf == NULL)
return;
181 for (
size_t i = 0; i < bufSize; i++) {
182 if (i % pad == 0) printf(
"\n");
183 printf(
"0x%02X ", buf[i]);
190 if (str.length() < endStr.length()) {
193 size_t pos = str.length() - endStr.length();
194 std::string str3 = str.substr(pos);
195 if ( str3 == endStr ) {
bool _isFuncChar(const char c)
bool append(dbg_level lvl, const char *format,...)
bool hasNonPrintable(const char *ptr, size_t maxInp)
size_t forwarderNameLen(const char *ptr, size_t max_len)
size_t getAsciiLen(const char *ptr, size_t maxCount, bool acceptNotTerminated=false)
bool isStrLonger(const char *inp, size_t maxLen)
size_t noWhiteCount(char *buf, size_t bufSize)
bool validateFuncName(const char *fPtr, size_t bufSize)
void hexdump(BYTE *buf, size_t bufSize, size_t pad)
bool isSpaceClear(void *ptr, uint64_t size)
size_t getAsciiLenW(const WORD *ptr, size_t maxCount, bool acceptNotTerminated=false)
bool endsWith(std::string string, std::string endStr)