]> git.stg.codes - stg.git/commitdiff
Fix settings error reporting mechanism
authorMaxim Mamontov <faust.madf@gmail.com>
Mon, 11 Apr 2011 19:36:20 +0000 (22:36 +0300)
committerMaxim Mamontov <faust.madf@gmail.com>
Mon, 11 Apr 2011 19:36:20 +0000 (22:36 +0300)
projects/stargazer/settings_impl.cpp
stglibs/dotconfpp.lib/dotconfpp.cpp

index e0eb46399b79dd2eafeaf4538e4aa29e3ede36ec..d5fb2dad0b6366369ddcf672ab6696b20386fcb2 100644 (file)
@@ -235,9 +235,9 @@ return 0;
 //-----------------------------------------------------------------------------
 void SETTINGS_IMPL::ErrorCallback(void * data, const char * buf)
 {
-    printfd(__FILE__, buf);
+    printfd(__FILE__, "SETTINGS_IMPL::ErrorCallback() - %s\n", buf);
     SETTINGS_IMPL * settings = static_cast<SETTINGS_IMPL *>(data);
-    settings->logger(buf);
+    settings->logger("%s", buf);
 }
 //-----------------------------------------------------------------------------
 int SETTINGS_IMPL::ReadSettings()
index ceca3ab2e03c30c7f25447de913c8027420728a5..8ac254405b493b9229005e8da7b5eb0e15786fe2 100644 (file)
@@ -339,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;
     }
 
@@ -509,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);