コード例 #1
0
ファイル: keytest.c プロジェクト: tryge/libelektra
/**
 * Check whether a key is under the @p user namespace or not.
 *
 * @param key the key object to work with
 * @retval 1 if key name begins with @p user, 0 otherwise
 * @retval -1 on NULL pointer
 * @see keyIsSystem(), keySetName(), keyName()
 * @ingroup keytest
 *
 */
int keyIsUser(const Key *key)
{
	if (!key) return -1;

	if (key->key) return keyNameIsUser(key->key);
	else return 0;
}
コード例 #2
0
ファイル: keyname.c プロジェクト: tryge/libelektra
/**
 * @internal
 */
static int keyGetNameNamespace(const char *name)
{
	if (!name) return KEY_NS_EMPTY;
	if (!strcmp(name, "")) return KEY_NS_EMPTY;
	if (name[0] == '/') return KEY_NS_CASCADING;
	else if (keyNameIsSpec(name)) return KEY_NS_SPEC;
	else if (keyNameIsProc(name)) return KEY_NS_PROC;
	else if (keyNameIsDir(name)) return KEY_NS_DIR;
	else if (keyNameIsUser(name)) return KEY_NS_USER;
	else if (keyNameIsSystem(name)) return KEY_NS_SYSTEM;
	return KEY_NS_META;
}
コード例 #3
0
ファイル: keyname.c プロジェクト: fberlakovich/libelektra
/**
 * Bytes needed to store the key name including user domain and ending NULL.
 *
 * @param key the key object to work with
 * @return number of bytes needed to store key name including user domain
 * @retval 1 on empty name
 * @retval -1 on NULL pointer
 * @see keyGetFullName(), keyGetNameSize()
 * @ingroup keyname
 */
ssize_t keyGetFullNameSize (const Key * key)
{
	size_t returnedSize = 0;

	if (!key) return -1;

	if (!key->key) return 1;

	returnedSize = elektraStrLen (key->key);

	if (keyNameIsUser (key->key) && keyGetMeta (key, "owner")) returnedSize += keyGetOwnerSize (key);

	/*
	   After 2 elektraStrLen() calls looks like we counted one more NULL.
	   But we need this byte count because a full key name has an
	   additional ':' char.
	*/

	return returnedSize;
}
コード例 #4
0
static void test_keyNamespace ()
{
    Key * key;

    printf ("Test namespaces\n");

    succeed_if (keyGetNamespace (0) == KEY_NS_NONE, "null key");

    key = keyNew (0);
    succeed_if (keyGetNamespace (key) == KEY_NS_EMPTY, "empty namespace not empty");
    succeed_if (keyNameIsSystem (keyName (key)) == 0, "empty name is not system");
    succeed_if (keyIsSystem (key) == 0, "empty key is not system");
    succeed_if (keyNameIsUser (keyName (key)) == 0, "empty name is not user");
    succeed_if (keyIsUser (key) == 0, "empty key is not user");
    keyDel (key);

    key = keyNew ("", KEY_END);
    succeed_if (keyGetNamespace (key) == KEY_NS_EMPTY, "empty namespace not empty");
    succeed_if (keyNameIsSystem (keyName (key)) == 0, "empty name is not system");
    succeed_if (keyIsSystem (key) == 0, "empty key is not system");
    succeed_if (keyNameIsUser (keyName (key)) == 0, "empty name is not user");
    succeed_if (keyIsUser (key) == 0, "empty key is not user");
    keyDel (key);

    key = keyNew ("user", KEY_END);
    succeed_if (keyGetNamespace (key) == KEY_NS_USER, "user namespace not KEY_NS_USER");
    succeed_if (keyNameIsSystem (keyName (key)) == 0, "user name is not system");
    succeed_if (keyIsSystem (key) == 0, "user key is not system");
    succeed_if (keyNameIsUser (keyName (key)) == 1, "user name is not user");
    succeed_if (keyIsUser (key) == 1, "user key is not user");
    keyDel (key);

    key = keyNew ("user/key", KEY_END);
    succeed_if (keyGetNamespace (key) == KEY_NS_USER, "user namespace not KEY_NS_USER");
    succeed_if (keyNameIsSystem (keyName (key)) == 0, "user name is not system");
    succeed_if (keyIsSystem (key) == 0, "user key is not system");
    succeed_if (keyNameIsUser (keyName (key)) == 1, "user name is not user");
    succeed_if (keyIsUser (key) == 1, "user key is not user");
    keyDel (key);

    key = keyNew ("user:owner/key", KEY_END);
    succeed_if (keyGetNamespace (key) == KEY_NS_USER, "user namespace not KEY_NS_USER");
    succeed_if (keyNameIsSystem (keyName (key)) == 0, "user name is not system");
    succeed_if (keyIsSystem (key) == 0, "user key is not system");
    succeed_if (keyNameIsUser (keyName (key)) == 1, "user name is not user");
    succeed_if (keyIsUser (key) == 1, "user key is not user");
    keyDel (key);

    key = keyNew ("system", KEY_END);
    succeed_if (keyGetNamespace (key) == KEY_NS_SYSTEM, "system namespace not KEY_NS_SYSTEM");
    succeed_if (keyNameIsSystem (keyName (key)) == 1, "system name is not system");
    succeed_if (keyIsSystem (key) == 1, "system key is not system");
    succeed_if (keyNameIsUser (keyName (key)) == 0, "system name is not system");
    succeed_if (keyIsUser (key) == 0, "system key is not system");
    keyDel (key);

    key = keyNew ("system/key", KEY_END);
    succeed_if (keyGetNamespace (key) == KEY_NS_SYSTEM, "system namespace not KEY_NS_SYSTEM");
    succeed_if (keyNameIsSystem (keyName (key)) == 1, "system name is not system");
    succeed_if (keyIsSystem (key) == 1, "system key is not system");
    succeed_if (keyNameIsUser (keyName (key)) == 0, "system name is not system");
    succeed_if (keyIsUser (key) == 0, "system key is not system");
    keyDel (key);

    key = keyNew ("spec/key", KEY_END);
    succeed_if (keyGetNamespace (key) == KEY_NS_SPEC, "Spec namespace not KEY_NS_SPEC");
    succeed_if (keyNameIsSpec (keyName (key)) == 1, "Spec name is not Spec");
    succeed_if (keyIsSpec (key) == 1, "Spec key is not Spec");
    succeed_if (keyNameIsUser (keyName (key)) == 0, "Spec name is not Spec");
    succeed_if (keyIsUser (key) == 0, "Spec key is not Spec");
    keyDel (key);

    key = keyNew ("/key", KEY_CASCADING_NAME, KEY_END);
    succeed_if (keyGetNamespace (key) == KEY_NS_CASCADING, "not correct namespace");
    keyDel (key);

    key = keyNew ("type", KEY_META_NAME, KEY_END);
    succeed_if (keyGetNamespace (key) == KEY_NS_META, "not correct namespace");
    keyDel (key);
}