1 /***************************************************************************
2 kdb.h - Exported methods of the Library
4 begin : Mon Dec 29 2003
5 copyright : (C) 2003 by Avi Alkalay
6 copyright : (C) 2008 by Markus Raab
7 email : avi@unix.sh, elektra@markus-raab.org
8 ***************************************************************************/
10 /***************************************************************************
12 * This program is free software; you can redistribute it and/or modify *
13 * it under the terms of the BSD License (revised). *
15 ***************************************************************************/
22 #define KDB_VERSION @KDB_VERSION@
23 #define KDB_VERSION_MAJOR @KDB_VERSION_MAJOR@
24 #define KDB_VERSION_MINOR @KDB_VERSION_MINOR@
25 #define KDB_VERSION_MICRO @KDB_VERSION_MICRO@
27 #define KS_END ((Key*)0)
64 KDB_O_REMOVEONLY=1<<7,
68 KDB_O_NORECURSIVE=1<<11,
70 KDB_O_WITHOWNER=1<<13,
81 typedef struct _KDB KDB;
82 typedef struct _Key Key;
83 typedef struct _KeySet KeySet;
86 /**************************************
90 **************************************/
93 int kdbClose(KDB *handle);
95 ssize_t kdbGet(KDB *handle, KeySet *returned,
96 Key * parentKey, option_t options);
97 ssize_t kdbSet(KDB *handle, KeySet *returned,
98 Key * parentKey, option_t options);
100 ssize_t kdbGetByName(KDB *handle, KeySet *returned,
101 const char *parentName, option_t options);
103 int kdbGetKey(KDB *handle, Key *key);
104 int kdbSetKey(KDB *handle, const Key *key);
106 int kdbGetString(KDB *handle, const char *keyname, char *returned,
108 int kdbSetString(KDB *handle, const char *keyname, const char *value);
109 int kdbRemove(KDB *handle, const char *keyname);
112 /**************************************
116 **************************************/
119 Key *keyNew(const char *keyname, ...);
120 Key *keyVNew(const char *keyname, va_list ap);
122 Key *keyDup(const Key *source);
123 int keyCopy(Key *dest, const Key *source);
125 int keyDel(Key *key);
127 ssize_t keyIncRef(Key *key);
128 ssize_t keyDecRef(Key *key);
129 ssize_t keyGetRef(const Key *key);
132 int keyStat(Key *key);
133 int keyRemove(Key *key);
135 uid_t keyGetUID(const Key *key);
136 int keySetUID(Key *key, uid_t uid);
138 gid_t keyGetGID(const Key *key);
139 int keySetGID(Key *key, gid_t gid);
141 int keySetDir(Key *key);
142 mode_t keyGetMode(const Key *key);
143 int keySetMode(Key *key, mode_t mode);
145 type_t keyGetType(const Key *key);
146 int keySetType(Key *key, type_t type);
148 time_t keyGetATime(const Key *key);
149 int keySetATime(Key *key, time_t atime);
151 time_t keyGetMTime(const Key *key);
152 int keySetMTime(Key *key, time_t mtime);
154 time_t keyGetCTime(const Key *key);
155 int keySetCTime(Key *key, time_t ctime);
157 /* Methods for Making Tests */
158 int keyNeedStat(const Key *key);
159 int keyNeedSync(const Key *key);
160 int keyNeedRemove(const Key *key);
162 int keyIsSystem(const Key *key);
163 int keyIsUser(const Key *key);
164 int keyIsMemory(const Key *key);
166 int keyIsBelow(const Key *key, const Key *check);
167 int keyIsDirectBelow(const Key *key, const Key *check);
169 int keyIsInactive(const Key *key);
171 int keyIsDir(const Key *key);
172 int keyIsBinary(const Key *key);
173 int keyIsString(const Key *key);
175 /* Name Manipulation Methods */
176 const char *keyName(const Key *key);
177 const void *takeout_keyValue(Key *key);
178 ssize_t keyGetNameSize(const Key *key);
179 ssize_t keyGetName(const Key *key, char *returnedName, size_t maxSize);
180 ssize_t keySetName(Key *key, const char *newname);
182 ssize_t keyGetFullNameSize(const Key *key);
183 ssize_t keyGetFullName(const Key *key, char *returnedName, size_t maxSize);
185 const char *keyBaseName(const Key *key);
186 ssize_t keyGetBaseNameSize(const Key *key);
187 ssize_t keyGetBaseName(const Key *key, char *returned, size_t maxSize);
188 ssize_t keyAddBaseName(Key *key,const char *baseName);
189 ssize_t keySetBaseName(Key *key,const char *baseName);
191 const char *keyOwner(const Key *key);
192 ssize_t keyGetOwnerSize(const Key *key);
193 ssize_t keyGetOwner(const Key *key, char *returned, size_t maxSize);
194 ssize_t keySetOwner(Key *key, const char *owner);
196 /* Value Manipulation Methods */
197 const void *keyValue(const Key *key);
198 ssize_t keyGetValueSize(const Key *key);
200 ssize_t keyGetString(const Key *key, char *returnedString, size_t maxSize);
201 ssize_t keySetString(Key *key, const char *newString);
203 ssize_t keyGetBinary(const Key *key, void *returnedBinary, size_t maxSize);
204 ssize_t keySetBinary(Key *key, const void *newBinary, size_t dataSize);
206 const char *keyComment(const Key *key);
207 ssize_t keyGetCommentSize(const Key *key);
208 ssize_t keyGetComment(const Key *key, char *returnedDesc, size_t maxSize);
209 ssize_t keySetComment(Key *key, const char *newDesc);
213 /**************************************
217 **************************************/
219 KeySet *ksNew(size_t alloc, ...);
220 KeySet *ksVNew(size_t alloc, va_list ap);
222 KeySet *ksDup(const KeySet * source);
223 int ksCopy(KeySet *dest, const KeySet *source);
225 int ksDel(KeySet *ks);
227 void ksSort(KeySet *ks);
229 ssize_t ksGetSize(const KeySet *ks);
231 ssize_t ksAppendKey(KeySet *ks, Key *toAppend);
232 ssize_t ksAppend(KeySet *ks, const KeySet *toAppend);
234 Key *ksPop(KeySet *ks);
236 int ksRewind(KeySet *ks);
237 Key *ksNext(KeySet *ks);
238 Key *ksCurrent(const KeySet *ks);
240 Key *ksHead(const KeySet *ks);
241 Key *ksTail(const KeySet *ks);
243 cursor_t ksGetCursor(const KeySet *ks);
244 int ksSetCursor(KeySet *ks, cursor_t cursor);
246 Key *ksLookup(KeySet *ks, Key *k, option_t options);
247 Key *ksLookupByName(KeySet *ks, const char *name, option_t options);