Changeset 846

Show
Ignore:
Timestamp:
08/09/08 10:45:52 (3 years ago)
Author:
mwhitworth
Message:

Add (basic) Python client, add to socket code, add support for getting entry type in keyset.

Location:
Whitix/trunk/user/system
Files:
3 added
8 modified

Legend:

Unmodified
Added
Removed
  • Whitix/trunk/user/system/Makefile

    r837 r846  
    88        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 
    99        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/server 
     10        make -C registry 
    1111#       make -C installer 
    1212 
     
    1515        cp moduleadd ../../CdRoot/System/Modules/ 
    1616        cp testm.o ../../CdRoot/System/Modules/testm.sys 
    17         make -C registry/server install 
     17        make -C registry install 
    1818#       make -C installer install 
    1919         
     
    2121        rm -f *.o 
    2222        rm -f moduleadd startup 
    23         make -C registry/server clean 
     23        make -C registry clean 
    2424#       make -C installer clean 
  • Whitix/trunk/user/system/registry/Makefile

    r844 r846  
    1515install: 
    1616        cp regserver ../../../CdRoot/System/Startup/ 
     17        make -C textreg install 
    1718         
    1819clean: 
  • Whitix/trunk/user/system/registry/handle.c

    r844 r846  
    66        struct RegKeySetHandle* handle; 
    77        struct RegKeySet* set; 
     8        int handleId=0; 
    89         
    910        set=RegKeySetGet(name); 
     
    2526                 
    2627                while (curr->next) 
     28                { 
    2729                        curr=curr->next; 
     30                        handleId++; 
     31                } 
    2832                         
    2933                curr->next=handle; 
    3034        } 
     35         
     36        handle->handleId=handleId; 
    3137         
    3238        return handle; 
     
    3642{ 
    3743        struct RegKeySetHandle* curr=list; 
    38         unsigned long ret=0; 
    3944         
    4045        while (curr && curr != handle) 
    41         { 
    42                 ret++; 
    4346                curr=curr->next; 
    44         } 
    4547         
    4648        if (!curr) 
    4749                return -1; 
    4850         
    49         return ret; 
     51        return curr->handleId; 
    5052} 
    5153 
     
    5456        struct RegKeySetHandle* curr=list; 
    5557         
    56         while (curr && id--) 
     58        while (curr && curr->handleId != id) 
    5759                curr=curr->next; 
    5860                 
  • Whitix/trunk/user/system/registry/handle.h

    r844 r846  
    66        struct RegKeySet* set; 
    77        struct RegKeySetHandle* next; 
     8        int handleId; 
    89}; 
    910 
  • Whitix/trunk/user/system/registry/key.c

    r839 r846  
    3333                if (!c) 
    3434                        break; 
     35                 
     36                printf("currName = %s, length = %d\n", currName, length); 
    3537                         
    3638                nextSet=RegKeySetLookupOne(currSet, currName, length); 
     
    3941 
    4042                currSet=nextSet; 
    41  
    4243        } 
    4344         
     
    4647        keySet=currSet; 
    4748         
     49        printf("key = %s\n", key); 
     50         
    4851        new=(struct RegKey*)malloc(sizeof(struct RegKey)); 
    4952         
    5053        new->key=strdup(key); 
     54        new->next=NULL; 
    5155         
    5256        if (type) 
  • Whitix/trunk/user/system/registry/keyset.c

    r844 r846  
    7676} 
    7777 
     78struct 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 
    7888struct RegKey* RegKeySetFindKey(struct RegKeySet* keySet, char* name) 
    7989{ 
     
    93103void RegKeySetAddKey(struct RegKeySet* parent, struct RegKey* key) 
    94104{ 
     105        /* TODO: Check name in keysets. */ 
     106 
    95107        if (!parent->keys) 
    96108        { 
     
    134146         
    135147        parent->numChildren++; 
    136         printf("%s, %d\n", parent->name, parent->numChildren); 
    137148} 
    138149 
     
    140151{ 
    141152        struct RegKeySet* ret; 
     153         
     154        /* TODO: Check name in keys. */ 
    142155         
    143156        ret=(struct RegKeySet*)malloc(sizeof(struct RegKeySet)); 
     
    171184        struct RegKeySet* parent; 
    172185        char* name; 
     186        int len; 
    173187         
    174188        /* Parse the path. */ 
    175189        parent=RegKeySetLookup(keySet, path, &name); 
    176190         
     191        len=strlen(name); 
     192         
    177193        /* 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); 
    180196         
    181197} 
  • Whitix/trunk/user/system/registry/socket.c

    r844 r846  
    123123                        int strLen=strlen(currChild->name); 
    124124                        packet->index++; 
    125                         memcpy(curr, currChild->name, strLen); 
     125                        strcpy(curr, currChild->name); 
    126126                        curr+=strLen+1; 
    127                         packet->size-=strLen; 
     127                        packet->size-=(strLen+1); 
    128128                         
    129129                        currChild=currChild->next; 
     
    134134                && packet->index < set->numChildren+set->numKeys) 
    135135        { 
    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                } 
    137150        } 
    138151         
     
    149162        length=-1; 
    150163        NetSocketSend(clientFd, &length, sizeof(int), 0); 
     164} 
     165 
     166void 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         
     194out: 
     195        NetSocketSend(clientFd, &type, sizeof(int), 0); 
    151196} 
    152197 
     
    184229                                RegSocketParseEnum(clientFd, buf, list); 
    185230                                break; 
     231                                 
     232                        case REG_PACKET_GET_ENT_TYPE: 
     233                                RegSocketParseType(clientFd, buf, list); 
     234                                break; 
    186235                         
    187236                        default: 
  • Whitix/trunk/user/system/registry/socket.h

    r844 r846  
    55#define REG_PACKET_READ_KEY             2 
    66#define REG_PACKET_ENUM_KEYSET  3 
     7#define REG_PACKET_GET_ENT_TYPE 4 
    78 
    89struct RegPacketHeader