mirror of
https://github.com/opencontainers/runc.git
synced 2026-04-25 00:46:44 +08:00
067b8335e7
We use bail to report fatal errors, and bail always append %m (aka strerror(errno)). In case an error condition did not set errno, the log message will end up with ": Success" or an error from a stale errno value. Either case is confusing for users. Introduce bailx which is the same as bail except it does not append %m, and use it where appropriate. The naming follows libc's err(3) and errx(3). PS we still use bail in a few cases after read or write, even if that read/write did not return an error, because the code does not distinguish between short read/write and error (-1). This will be addressed by the next commit. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
46 lines
1.2 KiB
C
46 lines
1.2 KiB
C
#ifndef NSENTER_LOG_H
|
|
#define NSENTER_LOG_H
|
|
|
|
#include <stdbool.h>
|
|
#include <stdio.h>
|
|
|
|
/*
|
|
* Log levels are the same as in logrus.
|
|
*/
|
|
#define PANIC 0
|
|
#define FATAL 1
|
|
#define ERROR 2
|
|
#define WARNING 3
|
|
#define INFO 4
|
|
#define DEBUG 5
|
|
#define TRACE 6
|
|
|
|
/*
|
|
* Sets up logging by getting log fd and log level from the environment,
|
|
* if available.
|
|
*/
|
|
void setup_logpipe(void);
|
|
|
|
bool log_enabled_for(int level);
|
|
|
|
void write_log(int level, const char *format, ...) __attribute__((format(printf, 2, 3)));
|
|
|
|
extern int logfd;
|
|
|
|
/* bailx logs a message to logfd (or stderr, if logfd is not available)
|
|
* and terminates the program.
|
|
*/
|
|
#define bailx(fmt, ...) \
|
|
do { \
|
|
if (logfd < 0) \
|
|
fprintf(stderr, "FATAL: " fmt "\n", ##__VA_ARGS__); \
|
|
else \
|
|
write_log(FATAL, fmt, ##__VA_ARGS__); \
|
|
exit(1); \
|
|
} while(0)
|
|
|
|
/* bail is the same as bailx, except it also adds ": %m" (errno). */
|
|
#define bail(fmt, ...) bailx(fmt ": %m", ##__VA_ARGS__)
|
|
|
|
#endif /* NSENTER_LOG_H */
|