/* * util.h - routeup/tlsdated utility functions * Copyright (c) 2012 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef UTIL_H #define UTIL_H #include <errno.h> #include <string.h> #include <stdlib.h> #if _PLAN9_SOURCE #define API #else #define API __attribute__((visibility("default"))) #endif extern int verbose; extern int verbose_debug; void die (const char *fmt, ...); void verb (const char *fmt, ...); extern void logat(int isverbose, const char *fmt, ...); #define info(fmt, ...) logat(1, fmt, ## __VA_ARGS__) #define pinfo(fmt, ...) logat(1, fmt ": %s", ## __VA_ARGS__, strerror(errno)) #define error(fmt, ...) logat(0, fmt, ## __VA_ARGS__) #define perror(fmt, ...) logat(0, fmt ": %s", ## __VA_ARGS__, strerror(errno)) #define fatal(fmt, ...) do { logat(0, fmt, ## __VA_ARGS__); exit(1); } while (0) #define pfatal(fmt, ...) do { \ logat(0, fmt ": %s", ## __VA_ARGS__, strerror(errno)); \ exit(1); \ } while (0) static inline int min(int x, int y) { return x < y ? x : y; } void drop_privs_to (const char *user, const char *group, const char **supp_groups); #endif /* !UTIL_H */