6 void ksUnsort (KeySet *ks)
10 KeySet *randks=ksNew(0); /*This is the final randomized keyset*/
11 KeySet *tempks=ksNew(0); /*Temporary storage for keys not chosen to be inserted*/
13 while (ksGetSize(ks) > 0)
17 /* printf ("iterating %d\n", size); */
18 while ((cur=ksPop(ks)) != 0)
20 /* printf ("\titerating %s\n", keyName(cur)); */
21 if (!(rand()%size)) ksAppendKey(randks, cur);
22 else ksAppendKey(tempks,cur);
38 KeySet *ks = ksNew (30,
39 keyNew ("user/rem2", KEY_REMOVE, KEY_DIR, KEY_END),
40 keyNew ("user/rem1/key2", KEY_REMOVE, KEY_END),
41 keyNew ("user/rem1/key1", KEY_REMOVE, KEY_END),
42 keyNew ("user/rem1", KEY_REMOVE, KEY_DIR, KEY_END),
43 keyNew ("user/dir1", KEY_DIR, KEY_END),
44 keyNew ("user/dir1/key1", KEY_VALUE, "value1", KEY_END),
45 keyNew ("user/dir1/key2", KEY_VALUE, "value2", KEY_END),
46 keyNew ("user/dir1/key3", KEY_VALUE, "value3", KEY_END),
47 keyNew ("user/dir1/key4", KEY_VALUE, "value4", KEY_END),
48 keyNew ("user/dir1/.inactive1", KEY_COMMENT, "key is inactive", KEY_END),
49 keyNew ("user/dir1/.inactive2", KEY_COMMENT, "additional information", KEY_END),
50 keyNew ("user/dir2", KEY_DIR, KEY_END),
51 keyNew ("user/dir2/key1", KEY_VALUE, "value1", KEY_END),
52 keyNew ("user/dir2/key2", KEY_VALUE, "value2", KEY_END),
53 keyNew ("user/dir2/key3", KEY_VALUE, "value3", KEY_END),
54 keyNew ("user/dir2/key4", KEY_VALUE, "value4", KEY_END),
55 keyNew ("user/dir3", KEY_DIR, KEY_END),
56 keyNew ("user/dir3/key1", KEY_VALUE, "value1", KEY_END),
57 keyNew ("user/dir3/.inactive1", KEY_COMMENT, "key is inactive", KEY_END),
58 keyNew ("user/dir3/.inactive2", KEY_COMMENT, "a users comment", KEY_END),
59 keyNew ("user/dir4", KEY_DIR, KEY_END),
60 keyNew ("user/dir5", KEY_DIR, KEY_END),
66 printf ("Keys are now unsorted:\n");
68 while ((cur=ksNext(ks)) != 0)
69 { /* Iterates over all keys and prints their name */
70 if (keyNeedRemove(cur)) printf ("%s (Need Remove)\n", keyName(cur));
71 else printf ("%s\n", keyName(cur));
74 found = ksLookupByName (ks, "user/dir1/key3", 0);
75 printf ("\nKeys are sorted after ksLookupByName:\n");
77 while ((cur=ksNext(ks)) != 0)
78 { /* Iterates over all keys and prints their name */
79 if (keyNeedRemove(cur)) printf ("%s (Need Remove)\n", keyName(cur));
80 else printf ("%s\n", keyName(cur));
83 keySetName(found, "user/something/else");
84 found = ksLookupByName (ks, "user/something/else", 0);
85 printf ("\nKeys are *not* sorted after ksLookupByName because of changed name.\n");
86 printf ("The search for user/something/else found: %s\n", keyName(found));
87 printf ("The order is:\n");
89 while ((cur=ksNext(ks)) != 0)
90 { /* Iterates over all keys and prints their name */
91 if (keyNeedRemove(cur)) printf ("%s (Need Remove)\n", keyName(cur));
92 else printf ("%s\n", keyName(cur));
95 printf ("\nSo we have to sort manually using ksSort()!\n");
97 printf ("The same is valid for keyRemove().");
98 found = ksLookupByName (ks, "user/something/else", 0);
100 found = ksLookupByName (ks, "user/something/else", 0);
101 printf ("\nKeys are *not* sorted after ksLookupByName because of changed name.\n");
102 printf ("The search for user/something/else (Need Remove) found: %s\n", keyName(found));
103 printf ("The order is:\n");
105 while ((cur=ksNext(ks)) != 0)
106 { /* Iterates over all keys and prints their name */
107 if (keyNeedRemove(cur)) printf ("%s (Need Remove)\n", keyName(cur));
108 else printf ("%s\n", keyName(cur));
111 printf ("\nSo we have to sort manually using ksSort()!\n");
113 printf ("Now we get:\n");
115 while ((cur=ksNext(ks)) != 0)
116 { /* Iterates over all keys and prints their name */
117 if (keyNeedRemove(cur)) printf ("%s (Need Remove)\n", keyName(cur));
118 else printf ("%s\n", keyName(cur));