示例#1
0
/**
 * Check whether a key is under the @p system namespace or not
 *
 * @param key the key object to work with
 * @retval 1 if key name begins with @p system, 0 otherwise
 * @retval -1 on NULL pointer
 * @see keyIsUser(), keySetName(), keyName()
 * @ingroup keytest
 *
 */
int keyIsSystem(const Key *key)
{
	if (!key) return -1;

	if (key->key) return keyNameIsSystem(key->key);
	else return 0;
}
示例#2
0
/**
 * @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;
}
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);
}