#include <glob.h> // glob
#include <string>
-#include "dotconfpp.h"
+#include "stg/dotconfpp.h"
+#include "mempool.h"
DOTCONFDocumentNode::DOTCONFDocumentNode():previousNode(NULL), nextNode(NULL), parentNode(NULL), childNode(NULL),
values(NULL), valuesCount(0),
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;
}
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
// 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;
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);