1*436bf2bcSAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1 */
2*436bf2bcSAndroid Build Coastguard Worker /*
3*436bf2bcSAndroid Build Coastguard Worker * Copyright (C) 2010 Red Hat Inc, Steven Rostedt <[email protected]>
4*436bf2bcSAndroid Build Coastguard Worker *
5*436bf2bcSAndroid Build Coastguard Worker */
6*436bf2bcSAndroid Build Coastguard Worker #ifndef __TEP_EVENT_UTIL_H
7*436bf2bcSAndroid Build Coastguard Worker #define __TEP_EVENT_UTIL_H
8*436bf2bcSAndroid Build Coastguard Worker
9*436bf2bcSAndroid Build Coastguard Worker #include <ctype.h>
10*436bf2bcSAndroid Build Coastguard Worker #include <stdarg.h>
11*436bf2bcSAndroid Build Coastguard Worker #include <stdbool.h>
12*436bf2bcSAndroid Build Coastguard Worker
13*436bf2bcSAndroid Build Coastguard Worker #include "event-parse.h"
14*436bf2bcSAndroid Build Coastguard Worker
15*436bf2bcSAndroid Build Coastguard Worker void tep_warning(const char *fmt, ...);
16*436bf2bcSAndroid Build Coastguard Worker void tep_info(const char *fmt, ...);
17*436bf2bcSAndroid Build Coastguard Worker
18*436bf2bcSAndroid Build Coastguard Worker /* Can be overridden */
19*436bf2bcSAndroid Build Coastguard Worker int tep_vprint(const char *name, enum tep_loglevel level,
20*436bf2bcSAndroid Build Coastguard Worker bool print_err, const char *fmt, va_list ap);
21*436bf2bcSAndroid Build Coastguard Worker
22*436bf2bcSAndroid Build Coastguard Worker /* The actual call of tep_vprint() for overrides to use */
23*436bf2bcSAndroid Build Coastguard Worker int __tep_vprint(const char *name, enum tep_loglevel level,
24*436bf2bcSAndroid Build Coastguard Worker bool print_err, const char *fmt, va_list ap);
25*436bf2bcSAndroid Build Coastguard Worker
26*436bf2bcSAndroid Build Coastguard Worker
27*436bf2bcSAndroid Build Coastguard Worker #define __deprecated(msg) __attribute__((deprecated("msg")))
28*436bf2bcSAndroid Build Coastguard Worker
29*436bf2bcSAndroid Build Coastguard Worker /* For backward compatibilty, do not use */
30*436bf2bcSAndroid Build Coastguard Worker int tep_vwarning(const char *name, const char *fmt, va_list ap) __deprecated(Use tep_vprint instead);
31*436bf2bcSAndroid Build Coastguard Worker void pr_stat(const char *fmt, ...) __deprecated(Use tep_info instead);
32*436bf2bcSAndroid Build Coastguard Worker void vpr_stat(const char *fmt, va_list ap) __deprecated(Use tep_vprint instead);
33*436bf2bcSAndroid Build Coastguard Worker void __pr_stat(const char *fmt, ...) __deprecated(Use tep_info instead);;
34*436bf2bcSAndroid Build Coastguard Worker void __vpr_stat(const char *fmt, va_list ap) __deprecated(Use tep_vprint instead);;
35*436bf2bcSAndroid Build Coastguard Worker
36*436bf2bcSAndroid Build Coastguard Worker #define min(x, y) ({ \
37*436bf2bcSAndroid Build Coastguard Worker typeof(x) _min1 = (x); \
38*436bf2bcSAndroid Build Coastguard Worker typeof(y) _min2 = (y); \
39*436bf2bcSAndroid Build Coastguard Worker (void) (&_min1 == &_min2); \
40*436bf2bcSAndroid Build Coastguard Worker _min1 < _min2 ? _min1 : _min2; })
41*436bf2bcSAndroid Build Coastguard Worker
strim(char * string)42*436bf2bcSAndroid Build Coastguard Worker static inline char *strim(char *string)
43*436bf2bcSAndroid Build Coastguard Worker {
44*436bf2bcSAndroid Build Coastguard Worker char *ret;
45*436bf2bcSAndroid Build Coastguard Worker
46*436bf2bcSAndroid Build Coastguard Worker if (!string)
47*436bf2bcSAndroid Build Coastguard Worker return NULL;
48*436bf2bcSAndroid Build Coastguard Worker while (*string) {
49*436bf2bcSAndroid Build Coastguard Worker if (!isspace(*string))
50*436bf2bcSAndroid Build Coastguard Worker break;
51*436bf2bcSAndroid Build Coastguard Worker string++;
52*436bf2bcSAndroid Build Coastguard Worker }
53*436bf2bcSAndroid Build Coastguard Worker ret = string;
54*436bf2bcSAndroid Build Coastguard Worker
55*436bf2bcSAndroid Build Coastguard Worker string = ret + strlen(ret) - 1;
56*436bf2bcSAndroid Build Coastguard Worker while (string > ret) {
57*436bf2bcSAndroid Build Coastguard Worker if (!isspace(*string))
58*436bf2bcSAndroid Build Coastguard Worker break;
59*436bf2bcSAndroid Build Coastguard Worker string--;
60*436bf2bcSAndroid Build Coastguard Worker }
61*436bf2bcSAndroid Build Coastguard Worker string[1] = 0;
62*436bf2bcSAndroid Build Coastguard Worker
63*436bf2bcSAndroid Build Coastguard Worker return ret;
64*436bf2bcSAndroid Build Coastguard Worker }
65*436bf2bcSAndroid Build Coastguard Worker
has_text(const char * text)66*436bf2bcSAndroid Build Coastguard Worker static inline int has_text(const char *text)
67*436bf2bcSAndroid Build Coastguard Worker {
68*436bf2bcSAndroid Build Coastguard Worker if (!text)
69*436bf2bcSAndroid Build Coastguard Worker return 0;
70*436bf2bcSAndroid Build Coastguard Worker
71*436bf2bcSAndroid Build Coastguard Worker while (*text) {
72*436bf2bcSAndroid Build Coastguard Worker if (!isspace(*text))
73*436bf2bcSAndroid Build Coastguard Worker return 1;
74*436bf2bcSAndroid Build Coastguard Worker text++;
75*436bf2bcSAndroid Build Coastguard Worker }
76*436bf2bcSAndroid Build Coastguard Worker
77*436bf2bcSAndroid Build Coastguard Worker return 0;
78*436bf2bcSAndroid Build Coastguard Worker }
79*436bf2bcSAndroid Build Coastguard Worker
80*436bf2bcSAndroid Build Coastguard Worker #endif
81