4 * Implements structures used for variant symlink support.
6 * $DragonFly: src/sys/sys/varsym.h,v 1.2 2003/11/09 20:29:57 dillon Exp $
10 #define _SYS_VARSYM_H_
12 /*#if defined(_KERNEL) || defined(_KERNEL_STRUCTURES) FUTURE */
16 #include <sys/queue.h> /* TAILQ_* macros */
20 int vs_refs; /* a lot of sharing occurs */
22 char *vs_name; /* variable name */
23 char *vs_data; /* variable contents */
26 typedef struct varsym *varsym_t;
29 TAILQ_ENTRY(varsyment) ve_entry;
34 TAILQ_HEAD(, varsyment) vx_queue;
38 #endif /* _KERNEL || _KERNEL_STRUCTURES */
44 #define VARSYM_PROC_MASK (1 << VARSYM_PROC)
45 #define VARSYM_USER_MASK (1 << VARSYM_USER)
46 #define VARSYM_SYS_MASK (1 << VARSYM_SYS)
47 #define VARSYM_ALL_MASK (VARSYM_PROC_MASK|VARSYM_USER_MASK|VARSYM_SYS_MASK)
49 #define MAXVARSYM_NAME 64
50 #define MAXVARSYM_DATA 256
51 #define MAXVARSYM_SET 8192
55 varsym_t varsymfind(int mask, const char *name, int namelen);
56 int varsymmake(int level, const char *name, const char *data);
57 void varsymdrop(varsym_t var);
58 void varsymset_init(struct varsymset *varsymset, struct varsymset *copy);
59 void varsymset_clean(struct varsymset *varsymset);
60 int varsymreplace(char *cp, int linklen, int maxlen);