-/* cmd_neonserv_nicklist.c - NeonServ v5.5
+/* cmd_neonserv_nicklist.c - NeonServ v5.6
* Copyright (C) 2011-2012 Philipp Kreil (pk910)
*
* This program is free software: you can redistribute it and/or modify
}
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);