}
struct neonserv_cmd_nicklist_cache *cache = malloc(sizeof(*cache));
if (!cache) {
- perror("malloc() failed");
+ printf_log("neonserv", LOG_ERROR, "%s:%d malloc() failed", __FILE__, __LINE__);
return;
}
cache->client = client;
int chanuser_count;
char statebuf[5];
char accessbuf[50];
- char viscountbuf[5];
+ char viscountbuf[50];
int uaccess;
i = 3;
}
} else {
synced_user = 1;
- accessbufpos = sprintf(accessbuf, "\003040\003");
+ if(((chanuser->flags & CHANUSERFLAG_OPPED) && db_enfops > uaccess) || ((chanuser->flags & CHANUSERFLAG_VOICED) && db_enfvoice > uaccess))
+ accessbufpos = sprintf(accessbuf, "\003040\003");
+ else
+ accessbufpos = sprintf(accessbuf, "0");
}
} else if(!uaccess)
accessbufpos = sprintf(accessbuf, "0");
accessbufpos += sprintf(accessbuf+accessbufpos, ")");
content[2] = accessbuf;
if(flags & NEONSERV_CMD_NICKLIST_FLAG_VISCOUNT) {
- sprintf(viscountbuf, "%d", chanuser->visCount);
+ if(chanuser->flags & CHANUSERFLAG_PARTING)
+ sprintf(viscountbuf, "%d (\003P\003 %d)", chanuser->visCount, chanuser->old_visCount);
+ else
+ sprintf(viscountbuf, "%d", chanuser->visCount);
content[3] = viscountbuf;
}
table_add(table, content);