/* 0-NAO EXISTE! 1-EXISTE! */ int existUser(node *t,char *username, char *pass) { if(t) { if(strcmp(t->username,username) == 0){ if(strcmp(t->password,pass) == 0) return 1; else return -4; } if(strcmp(t->username,username) > 0) return existUser(t->left,username,pass); else return existUser(t->right,username,pass); } return -2; }
/* Funcion que va a agregar a un usuario SI Y SOLO SI no se * encuentra en la base de datos, Si existe no lo agrega. * REQUIRES: * user != NULL * RETURNS: * true si el usuario fue agregado * false caso contrario (ej ya existia o error) * NOTE: NO se debe liberar user despues de haber llamado a esta * funcion. */ bool UDataBase::addUser (CUser * user) { bool result = false; /* pres */ ASSERT (user != NULL); /* verificamos si existe o no en la hashTable */ if (existUser (user)) /* lo borramos al choripan */ delete user; else { fstream filestr; fstream verF; QString data = ""; /*! hacemos atomico esto */ this->mutex.lock(); /* agregamos a la hash una nueva entrada */ this->hashTable.insert (user->getMAC(), user); this->mutex.unlock(); /* hacemos un append en el archivo */ data = user->getMAC(); /* tenemos: MAC */ data.append(QChar(',')); /* tenemos: MAC, */ data.append (user->getNick()); /* tenemos: MAC,Nickname */ data.append(QChar('\n')); /* tenemos: MAC,Nickname\n */ filestr.open(this->fname.toStdString().c_str(), fstream::out | fstream::app); if (filestr.good()) { filestr << data.toStdString().c_str(); filestr.close(); } /*! ahora vamos a guardar los usuarios que se registran para * llevar una cuenta propia de usuarios registrados por noche */ verF.open(REG_CONTROL_FILE, fstream::out | fstream::app); if (verF.good()) { QString auxD = "<user>"; time_t nowraw; char *strTime = NULL; time(&nowraw); strTime = ctime(&nowraw); auxD.append("<Fecha>"); auxD.append(strTime); auxD.append("</Fecha>"); auxD.append("\n"); auxD.append("<user_inf>"); auxD.append(data.toStdString().c_str()); auxD.append("</user_inf>"); auxD.append("\n</user>\n"); verF << auxD.toStdString().c_str(); verF.close(); } result = true; } return result; }