X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/641204dfbdb9fc870cdd2e7f9e3169a44693e7bf..868373be936ab08e51e1512a5173674ce64a2c70:/stglibs/dotconfpp.lib/dotconfpp.cpp?ds=inline diff --git a/stglibs/dotconfpp.lib/dotconfpp.cpp b/stglibs/dotconfpp.lib/dotconfpp.cpp index b82ae818..8ac25440 100644 --- a/stglibs/dotconfpp.lib/dotconfpp.cpp +++ b/stglibs/dotconfpp.lib/dotconfpp.cpp @@ -20,6 +20,7 @@ #include #include "dotconfpp.h" +#include "mempool.h" DOTCONFDocumentNode::DOTCONFDocumentNode():previousNode(NULL), nextNode(NULL), parentNode(NULL), childNode(NULL), values(NULL), valuesCount(0), @@ -338,7 +339,7 @@ int DOTCONFDocument::setContent(const char * _fileName) char realpathBuf[PATH_MAX]; if(realpath(_fileName, realpathBuf) == NULL){ - error(0, NULL, "realpath(%s) failed: %s", _fileName, strerror(errno)); + error(0, _fileName, "realpath('%s') failed: %s", _fileName, strerror(errno)); return -1; } @@ -397,6 +398,7 @@ int DOTCONFDocument::setContent(const char * _fileName) case GLOB_NOSPACE: error(tagNode->lineNum, tagNode->fileName, "glob call failed for '%s': no free space", nodeFilePath.c_str()); return -1; +#ifndef FREE_BSD case GLOB_ABORTED: // printf("Read error\n"); // Ignore that error @@ -405,6 +407,7 @@ int DOTCONFDocument::setContent(const char * _fileName) // printf("No match\n"); // Ignore that error break; +#endif default: error(tagNode->lineNum, tagNode->fileName, "glob call failed for '%s': unknown error", nodeFilePath.c_str()); return -1; @@ -506,13 +509,17 @@ void DOTCONFDocument::error(int lineNum, const char * fileName, const char * fmt va_list args; va_start(args, fmt); - size_t len = (lineNum!=0?strlen(fileName):0) + strlen(fmt) + 50; + char msg[256]; + + vsnprintf(msg, 256, fmt, args); + + size_t len = (lineNum!=0?strlen(fileName):0) + strlen(msg) + 50; char * buf = (char*)mempool->alloc(len); if(lineNum) - (void) snprintf(buf, len, "DOTCONF++: file '%s', line %d: %s\n", fileName, lineNum, fmt); + (void) snprintf(buf, len, "DOTCONF++: file '%s', line %d: %s\n", fileName, lineNum, msg); else - (void) snprintf(buf, len, "DOTCONF++: %s\n", fmt); + (void) snprintf(buf, len, "DOTCONF++: file '%s': %s\n", fileName, msg); if (errorCallback) { errorCallback(errorCallbackData, buf);