summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--utils/log.c15
-rw-r--r--utils/log.h20
2 files changed, 31 insertions, 4 deletions
diff --git a/utils/log.c b/utils/log.c
index c6da42228..47fdfaad0 100644
--- a/utils/log.c
+++ b/utils/log.c
@@ -20,6 +20,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <stdarg.h>
#include <stdio.h>
#include <sys/time.h>
#include "desktop/netsurf.h"
@@ -45,3 +46,17 @@ const char *nslog_gettime(void)
snprintf(buff, sizeof(buff),"(%ld.%ld)", (long)tv.tv_sec, (long)tv.tv_usec);
return buff;
}
+
+void nslog_log(const char *format, ...)
+{
+ if (verbose_log) {
+ va_list ap;
+
+ va_start(ap, format);
+
+ vfprintf(stderr, format, ap);
+
+ va_end(ap);
+ }
+}
+
diff --git a/utils/log.h b/utils/log.h
index b676c65bf..b59b6d3f8 100644
--- a/utils/log.h
+++ b/utils/log.h
@@ -28,15 +28,27 @@
#else
extern const char *nslog_gettime(void);
+extern void nslog_log(const char *format, ...);
# ifdef __GNUC__
-# define LOG(x) do { if (verbose_log) (printf("%s " __FILE__ " %s %i: ", nslog_gettime(), __PRETTY_FUNCTION__, __LINE__), printf x, fputc('\n', stdout)); } while (0)
-
+# define LOG_FN __PRETTY_FUNCTION__
+# define LOG_LN __LINE__
# elif defined(__CC_NORCROFT)
-# define LOG(x) do { if (verbose_log) (printf("%s "__FILE__ " %s %i: ", nslog_gettime(), __func__, __LINE__), printf x, fputc('\n', stdout)); } while (0)
+# define LOG_FN __func__
+# define LOG_LN __LINE__
# else
-# define LOG(x) do { if (verbose_log) (printf("%s" __FILE__ " %i: ", nslog_gettime(), __LINE__), printf x, fputc('\n', stdout)); } while (0)
+# define LOG_FN ""
+# define LOG_LN __LINE__
# endif
+
+#define LOG(x) \
+ do { \
+ nslog_log("%s " __FILE__ " %s %i: ", \
+ nslog_gettime(), LOG_FN, LOG_LN); \
+ nslog_log x; \
+ nslog_log("\n"); \
+ } while(0)
+
#endif
#endif