1 /* util.h
2  * Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
3  * Use of this source code is governed by a BSD-style license that can be
4  * found in the LICENSE file.
5  *
6  * Logging and other utility functions.
7  */
8 
9 #ifndef _UTIL_H_
10 #define _UTIL_H_
11 
12 #include <stdlib.h>
13 #include <syslog.h>
14 
15 #define die(_msg, ...) do { \
16 	syslog(LOG_ERR, "libminijail: " _msg, ## __VA_ARGS__); \
17 	abort(); \
18 } while (0)
19 
20 #define pdie(_msg, ...) \
21 	die(_msg ": %m", ## __VA_ARGS__)
22 
23 #define warn(_msg, ...) \
24 	syslog(LOG_WARNING, "libminijail: " _msg, ## __VA_ARGS__)
25 
26 #define info(_msg, ...) \
27 	syslog(LOG_INFO, "libminijail: " _msg, ## __VA_ARGS__)
28 
29 extern const char *log_syscalls[];
30 extern const size_t log_syscalls_len;
31 
is_android()32 static inline int is_android() {
33 #if defined(__ANDROID__)
34 	return 1;
35 #else
36 	return 0;
37 #endif
38 }
39 
running_with_asan()40 static inline int running_with_asan() {
41 #ifndef __has_feature
42 #define __has_feature(x) 0
43 #endif
44 
45 #if __has_feature(address_sanitizer)
46 	return 1;
47 #else
48 	return 0;
49 #endif
50 }
51 
52 int lookup_syscall(const char *name);
53 const char *lookup_syscall_name(int nr);
54 long int parse_constant(char *constant_str, char **endptr);
55 char *strip(char *s);
56 char *tokenize(char **stringp, const char *delim);
57 
58 #endif /* _UTIL_H_ */
59