#include "ChanUser.h"
#include "ChanNode.h"
+#include "ModeNode.h"
#include "UserNode.h"
struct ChanUser* addChanUser(struct ChanNode *chan, struct UserNode *user) {
int isUserOnChan(struct UserNode *user, struct ChanNode *chan) {
struct ChanUser *chanuser;
- for(chanuser = user->channel; chanuser; chanuser = chanuser->next_chan) {
- if(chanuser->chan == chan)
- return 1;
+ if(isModeSet(chan->modes, 'd') || isModeSet(chan->modes, 'D')) {
+ for(chanuser = chan->user; chanuser; chanuser = chanuser->next_user) {
+ if(chanuser->user == user)
+ return 1;
+ }
+ } else {
+ for(chanuser = user->channel; chanuser; chanuser = chanuser->next_chan) {
+ if(chanuser->chan == chan)
+ return 1;
+ }
}
return 0;
}
struct ChanUser* getChanUser(struct UserNode *user, struct ChanNode *chan) {
struct ChanUser *chanuser;
- for(chanuser = user->channel; chanuser; chanuser = chanuser->next_chan) {
- if(chanuser->chan == chan)
- return chanuser;
+ if(isModeSet(chan->modes, 'd') || isModeSet(chan->modes, 'D')) {
+ for(chanuser = chan->user; chanuser; chanuser = chanuser->next_user) {
+ if(chanuser->user == user)
+ return chanuser;
+ }
+ } else {
+ for(chanuser = user->channel; chanuser; chanuser = chanuser->next_chan) {
+ if(chanuser->chan == chan)
+ return chanuser;
+ }
}
return NULL;
}