#endif
// would be nice if __FUNC__ could be concatenated at compile time
-#define __SOURCELOC__ (sprintf("^7%s^9" "(" "^9"__FILE__"^7" ":" "^9"STR(__LINE__)"^7" ")", __FUNC__))
+#if 0
+ // less work, bigger binary
+ #define __SOURCELOC__ (sprintf("^7%s^9" "(" "^9"__FILE__"^7" ":" "^9"STR(__LINE__)"^7" ")", __FUNC__))
+#else
+ #define __SOURCELOC__ (sprintf("^7%s^9" "(" "^9%s^7" ":" "^9%s^7" ")", __FUNC__, __FILE__, STR(__LINE__)))
+#endif
#define _LOG_HEADER(level) "^9[::" "^7"PROGNAME"^9" "::" level"^9" "] ", __SOURCELOC__
#define _LOG(f, level, s) \
#define _LOG_INFO(s) \
MACRO_BEGIN { \
dprint(_LOG_HEADER("^5INFO")); \
- print("\n^7", s); \
+ string __s = s; \
+ print("\n^7", __s); \
+ /* TODO: unconditionally add a newline when possible */ \
+ if (str2chr(__s, strlen(__s) - 1) != '\n') { print("\n"); } \
} MACRO_END
#define LOG_TRACE(...) _LOG_TRACE(strcat1n(__VA_ARGS__))