/* * PSYC Manager Daemon, src/pdb.cc * Copyright (C) 2001 Mark Ralf Thomson */ #include "psycm.h" #include "net.h" #include "classes.h" #include "extern.h" #include "int_functions.h" #include #include int readin_nickdb (HashTable *udb) { FILE *fd; char *filecounter; char dummy[12][1024]; nickdb *obj; char buffer[DB_ENTRY_SIZE]; if((fd=fopen("user.db","r"))==NULL){cout <<"Datenbank nicht gefunden\n";return 0;} filecounter = fgets(buffer,DB_ENTRY_SIZE,fd); do { obj = new nickdb(); split (buffer,dummy,'\1'); strncpy(obj->nick,&dummy[0][0],NICKLEN); //0 strncpy(obj->ip,&dummy[1][0],IPLEN); // 1 strncpy(obj->host,&dummy[2][0],HOSTLEN); // 2 strncpy(obj->vhost,&dummy[3][0],HOSTLEN); //3 strncpy(obj->realname,&dummy[4][0],NAMELEN); //4 strncpy(obj->ident,&dummy[5][0],IDENTLEN); // 5 strncpy(obj->email,&dummy[6][0],EMAILLEN); //6 strncpy(obj->password,&dummy[7][0],PASSLEN); //7 strncpy(obj->stamp_reg,&dummy[8][0],14); //8 strncpy(obj-> stamp_last,&dummy[9][0],14); //9 strncpy(obj->quit_msg,&dummy[10][0],QUITMSGLEN); //10 strncpy(obj->port,&dummy[11][0],6); //11 udb->insert(obj->nick,obj); filecounter = fgets(buffer,DB_ENTRY_SIZE,fd); } while (filecounter !=NULL); fclose(fd); return 1; } int saveout_nickdb(HashTable *udb) { FILE *fd; list::R> *table; int counter=0; char* parray[13]; nickdb *obj; char line[DB_ENTRY_SIZE]; if((fd=fopen("user.db","w"))==NULL){cout <<"Kann Dantenbank nicht zum Schreiben öffnen\n";return 0;} table=udb->getTable(); while (counter < udb->getSize()){ list::R>::iterator b = table[counter].begin(); while( b != table[counter].end() ) { cout<<"->U"<nick)==0) { b++; continue; } parray[0] = (obj->nick); parray[1] = (obj->ip); parray[2] = (obj->host); parray[3] = (obj->vhost); parray[4] = (obj->realname); parray[5] = (obj->ident); parray[6] = (obj->email); parray[7] = (obj->password); parray[8] = (obj->stamp_reg); parray[9] = (obj-> stamp_last); parray[10] = (obj->quit_msg); parray[11] = (obj->port); parray[12]=NULL; mknline(line,parray,DB_ENTRY_SIZE,'\1','\n'); write((int)fd,line,strlen(line)+1); ++b; } counter ++; } fclose(fd); return 1; }