#include #include #include #define LOG_INFO "" #define LOG_ERR "" #define log(fmt,...) fprintf(stderr, "[%s] " fmt "\n", __func__, ##__VA_ARGS__) #define log_nop(...) #ifdef NDEBUG #define log_debug log #else #define log_debug log_nop #endif #define log_errno(go, fmt, ...) ({ \ char err[255]; \ strerror_r(errno, err, sizeof(err)-1); \ \ log_error(go, fmt ": %s" , ##__VA_ARGS__, err); \ }) #define log_error(go, fmt, ...) ({ \ log(LOG_ERR " " fmt, ##__VA_ARGS__); \ go; \ }) \ #define log_gai(go, rv, fmt, ...) ({ \ if(rv == EAI_SYSTEM) \ log_errno(go, "[gai] " fmt, ##__VA_ARGS__); \ else \ log(LOG_ERR fmt "%s\n", gai_strerror(rv), ##__VA_ARGS__); \ })