summaryrefslogtreecommitdiffstats
path: root/src/util/profile/profile.hin
blob: fc368b1a82b4e1695e349db2d839e34305892f80 (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
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
 * profile.h
 */

#ifndef _KRB5_PROFILE_H
#define _KRB5_PROFILE_H

#if defined(_MSDOS) || defined(_WIN32) || defined(MACINTOSH)
#include <win-mac.h>
#endif

#ifndef KRB5_CALLCONV
#define KRB5_CALLCONV
#define KRB5_CALLCONV_C
#define KRB5_EXPORTVAR
#define FAR
#define NEAR
#endif

typedef struct _profile_t *profile_t;

#if !defined(PROTOTYPE)
#if defined(__STDC__) || defined(__cplusplus) || defined(_MSDOS) || defined(_WIN32)
#define PROTOTYPE(x) x
#else
#define PROTOTYPE(x) ()
#endif
#endif

/*
 * Used by the profile iterator in prof_get.c
 */
#define PROFILE_ITER_LIST_SECTION	0x0001
#define PROFILE_ITER_SECTIONS_ONLY	0x0002
#define PROFILE_ITER_RELATIONS_ONLY	0x0004

/* Macintoh CFM-68K magic incantation */
#if defined(macintosh) && defined(__CFM68K__) && !defined(__USING_STATIC_LIBS__)
#pragma import on
#endif

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* On everything but MacOS, we use file paths as unique file identifiers */
#ifndef macintosh
#define PROFILE_USES_PATHS
#endif

#ifdef PROFILE_USES_PATHS
typedef char* profile_filespec_t;	/* path as C string */
typedef char* profile_filespec_list_t;	/* list of : separated paths, C string */
typedef const char * const_profile_filespec_t;	/* path as C string */
typedef const char * const_profile_filespec_list_t;	/* list of : separated paths, C string */
#else
/* On MacOS, we use native file specifiers as unique file identifiers */
#include <Files.h>
typedef FSSpec profile_filespec_t;
typedef FSSpec* profile_filespec_list_t;
/* array should be terminated with {0, 0, ""} */
typedef FSSpec const_profile_filespec_t;
typedef FSSpec* const_profile_filespec_list_t;	
#endif

long KRB5_CALLCONV profile_init
	PROTOTYPE ((const_profile_filespec_t *files, profile_t *ret_profile));

long KRB5_CALLCONV profile_init_path
	PROTOTYPE ((const_profile_filespec_list_t filelist, profile_t *ret_profile));

long KRB5_CALLCONV profile_flush
	PROTOTYPE ((profile_t profile));

void KRB5_CALLCONV profile_abandon
	PROTOTYPE ((profile_t profile));

void KRB5_CALLCONV profile_release
	PROTOTYPE ((profile_t profile));

long KRB5_CALLCONV profile_get_values
	PROTOTYPE ((profile_t profile, const char *const *names, char ***ret_values));

void KRB5_CALLCONV profile_free_list
	PROTOTYPE ((char **list));

long KRB5_CALLCONV profile_get_string
	PROTOTYPE((profile_t profile, const char *name, const char *subname, 
			const char *subsubname, const char *def_val,
			char **ret_string));
long KRB5_CALLCONV profile_get_integer
	PROTOTYPE((profile_t profile, const char *name, const char *subname,
			const char *subsubname, int def_val,
			int *ret_default));

long KRB5_CALLCONV profile_get_boolean
	PROTOTYPE((profile_t profile, const char *name, const char *subname,
			const char *subsubname, int def_val,
			int *ret_default));

long KRB5_CALLCONV profile_get_relation_names
	PROTOTYPE((profile_t profile, const char **names, char ***ret_names));

long KRB5_CALLCONV profile_get_subsection_names
	PROTOTYPE((profile_t profile, const char **names, char ***ret_names));

long KRB5_CALLCONV profile_iterator_create
	PROTOTYPE((profile_t profile, const char **names,
		   int flags, void **ret_iter));

void KRB5_CALLCONV profile_iterator_free
	PROTOTYPE((void **iter_p));
	
long KRB5_CALLCONV profile_iterator
	PROTOTYPE((void	**iter_p, char **ret_name, char **ret_value));

void KRB5_CALLCONV profile_release_string PROTOTYPE((char *str));

long KRB5_CALLCONV profile_update_relation
	PROTOTYPE((profile_t profile, const char **names, 
		   const char *old_value, const char *new_value));

long KRB5_CALLCONV profile_clear_relation
	PROTOTYPE((profile_t profile, const char **names));

long KRB5_CALLCONV profile_rename_section
	PROTOTYPE((profile_t profile, const char **names, 
		   const char *new_name));

long KRB5_CALLCONV profile_add_relation
	PROTOTYPE((profile_t profile, const char **names, 
		   const char *new_value));

#ifdef __cplusplus
}
#endif /* __cplusplus */

/* Macintoh CFM-68K magic incantation */
#if defined(macintosh) && defined(__CFM68K__) && !defined(__USING_STATIC_LIBS__)
#pragma import reset
#endif

#endif /* _KRB5_PROFILE_H */