xchannel.c-Dateireferenz

#include <udp.h>
Include-Abhängigkeitsdiagramm für xchannel.c:

gehe zum Quellcode dieser Datei

Funktionen

int udp_channel (mapping data)

Dokumentation der Funktionen

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 }

Hier ist ein Graph der zeigt, was diese Funktion aufruft:

Erzeugt am Thu Jun 3 14:42:02 2010 für MorgenGrauen Mudlib von  doxygen 1.6.3