4 * Implements structures used for variant symlink support.
6 * $DragonFly: src/sys/sys/varsym.h,v 1.7 2008/02/23 00:59:23 swildner Exp $
10 #define _SYS_VARSYM_H_
12 #if defined(_KERNEL) || defined(_KERNEL_STRUCTURES)
15 #include <sys/queue.h> /* TAILQ_* macros */
21 int vs_refs
; /* a lot of sharing occurs */
23 char *vs_name
; /* variable name */
24 char *vs_data
; /* variable contents */
27 typedef struct varsym
*varsym_t
;
30 TAILQ_ENTRY(varsyment
) ve_entry
;
35 TAILQ_HEAD(, varsyment
) vx_queue
;
40 #endif /* _KERNEL || _KERNEL_STRUCTURES */
45 #define VARSYM_PRISON 4 /* used internally */
47 #define VARSYM_PROC_MASK (1 << VARSYM_PROC)
48 #define VARSYM_USER_MASK (1 << VARSYM_USER)
49 #define VARSYM_SYS_MASK (1 << VARSYM_SYS)
50 #define VARSYM_ALL_MASK (VARSYM_PROC_MASK|VARSYM_USER_MASK|VARSYM_SYS_MASK)
52 #define MAXVARSYM_NAME 64
53 #define MAXVARSYM_DATA 256
54 #define MAXVARSYM_SET 16384
58 varsym_t
varsymfind(int mask
, const char *name
, int namelen
);
59 int varsymmake(int level
, const char *name
, const char *data
);
60 void varsymdrop(varsym_t var
);
61 void varsymset_init(struct varsymset
*varsymset
, struct varsymset
*copy
);
62 void varsymset_clean(struct varsymset
*varsymset
);
63 int varsymreplace(char *cp
, int linklen
, int maxlen
);