Methods to do various operations on Key names.
const char * keyName (const Key *key)
ssize_t keyGetNameSize (const Key *key)
ssize_t keyGetName (const Key *key, char *returnedName, size_t maxSize)
ssize_t keySetName (Key *key, const char *newName)
ssize_t keyGetFullNameSize (const Key *key)
ssize_t keyGetFullName (const Key *key, char *returnedName, size_t maxSize)
const char * keyBaseName (const Key *key)
ssize_t keyGetBaseNameSize (const Key *key)
ssize_t keyGetBaseName (const Key *key, char *returned, size_t maxSize)
ssize_t keyAddBaseName (Key *key, const char *baseName)
ssize_t keySetBaseName (Key *key, const char *baseName)
const char * keyOwner (const Key *key)
ssize_t keyGetOwnerSize (const Key *key)
ssize_t keyGetOwner (const Key *key, char *returned, size_t maxSize)
ssize_t keySetOwner (Key *key, const char *owner)
Methods to do various operations on Key names.
To use them:
#include <kdb.h>
These functions make it easier for c programmers to work with key names. Everything here can also be done with keySetName, described in key.
Rules for Key Names.RS 4
When using Elektra to store your application's configuration and state, please keep in mind the following rules:
Assumes that key is a directory. baseName is appended to it. The function adds '/' if needed while concatenating.
So if key has name 'system/dir1/dir2' and this method is called with baseName 'mykey', the resulting key will have name 'system/dir1/dir2/mykey'.
When baseName is 0 or '' nothing will happen and the size of the name is returned.
Warning:
Parameters:
Returns:
-1 if the key had no name
-1 on NULL pointers
See also:
keySetName() to set a new name.
This is a much more efficient version of keyGetBaseName() and you should use it if you are responsible enough to not mess up things. The name might change or even point to a wrong place after a keySetName(). If you need a copy of the basename consider to use keyGetBaseName().
keyBaseName() returns '' when there is no keyBaseName. The reason is
key=keyNew(0); keySetName(key,''); keyName(key); // you would expect '' here keySetName(key,'user'); keyName(key); // you would expect '' here keyDel(key);
Note:
Parameters:
Returns:
0 on NULL pointer
See also:
keyName() to get a pointer to the name
keyOwner() to get a pointer to the owner
Some examples:
Parameters:
Returns:
1 on empty name
-1 on NULL pointers
-1 when maxSize is 0 or larger than SSIZE_MAX
See also:
keyName(), keyGetName(), keySetName()
Key names that have only root names (e.g. 'system' or 'user' or 'user:domain' ) does not have basenames, thus the function will return 1 bytes to store ''.
Basenames are denoted as:
Parameters:
Returns:
See also:
keyName(), keyGetName(), keySetName()
Returns:
1 on empty name
-1 on NULL pointers
-1 if maxSize is 0 or larger than SSIZE_MAX
Parameters:
Parameters:
Returns:
1 on empty name
-1 on NULL pointer
See also:
When there is not enough space to write the name, nothing will be written and -1 will be returned.
maxSize is limited to SSIZE_MAX. When this value is exceeded -1 will be returned. The reason for that is that any value higher is just a negative return value passed by accident. Of course malloc is not as failure tolerant and will try to allocate.
Returns:
1 when only a null was written
-1 when keyname is longer then maxSize or 0 or any NULL pointer
Parameters:
See also:
For an empty key name you need one byte to store the ending NULL. For that reason 1 is returned.
Parameters:
Returns:
1 if there is is no key Name
-1 on NULL pointer
See also:
Only user/... keys have a owner. For system/... keys (that doesn't have a key owner) an empty string ('') is returned.
Although usually the same, the owner of a key is not related to its UID. Owner are related to WHERE the key is stored on disk, while UIDs are related to mode controls of a key.
Parameters:
Returns:
1 if there is no owner
-1 on NULL pointers
-1 when maxSize is 0, larger than SSIZE_MAX or too small for ownername
See also:
The returned number can be used to allocate a string. 1 will returned on an empty owner to store the concluding 0 on using keyGetOwner().
char * buffer; buffer = malloc (keyGetOwnerSize (key)); // use buffer and keyGetOwnerSize (key) for maxSize
Note:
Parameters:
Returns:
1 if there is no owner
-1 on NULL pointer
See also:
This is a much more efficient version of keyGetName() and can use it if you are responsible enough to not mess up things. You are not allowed to change anything in the returned array. The content of that string may change after keySetName() and similar functions. If you need a copy of the name, consider using keyGetName().
The name will be without owner, see keyGetFullName() if you need the name with its owner.
keyName() returns '' when there is no keyName. The reason is
key=keyNew(0); keySetName(key,''); keyName(key); // you would expect '' here keyDel(key);
Note:
Parameters:
Returns:
0 on NULL pointer
See also:
keyGetFullName(), keyGetFullNameSize() to get the full name
keyGetName() as alternative to get a copy
keyOwner() to get a pointer to owner
This is a much more efficient version of keyGetOwner() and you should use it if you are responsible enough to not mess up things. You are not allowed to modify the returned string in any way. If you need a copy of the string, consider to use keyGetOwner() instead.
keyOwner() returns '' when there is no keyOwner. The reason is
key=keyNew(0); keySetOwner(key,''); keyOwner(key); // you would expect '' here keySetOwner(key,'system'); keyOwner(key); // you would expect '' here
Note:
Parameters:
Returns:
0 on NULL pointer
See also:
keyGetOwner(), keySetOwner()
keyName() for name without owner
keyGetFullName() for name with owner
All text after the last '/' in the key keyname is erased and baseName is appended.
So lets suppose key has name 'system/dir1/dir2/key1'. If baseName is 'key2', the resulting key name will be 'system/dir1/dir2/key2'. If baseName is empty or NULL, the resulting key name will be 'system/dir1/dir2'.
Warning:
Parameters:
Returns:
-1 on NULL pointers
See also:
keySetName() to set a new name
A valid name is of the forms:
The last form has explicitly set the owner, to let the library know in which user folder to save the key. A owner is a user name. If not defined (the second form) current user is calculated and used as default.
You should always follow the guidelines for key tree structure creation.
A private copy of the key name will be stored, and the newName parameter can be freed after this call.
On invalid names, NULL or '' the name will be '' afterwards.
Warning:
Returns:
-1 if newName is empty or invalid or any NULL pointer
Parameters:
See also:
keyGetName(), keyGetFullName(), keyName()
keySetBaseName(), keyAddBaseName() to manipulate a name
A owner is a name of a system user related to a UID. The owner decides on which location on the disc the key goes.
A private copy is stored, so the passed parameter can be freed after the call.
Parameters:
Returns:
1 when owner is freed (by setting 0 or '')
-1 on null pointer or memory problems
See also:
Generated automatically by Doxygen for Elektra Projekt from the source code.