return NULL;
}
+struct UserNode* getUserByMask(const char *mask) { //case sensitive
+ char cmask[strlen(mask)+1];
+ strcpy(cmask, mask);
+ int i;
+ struct UserNode *user = NULL;
+ for(i = 0; i < strlen(mask); i++) {
+ if(cmask[i] == '!') {
+ cmask[i] = 0;
+ user = getUserByNick(&cmask);
+ return user;
+ } else if(cmask[i] == '.') {
+ //it's a server
+ return NULL;
+ }
+ }
+ return NULL;
+}
+
struct UserNode* searchUserByNick(const char *nick) { //case insensitive
if(!isalpha(*nick))
return getUserByNick(nick);
return user;
}
+
+struct UserNode* addUserMask(const char *mask) {
+ char cmask[strlen(mask)+1];
+ strcpy(cmask, mask);
+ int i, ii = 0;
+ struct UserNode *user = NULL;
+ for(i = 0; i < strlen(mask)+1; i++) {
+ if(cmask[i] == '!') {
+ cmask[i] = 0;
+ user = addUser(&cmask);
+ if(user == NULL) return NULL;
+ ii = i+1;
+ } else if(cmask[i] == '.' && !user) {
+ //it's a server
+ return NULL;
+ } else if(cmask[i] == '@') {
+ if(user == NULL) return NULL;
+ cmask[i] = 0;
+ strcpy(user->ident, &cmask[ii]);
+ ii = i+1;
+ } else if(cmask[i] == '\0') {
+ if(user == NULL) return NULL;
+ strcpy(user->host, &cmask[ii]);
+ }
+ }
+ return NULL;
+}
+
int renameUser(struct UserNode* user, const char *new_nick) {
if(!is_valid_nick(new_nick))
return 0;