aboutsummaryrefslogtreecommitdiffstats
path: root/pseudo.h
blob: 57681fb3df6207afa6843433533aada2e0f5dcca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
 * pseudo.h, shared definitions and structures for pseudo
 *
 * Copyright (c) 2008-2010 Wind River Systems, Inc.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the Lesser GNU General Public License version 2.1 as
 * published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the Lesser GNU General Public License for more details.
 *
 * You should have received a copy of the Lesser GNU General Public License
 * version 2.1 along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
 *
 */
#include <stdlib.h>

typedef enum {
	OP_UNKNOWN = -1,
	OP_NONE = 0,
	OP_CHDIR,
	OP_CHMOD,
	OP_CHOWN,
	OP_CLOSE,
	OP_CREAT,
	OP_DUP,
	OP_FCHMOD,
	OP_FCHOWN,
	OP_FSTAT,
	OP_LINK,
	OP_MKDIR,
	OP_MKNOD,
	OP_OPEN,
	OP_RENAME,
	OP_STAT,
	OP_UNLINK,
	OP_SYMLINK,
	OP_MAX
} op_id_t;
extern char *pseudo_op_name(op_id_t id);
extern op_id_t pseudo_op_id(char *name);

typedef enum {
	RESULT_UNKNOWN = -1,
	RESULT_NONE = 0,
	RESULT_SUCCEED,
	RESULT_FAIL,
	RESULT_ERROR,
	RESULT_MAX
} res_id_t;
extern char *pseudo_res_name(res_id_t id);
extern res_id_t pseudo_res_id(char *name);

typedef enum {
	SEVERITY_UNKNOWN = -1,
	SEVERITY_NONE = 0,
	SEVERITY_DEBUG,
	SEVERITY_INFO,
	SEVERITY_WARN,
	SEVERITY_ERROR,
	SEVERITY_CRITICAL,
	SEVERITY_MAX
} sev_id_t;
extern char *pseudo_sev_name(sev_id_t id);
extern sev_id_t pseudo_sev_id(char *name);

typedef enum pseudo_query_type {
	PSQT_UNKNOWN = -1,
	PSQT_NONE,
	PSQT_EXACT,	PSQT_LESS,	PSQT_GREATER,	PSQT_BITAND,
	PSQT_NOTEQUAL,	PSQT_LIKE,	PSQT_NOTLIKE,	PSQT_SQLPAT,
	PSQT_MAX
} pseudo_query_type_t;
extern char *pseudo_query_type_name(pseudo_query_type_t id);
extern char *pseudo_query_type_sql(pseudo_query_type_t id);
extern pseudo_query_type_t pseudo_query_type_id(char *name);

/* Note:  These are later used as bitwise masks into a value,
 * currently an unsigned long; if the number of these gets up
 * near 32, that may take rethinking.  The first thing to
 * go would probably be something special to do for FTYPE and
 * PERM because they aren't "real" database fields -- both
 * of them actually imply MODE.
 */
typedef enum pseudo_query_field {
	PSQF_UNKNOWN = -1,
	PSQF_NONE, /* so that these are always non-zero */
	PSQF_CLIENT,	PSQF_DEV,	PSQF_FD, 	PSQF_FTYPE,
	PSQF_GID,	PSQF_ID,	PSQF_INODE,	PSQF_MODE,	
	PSQF_OP,	PSQF_ORDER,	PSQF_PATH,	PSQF_PERM,
	PSQF_RESULT,	PSQF_SEVERITY,	PSQF_STAMP,	PSQF_TAG,
	PSQF_TEXT,	PSQF_UID,
	PSQF_MAX
} pseudo_query_field_t;
extern char *pseudo_query_field_name(pseudo_query_field_t id);
extern pseudo_query_field_t pseudo_query_field_id(char *name);

extern void pseudo_debug_verbose(void);
extern void pseudo_debug_terse(void);
extern int pseudo_util_debug_fd;
#ifndef NDEBUG
extern int pseudo_debug_real(int, char *, ...) __attribute__ ((format (printf, 2, 3)));
#define pseudo_debug pseudo_debug_real
#else
/* oh no, mister compiler, please don't optimize me away! */
static inline void pseudo_debug(int level, char *text, ...) { }
#endif
extern int pseudo_diag(char *, ...) __attribute__ ((format (printf, 1, 2)));
void pseudo_new_pid(void);
/* pseudo_fix_path resolves symlinks up to this depth */
#define PSEUDO_MAX_LINK_RECURSION 16
extern char *pseudo_fix_path(char *, const char *, size_t, size_t *, int);
extern void pseudo_dropenv(void);
extern void pseudo_setupenv(char *);
extern char *pseudo_prefix_path(char *);
extern char *pseudo_get_prefix(char *);
extern ssize_t pseudo_sys_path_max(void);
extern ssize_t pseudo_path_max(void);

extern char *pseudo_version;

#define PSEUDO_DATA "var/pseudo/"
#define PSEUDO_LOCKFILE PSEUDO_DATA "pseudo.lock"
#define PSEUDO_LOGFILE PSEUDO_DATA "pseudo.log"
#define PSEUDO_PIDFILE PSEUDO_DATA "pseudo.pid"
#define PSEUDO_SOCKET PSEUDO_DATA "pseudo.socket"