Changeset 846
- Timestamp:
- 08/09/08 10:45:52 (3 years ago)
- Location:
- Whitix/trunk/user/system
- Files:
-
- 3 added
- 8 modified
-
Makefile (modified) (3 diffs)
-
registry/Makefile (modified) (1 diff)
-
registry/handle.c (modified) (4 diffs)
-
registry/handle.h (modified) (1 diff)
-
registry/key.c (modified) (3 diffs)
-
registry/keyset.c (modified) (5 diffs)
-
registry/socket.c (modified) (4 diffs)
-
registry/socket.h (modified) (1 diff)
-
registry/textreg (added)
-
registry/textreg/Makefile (added)
-
registry/textreg/main.py (added)
Legend:
- Unmodified
- Added
- Removed
-
Whitix/trunk/user/system/Makefile
r837 r846 8 8 gcc -m32 -nostdlib -L../libc -L../librtl -L../posix -L../sdk/libs ../libc/init/init.o moduleadd.o -lstdc -lrtl -lpthread -o moduleadd -Wl,-I/System/Runtime/liblinker.so 9 9 gcc -m32 -nostdlib -L../libc -L../librtl -L../posix -L../sdk/libs ../libc/init/init.o startup.o -lstdc -lrtl -lpthread -o startup -Wl,-I/System/Runtime/liblinker.so 10 make -C registry /server10 make -C registry 11 11 # make -C installer 12 12 … … 15 15 cp moduleadd ../../CdRoot/System/Modules/ 16 16 cp testm.o ../../CdRoot/System/Modules/testm.sys 17 make -C registry /serverinstall17 make -C registry install 18 18 # make -C installer install 19 19 … … 21 21 rm -f *.o 22 22 rm -f moduleadd startup 23 make -C registry /serverclean23 make -C registry clean 24 24 # make -C installer clean -
Whitix/trunk/user/system/registry/Makefile
r844 r846 15 15 install: 16 16 cp regserver ../../../CdRoot/System/Startup/ 17 make -C textreg install 17 18 18 19 clean: -
Whitix/trunk/user/system/registry/handle.c
r844 r846 6 6 struct RegKeySetHandle* handle; 7 7 struct RegKeySet* set; 8 int handleId=0; 8 9 9 10 set=RegKeySetGet(name); … … 25 26 26 27 while (curr->next) 28 { 27 29 curr=curr->next; 30 handleId++; 31 } 28 32 29 33 curr->next=handle; 30 34 } 35 36 handle->handleId=handleId; 31 37 32 38 return handle; … … 36 42 { 37 43 struct RegKeySetHandle* curr=list; 38 unsigned long ret=0;39 44 40 45 while (curr && curr != handle) 41 {42 ret++;43 46 curr=curr->next; 44 }45 47 46 48 if (!curr) 47 49 return -1; 48 50 49 return ret;51 return curr->handleId; 50 52 } 51 53 … … 54 56 struct RegKeySetHandle* curr=list; 55 57 56 while (curr && id--)58 while (curr && curr->handleId != id) 57 59 curr=curr->next; 58 60 -
Whitix/trunk/user/system/registry/handle.h
r844 r846 6 6 struct RegKeySet* set; 7 7 struct RegKeySetHandle* next; 8 int handleId; 8 9 }; 9 10 -
Whitix/trunk/user/system/registry/key.c
r839 r846 33 33 if (!c) 34 34 break; 35 36 printf("currName = %s, length = %d\n", currName, length); 35 37 36 38 nextSet=RegKeySetLookupOne(currSet, currName, length); … … 39 41 40 42 currSet=nextSet; 41 42 43 } 43 44 … … 46 47 keySet=currSet; 47 48 49 printf("key = %s\n", key); 50 48 51 new=(struct RegKey*)malloc(sizeof(struct RegKey)); 49 52 50 53 new->key=strdup(key); 54 new->next=NULL; 51 55 52 56 if (type) -
Whitix/trunk/user/system/registry/keyset.c
r844 r846 76 76 } 77 77 78 struct RegKey* RegKeySetGetKey(struct RegKeySet* keySet, int id) 79 { 80 struct RegKey* curr=keySet->keys; 81 82 while (curr && id--) 83 curr=curr->next; 84 85 return curr; 86 } 87 78 88 struct RegKey* RegKeySetFindKey(struct RegKeySet* keySet, char* name) 79 89 { … … 93 103 void RegKeySetAddKey(struct RegKeySet* parent, struct RegKey* key) 94 104 { 105 /* TODO: Check name in keysets. */ 106 95 107 if (!parent->keys) 96 108 { … … 134 146 135 147 parent->numChildren++; 136 printf("%s, %d\n", parent->name, parent->numChildren);137 148 } 138 149 … … 140 151 { 141 152 struct RegKeySet* ret; 153 154 /* TODO: Check name in keys. */ 142 155 143 156 ret=(struct RegKeySet*)malloc(sizeof(struct RegKeySet)); … … 171 184 struct RegKeySet* parent; 172 185 char* name; 186 int len; 173 187 174 188 /* Parse the path. */ 175 189 parent=RegKeySetLookup(keySet, path, &name); 176 190 191 len=strlen(name); 192 177 193 /* Look up the name. If it exists already, don't create it again. */ 178 if (!RegKeySetLookupOne(parent, name, strlen(name)))179 RegKeySetCreateOne(parent, name, strlen(name));194 if (!RegKeySetLookupOne(parent, name, len)) 195 RegKeySetCreateOne(parent, name, len); 180 196 181 197 } -
Whitix/trunk/user/system/registry/socket.c
r844 r846 123 123 int strLen=strlen(currChild->name); 124 124 packet->index++; 125 memcpy(curr, currChild->name, strLen);125 strcpy(curr, currChild->name); 126 126 curr+=strLen+1; 127 packet->size-= strLen;127 packet->size-=(strLen+1); 128 128 129 129 currChild=currChild->next; … … 134 134 && packet->index < set->numChildren+set->numKeys) 135 135 { 136 printf("Copy over KEYS\n"); 136 packet->index-=set->numChildren; 137 138 struct RegKey* currKey=RegKeySetGetKey(set, packet->index); 139 140 while (packet->size > 0 && currKey) 141 { 142 int strLen=strlen(currKey->key); 143 packet->index++; 144 strcpy(curr, currKey->key); 145 curr+=strLen+1; 146 packet->size-=(strLen+1); 147 148 currKey=currKey->next; 149 } 137 150 } 138 151 … … 149 162 length=-1; 150 163 NetSocketSend(clientFd, &length, sizeof(int), 0); 164 } 165 166 void RegSocketParseType(int clientFd, char* buf, struct RegKeySetHandle* list) 167 { 168 struct RegReadKeyPacket* packet=(struct RegReadKeyPacket*)buf; 169 struct RegKeySetHandle* handle; 170 struct RegKeySet* set; 171 struct RegKey* key; 172 int type=-1; 173 174 handle=RegKeySetGetHandle(list, packet->handleId); 175 176 if (!handle) 177 goto out; 178 179 set=handle->set; 180 181 key=RegKeySetFindKey(set, packet->name); 182 183 if (key) 184 { 185 type=0; 186 goto out; 187 } 188 189 set=RegKeySetLookupOne(set, packet->name, strlen(packet->name)); 190 191 if (set) 192 type=1; 193 194 out: 195 NetSocketSend(clientFd, &type, sizeof(int), 0); 151 196 } 152 197 … … 184 229 RegSocketParseEnum(clientFd, buf, list); 185 230 break; 231 232 case REG_PACKET_GET_ENT_TYPE: 233 RegSocketParseType(clientFd, buf, list); 234 break; 186 235 187 236 default: -
Whitix/trunk/user/system/registry/socket.h
r844 r846 5 5 #define REG_PACKET_READ_KEY 2 6 6 #define REG_PACKET_ENUM_KEYSET 3 7 #define REG_PACKET_GET_ENT_TYPE 4 7 8 8 9 struct RegPacketHeader
