#include <udp.h>
gehe zum Quellcode dieser Datei
Funktionen | |
| int | udp_channel (mapping data) |
| int udp_channel | ( | mapping | data | ) |
Definiert in Zeile 3 der Datei xchannel.c.
Benutzt break_string(), DATA, i, ID, INETD, list, LOCAL_NAME, message, msg(), NAME, old_explode(), query_real_name(), RECIPIENT, REPLY, REQUEST und SENDER.
00003 { 00004 object *list; 00005 string msg; 00006 int i; 00007 string prefix; 00008 string *message; 00009 00010 switch(data["CMD"]) { 00011 case "emote": 00012 /* A channel emote. */ 00013 prefix = "["+capitalize(data["CHANNEL"]+"]:"; 00014 message=old_explode(break_string(capitalize(data[SENDER]+"@"+ 00015 capitalize(data[NAME])+" "+data[data],79-strlen(prefix)), 00016 "\n"); 00017 msg="\n"; 00018 for (i=0;i<sizeof(message);i++) 00019 msg+=prefix+message[i]+"\n"); 00020 break; 00021 case "list": 00022 /* Request for a list of people listening to a certain channel. */ 00023 list = filter( 00024 users(), "filter_listeners", this_object(), data["CHANNEL"]); 00025 if (i = sizeof(list)) { 00026 msg = "[" + capitalize(data["CHANNEL"]) + "@" + 00027 LOCAL_NAME + "] Listening:\n"; 00028 while(i--) 00029 msg += 00030 " " + capitalize(list[i]->query_real_name()) + "\n"; 00031 } 00032 else 00033 msg = "[" + capitalize(data["CHANNEL"]) + "@" + 00034 LOCAL_NAME + "] Nobody Listening.\n"; 00035 INETD->_send_udp(data[NAME], ([ 00036 REQUEST: REPLY, 00037 RECIPIENT: data[SENDER], 00038 ID: data[ID], 00039 DATA: msg 00040 ]) ); 00041 return 1; 00042 default: 00043 /* A regular channel message. */ 00044 msg = sprintf("%-80=s", "[" + capitalize(data["CHANNEL"]) + ":" + 00045 capitalize(data[SENDER]) + "@" + capitalize(data[NAME]) + 00046 "] " + data[DATA]) + "\n"; 00047 break; 00048 } 00049 for(i = sizeof(list = users()); i--; ) { 00050 /* If a wizard and earmuffs at 1 then send the message. */ 00051 if ((int)list[i]->query_level() >= 21 && 00052 (int)list[i]->listen_shout() == 1) 00053 tell_object(list[i], msg); 00054 } 00055 /* Never generate an error. Unknown channels can be ignored later. */ 00056 return 1; 00057 }

1.6.3