#endif
#ifdef DEBUG
-#define LOGE(...) do_log("ERR", __func__, __VA_ARGS__)
-#define LOGW(...) do_log("WRN", __func__, __VA_ARGS__)
+#define LOGE(...) do_log("ERR", __func__, __LINE__, __VA_ARGS__)
+#define LOGW(...) do_log("WRN", __func__, __LINE__, __VA_ARGS__)
#ifdef USE_LOG_ONCE
#define TOKENPASTE(x, y) x ## y
#define LOG_ONCE_E(...)
#endif
-static inline void do_log(const char *prefix, const char *funcname, ...)
+static inline void do_log(const char *prefix, const char *funcname, int line, ...)
{
va_list ap;
const char *fmt;
- fprintf(stderr, "[%s][%f] (%s):", prefix, get_uptime(), funcname);
+ fprintf(stderr, "[%s][%f] (%s:%d):", prefix, get_uptime(), funcname, line);
va_start(ap, funcname);
fmt = va_arg(ap, const char *);
#define LOGI(...)
#define LOGI_(...)
#else
- #define LOGI(...) do_log("INF", __func__, __VA_ARGS__)
+ #define LOGI(...) do_log("INF", __func__, __LINE__, __VA_ARGS__)
#define LOGI_(...) do { \
fprintf(stderr, __VA_ARGS__); \
fflush(stderr); \