void logger_perror(const char *format, ...) { begin_log_line(MC_ERROR); va_list ap; va_start(ap, format); char tmp[512]; vmbuf_vsprintf(&log_buf, format, ap); vmbuf_sprintf(&log_buf, " (%s)", strerror_r(errno, tmp, 512)); va_end(ap); end_log_line(STDERR_FILENO); }
void http_server_response_sprintf(const char *status, const char *content_type, const char *format, ...) { struct http_server_context *ctx = http_server_get_context(); vmbuf_reset(&ctx->header); vmbuf_reset(&ctx->payload); http_server_header_start(status, content_type); va_list ap; va_start(ap, format); vmbuf_vsprintf(&ctx->payload, format, ap); va_end(ap); http_server_header_content_length(); http_server_header_close(); }
void logger_perror_at(const char *filename, unsigned int linenum, const char *format, ...) { begin_log_line(MC_ERROR); va_list ap; va_start(ap, format); vmbuf_sprintf(&log_buf, "[%s:%u]: ", filename, linenum); vmbuf_vsprintf(&log_buf, format, ap); char tmp[512]; vmbuf_sprintf(&log_buf, " (%s)", strerror_r(errno, tmp, 512)); va_end(ap); end_log_line(STDERR_FILENO); }
struct http_client_context *http_client_pool_post_request_init(struct http_client_pool *http_client_pool, struct in_addr addr, uint16_t port, const char *hostname, const char *format, ...) { struct http_client_context *cctx = http_client_pool_create_client(http_client_pool, addr, port, NULL); if (NULL == cctx) return NULL; vmbuf_strcpy(&cctx->request, "POST "); va_list ap; va_start(ap, format); vmbuf_vsprintf(&cctx->request, format, ap); va_end(ap); vmbuf_sprintf(&cctx->request, " HTTP/1.1\r\nHost: %s", hostname); return cctx; }
int http_client_pool_get_request(struct http_client_pool *http_client_pool, struct in_addr addr, uint16_t port, const char *hostname, const char *format, ...) { struct http_client_context *cctx = http_client_pool_create_client(http_client_pool, addr, port, NULL); if (NULL == cctx) return -1; vmbuf_strcpy(&cctx->request, "GET "); va_list ap; va_start(ap, format); vmbuf_vsprintf(&cctx->request, format, ap); va_end(ap); vmbuf_sprintf(&cctx->request, " HTTP/1.1\r\nHost: %s\r\n\r\n", hostname); if (0 > http_client_send_request(cctx)) { http_client_free(http_client_pool, cctx); return -1; } return 0; }
static int http_client_pool_post_request2( struct http_client_pool *http_client_pool, struct in_addr addr, uint16_t port, const char *hostname, const char *data, size_t size_of_data, const char *format, ...) { struct http_client_context *cctx = http_client_pool_create_client2(http_client_pool, addr, port, hostname, NULL); if (NULL == cctx) return -1; vmbuf_reset(&cctx->request); vmbuf_strcpy(&cctx->request, "POST "); va_list ap; va_start(ap, format); vmbuf_vsprintf(&cctx->request, format, ap); va_end(ap); vmbuf_sprintf(&cctx->request, " HTTP/1.1\r\nHost: %s\r\nContent-Type: application/json\r\nContent-Length: %zu\r\n\r\n", hostname, size_of_data); vmbuf_memcpy(&cctx->request, data, size_of_data); vmbuf_chrcpy(&cctx->request, '\0'); if (0 > http_client_send_request(cctx)) return http_client_free(cctx), -1; return 0; }
void logger_vlog_func_at(int fd, const char *filename, unsigned int linenum, const char *funcname, const char *format, const char *msg_class, va_list ap) { begin_log_line(msg_class); vmbuf_sprintf(&log_buf, "[%s:%u] %s(): ", filename, linenum, funcname); vmbuf_vsprintf(&log_buf, format, ap); end_log_line(fd); }
void logger_vlog(int fd, const char *format, const char *msg_class, va_list ap) { begin_log_line(msg_class); vmbuf_vsprintf(&log_buf, format, ap); end_log_line(fd); }