diff --git a/src/bin/ubistry/Makefile b/src/bin/ubistry/Makefile index 5c6f764..9c1e605 100644 --- a/src/bin/ubistry/Makefile +++ b/src/bin/ubistry/Makefile @@ -18,7 +18,7 @@ REMOVE = rm -f #Objects -OBJS = main.o +OBJS = db.o message.o main.o #Startup File STARTUP = ../../lib/ubix/startup.o diff --git a/src/bin/ubistry/db.c b/src/bin/ubistry/db.c new file mode 100644 index 0000000..7a4a647 --- /dev/null +++ b/src/bin/ubistry/db.c @@ -0,0 +1,73 @@ +/***************************************************************************************** + Copyright (c) 2002-2004 The UbixOS Project + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this list of + conditions, the following disclaimer and the list of authors. Redistributions in binary + form must reproduce the above copyright notice, this list of conditions, the following + disclaimer and the list of authors in the documentation and/or other materials provided + with the distribution. Neither the name of the UbixOS Project nor the names of its + contributors may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + $Id$ + +*****************************************************************************************/ + +#include +#include +#include +#include "./include/ubistry.h" + +struct ubistryKey *keys = 0x0; + + +struct ubistryKey * ubistryFindKey(char *name) { + struct ubistryKey *tmpKey = keys; + + for (;tmpKey;tmpKey=tmpKey->next) { + if (!strcmp(name,tmpKey->name)) { + return(tmpKey); + } + } + return(0x0); + } + +int ubistryAddKey(char *name,char *value) { + struct ubistryKey *tmpKey = (struct ubistryKey *)malloc(sizeof(struct ubistryKey)); + + sprintf(tmpKey->name,name); + sprintf(tmpKey->value,value); + + if (keys == 0x0) { + keys = tmpKey; + keys->prev = 0x0; + keys->next = 0x0; + } + else { + tmpKey->next = keys; + tmpKey->prev = 0x0; + keys->prev = tmpKey; + keys = tmpKey; + } + + return(0x0); + } + +/*** + $Log$ + END + ***/ diff --git a/src/bin/ubistry/include/ubistry.h b/src/bin/ubistry/include/ubistry.h index ce40f4e..231acea 100644 --- a/src/bin/ubistry/include/ubistry.h +++ b/src/bin/ubistry/include/ubistry.h @@ -1,5 +1,7 @@ #include +#define MBOX_NAME "ubistry" + struct ubistryKey { struct ubistryKey *prev; struct ubistryKey *next; @@ -9,3 +11,5 @@ struct ubistryKey * ubistryFindKey(char *); int ubistryAddKey(char *,char *); +int ubistryInitMbox(char *); +void ubistryProcessMessages(); diff --git a/src/bin/ubistry/main.c b/src/bin/ubistry/main.c index 025cb1f..dc8a5cf 100644 --- a/src/bin/ubistry/main.c +++ b/src/bin/ubistry/main.c @@ -30,85 +30,37 @@ #include #include #include -#include -#include +#include #include "./include/ubistry.h" -struct ubistryKey *keys = 0x0; - - int main(int argc,char **argv) { - mpiMessage_t msg; - struct ubistryKey *tmpKey = 0x0; if (fork() != 0x0) { + sched_yield(); exit(0x0); } - if (mpiCreateMbox("ubistry") != 0x0) { - printf("Error: Error Creating Mail Box\n"); - exit(-1); - } + ubistryInitMbox(MBOX_NAME); - keys = (struct ubistryKey *)malloc(sizeof(struct ubistryKey)); - - ubistryAddKey("ubu","is a god"); - ubistryAddKey("TCA","is a cry baby"); + ubistryAddKey("Ubu","Creator Of UbixOS"); + ubistryAddKey("TCA","The GUI GUY!!!"); while (1) { - if (mpiFetchMessage("ubistry",&msg) == 0x0) { - switch (msg.type) { - case 50: - tmpKey = ubistryFindKey(msg.data); - if (tmpKey == 0x0) - printf("ubistry: Key (%s) Not Found\n",msg.data); - else - printf("ubistry: key (%s) Found Has Value (%s)\n",tmpKey->name,tmpKey->value); - break; - default: - printf("ubistry: Command (%i) With Data (%s) Not Valid\n",msg.type,msg.data); - break; - } - } + ubistryProcessMessages(); + sched_yield(); } exit(0x0); } -struct ubistryKey * ubistryFindKey(char *name) { - struct ubistryKey *tmpKey = keys; - - for (;tmpKey;tmpKey=tmpKey->next) { - if (!strcmp(name,tmpKey->name)) { - return(tmpKey); - } - } - return(0x0); - } - -int ubistryAddKey(char *name,char *value) { - struct ubistryKey *tmpKey = (struct ubistryKey *)malloc(sizeof(struct ubistryKey)); - - sprintf(tmpKey->name,name); - sprintf(tmpKey->value,value); - - if (keys == 0x0) { - keys = tmpKey; - keys->prev = 0x0; - keys->next = 0x0; - } - else { - tmpKey->next = keys; - tmpKey->prev = 0x0; - keys->prev = tmpKey; - keys = tmpKey; - } - - return(0x0); - } - /*** $Log$ + Revision 1.3 2004/05/26 13:10:39 reddawg + ubistry: added two functions + ubistryFindKey(char *name) <- Will find key with specified name + ubistryAddKey(char *name,char *value) <-> Will add key with specified + name and value + Revision 1.2 2004/05/26 12:16:02 reddawg ubistry: now runs as a deamon diff --git a/src/bin/ubistry/message.c b/src/bin/ubistry/message.c new file mode 100644 index 0000000..d060524 --- /dev/null +++ b/src/bin/ubistry/message.c @@ -0,0 +1,91 @@ +/***************************************************************************************** + Copyright (c) 2002-2004 The UbixOS Project + All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyright notice, this list of + conditions, the following disclaimer and the list of authors. Redistributions in binary + form must reproduce the above copyright notice, this list of conditions, the following + disclaimer and the list of authors in the documentation and/or other materials provided + with the distribution. Neither the name of the UbixOS Project nor the names of its + contributors may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL + THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR + TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + $Id$ + +*****************************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "./include/ubistry.h" + +int ubistryInitMbox(char *name) { + + if (mpiCreateMbox(name) != 0x0) { + printf("Error: Error Creating Mail Box: [%s]\n",name); + return(-1); + } + + return(0x0); + } + +void ubistryProcessMessages() { + mpiMessage_t msg; + struct ubistryKey *tmpKey = 0x0; + char *key,*value; + + mfmStart: + if (mpiFetchMessage("ubistry",&msg) == 0x0) { + switch (msg.type) { + case 50: + tmpKey = ubistryFindKey(msg.data); + if (tmpKey == 0x0) + printf("ubistry: Key (%s) Not Found\n",msg.data); + else + printf("ubistry: Key (%s) Found Has Value (%s)\n",tmpKey->name,tmpKey->value); + break; + case 51: + key = strtok(msg.data,","); + value = strtok(NULL,"\n"); + printf("ubistry: Adding key (%s) with value (%s)\n",key,value); + ubistryAddKey(key,value); + break; + case 666: + mpiDestroyMbox("ubistry"); + if (fork() == 0x0) { + printf("ubistry: Restarting\n"); + exec("ubistry@sys",0x0,0x0); + } + else { + exit(0x0); + } + break; + default: + printf("ubistry: Command (%i) With Data (%s) Not Valid\n",msg.type,msg.data); + break; + } + goto mfmStart; + } + return; + } + +/*** + $Log$ + END + ***/