projects
/
NeonServV5.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
141636b
)
added cmd_search onchan criteria
author
pk910
<philipp@zoelle1.de>
Sun, 18 Dec 2011 16:34:26 +0000
(17:34 +0100)
committer
pk910
<philipp@zoelle1.de>
Sun, 18 Dec 2011 16:36:42 +0000
(17:36 +0100)
src/cmd_neonserv_search.c
patch
|
blob
|
history
diff --git
a/src/cmd_neonserv_search.c
b/src/cmd_neonserv_search.c
index 2101cd2b46443d264c59c17046004cec500fa94b..0585c8a4cbc0a0a25ca18f4952b54ad4ee2ddddc 100644
(file)
--- a/
src/cmd_neonserv_search.c
+++ b/
src/cmd_neonserv_search.c
@@
-32,6
+32,7
@@
struct neonserv_cmd_search_criteria {
char *name;
char *registrar;
struct neonserv_cmd_search_criteria {
char *name;
char *registrar;
+ char *onchan;
unsigned int flags : 16;
unsigned int unvisited;
unsigned int registered;
unsigned int flags : 16;
unsigned int unvisited;
unsigned int registered;
@@
-58,6
+59,7
@@
CMD_BIND(neonserv_cmd_search) {
}
if(!stricmp(argv[i], "name")) criteria->name = argv[i+1];
else if(!stricmp(argv[i], "registrar")) criteria->registrar = argv[i+1];
}
if(!stricmp(argv[i], "name")) criteria->name = argv[i+1];
else if(!stricmp(argv[i], "registrar")) criteria->registrar = argv[i+1];
+ else if(!stricmp(argv[i], "onchan")) criteria->onchan = argv[i+1];
else if(!stricmp(argv[i], "unvisited")) criteria->unvisited = strToTime(user, argv[i+1]);
else if(!stricmp(argv[i], "registered")) criteria->registered = strToTime(user, argv[i+1]);
else if(!stricmp(argv[i], "flags")) {
else if(!stricmp(argv[i], "unvisited")) criteria->unvisited = strToTime(user, argv[i+1]);
else if(!stricmp(argv[i], "registered")) criteria->registered = strToTime(user, argv[i+1]);
else if(!stricmp(argv[i], "flags")) {
@@
-137,8
+139,16
@@
CMD_BIND(neonserv_cmd_search) {
if((criteria->flags & CMD_SEARCH_FLAG_NOT_NODELETE) && strcmp(row[3], "0")) continue;
if((criteria->flags & CMD_SEARCH_FLAG_HAS_SUSPENDED) && strcmp(row[4], "1")) continue;
if((criteria->flags & CMD_SEARCH_FLAG_NOT_SUSPENDED) && strcmp(row[4], "0")) continue;
if((criteria->flags & CMD_SEARCH_FLAG_NOT_NODELETE) && strcmp(row[3], "0")) continue;
if((criteria->flags & CMD_SEARCH_FLAG_HAS_SUSPENDED) && strcmp(row[4], "1")) continue;
if((criteria->flags & CMD_SEARCH_FLAG_NOT_SUSPENDED) && strcmp(row[4], "0")) continue;
- if(
criteria->flags & CMD_SEARCH_FLAG_STATES
) {
+ if(
(criteria->flags & CMD_SEARCH_FLAG_STATES) || criteria->onchan
) {
struct ChanNode *channel = getChanByName(row[0]);
struct ChanNode *channel = getChanByName(row[0]);
+ if(criteria->onchan) {
+ if(!channel) continue;
+ struct ChanUser *chanuser = NULL;
+ for(chanuser = getChannelUsers(channel, NULL); chanuser; chanuser = getChannelUsers(channel, chanuser)) {
+ if(!match(criteria->onchan, chanuser->user->nick)) break;
+ }
+ if(!chanuser) continue;
+ }
if((criteria->flags & CMD_SEARCH_FLAG_IS_JOINED) && !channel) continue;
if((criteria->flags & CMD_SEARCH_FLAG_NOT_JOINED) && channel) continue;
if(channel && (criteria->flags & (CMD_SEARCH_FLAG_IS_OPPED | CMD_SEARCH_FLAG_NOT_OPPED | CMD_SEARCH_FLAG_IS_VOICED | CMD_SEARCH_FLAG_NOT_VOICED))) {
if((criteria->flags & CMD_SEARCH_FLAG_IS_JOINED) && !channel) continue;
if((criteria->flags & CMD_SEARCH_FLAG_NOT_JOINED) && channel) continue;
if(channel && (criteria->flags & (CMD_SEARCH_FLAG_IS_OPPED | CMD_SEARCH_FLAG_NOT_OPPED | CMD_SEARCH_FLAG_IS_VOICED | CMD_SEARCH_FLAG_NOT_VOICED))) {