modules/server/party_commands.c File Reference

#include "server.h"

Go to the source code of this file.

Functions

static int party_servers (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static void parse_server (const char *text, char **host, int *port, char **pass)
static int party_plus_server (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_minus_server (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_dump (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_jump (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_chanmembermode (partymember_t *p, user_t *u, const char *cmd, const char *text, const char *flags, const char *mode)
static int party_op (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_deop (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_halfop (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_dehalfop (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_voice (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_devoice (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_msg (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_act (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static void parse_chanset (channel_t *chan, const char *settings)
static int party_pls_chan (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_minus_chan (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int channel_get_modes (channel_t *chan, char *buf, int maxlen)
static char channel_get_prefix (channel_member_t *m)
static int party_channels (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_chanset (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_chaninfo (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_chansave (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_plus_mask (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_list_masks (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)
static int party_minus_mask (partymember_t *p, const char *nick, user_t *u, const char *cmd, const char *text)

Variables

static const char rcsid [] = "$Id: party_commands.c,v 1.28 2008-10-17 15:57:43 sven Exp $"
bind_list_t server_party_commands []


Function Documentation

static int channel_get_modes ( channel_t chan,
char *  buf,
int  maxlen 
) [static]

Definition at line 355 of file party_commands.c.

References channel::args, flag_to_str(), channel::mode, channel::nargs, channel_mode_arg::type, and channel_mode_arg::value.

Referenced by party_channels().

00356 {
00357   int i, len, l;
00358 
00359   flag_to_str(&chan->mode, buf);
00360   len = strlen(buf);
00361   for (i = 0; i < chan->nargs; ++i) {
00362     if (!chan->args[i].value) continue;
00363     buf[len++] = chan->args[i].type;
00364     if (len + 1 > maxlen) {
00365       buf[len] = 0;
00366       return 1;
00367     }
00368   }
00369   buf[len] = 0;
00370   for (i = 0; i < chan->nargs; ++i) {
00371     if (!chan->args[i].value) continue;
00372     l = strlen(chan->args[i].value);
00373     if (len + 2 + l > maxlen) return 1;
00374     buf[len++] = ' ';
00375     strcpy(buf + len, chan->args[i].value);
00376     len += l;
00377   }
00378   return 0;
00379 }

static char channel_get_prefix ( channel_member_t m  )  [static]

Definition at line 381 of file party_commands.c.

References current_server, flag_to_str(), and channel_member::mode.

Referenced by party_channels().

00382 {
00383   int i, len;
00384   char buf[256];
00385 
00386   flag_to_str(&m->mode, buf);
00387   len = strlen(current_server.modeprefix);
00388   for (i = 0; i < len; ++i) {
00389     if (strchr(buf, current_server.modeprefix[i])) return current_server.whoprefix[i];
00390   }
00391   return ' ';
00392 }

static void parse_chanset ( channel_t chan,
const char *  settings 
) [static]

Definition at line 265 of file party_commands.c.

References channel_set, egg_get_arg(), and NULL.

Referenced by party_chanset(), and party_pls_chan().

00266 {
00267   char *name, *value;
00268   char flagbuf[2] = {0, 0};
00269 
00270   while (settings) {
00271     egg_get_arg(settings, &settings, &name);
00272     if (!name) break;
00273     if (*name == '+' || *name == '-') {
00274       if (*name == '+') flagbuf[0] = '1';
00275       else flagbuf[0] = '0';
00276       value = flagbuf;
00277       if (*(name+1)) channel_set(chan, flagbuf, name+1, 0, NULL);
00278     }
00279     else {
00280       egg_get_arg(settings, &settings, &value);
00281       channel_set(chan, value, name, 0, NULL);
00282       if (value) free(value);
00283     }
00284     free(name);
00285   }
00286 }

static void parse_server ( const char *  text,
char **  host,
int *  port,
char **  pass 
) [static]

Definition at line 44 of file party_commands.c.

References NULL.

Referenced by party_jump(), party_minus_server(), and party_plus_server().

00045 {
00046   char *sep, *sport = NULL;
00047 
00048   *pass = NULL;
00049   *port = 0;
00050   while (isspace(*text)) text++;
00051   *host = strdup(text);
00052   sep = strchr(*host, ' ');
00053   if (sep) {
00054     *sep++ = 0;
00055     while (isspace(*sep)) sep++;
00056     sport = sep;
00057     sep = strchr(sep, ' ');
00058     if (sep) {
00059       *sep++ = 0;
00060       while (isspace(*sep)) sep++;
00061       *pass = sep;
00062     }
00063     *port = atoi(sport);
00064   }
00065 }

static int party_act ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 247 of file party_commands.c.

References _, BIND_RET_LOG, egg_get_arg(), partymember_printf(), printserv, and SERVER_NORMAL.

00248 {
00249   char *dest;
00250   const char *next;
00251 
00252   egg_get_arg(text, &next, &dest);
00253   if (!next || !*next || !dest || !*dest) {
00254     partymember_printf(p, _("Syntax: act <nick/chan> <action>"));
00255     if (dest) free(dest);
00256     return(0);
00257   }
00258 
00259   printserv(SERVER_NORMAL, "PRIVMSG %s :\001ACTION %s\001\r\n", dest, next);
00260   partymember_printf(p, _("Action to %1$s: %2$s"), dest, next);
00261   free(dest);
00262   return(BIND_RET_LOG);
00263 }

static int party_chaninfo ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 464 of file party_commands.c.

References BIND_RET_LOG, channel_get, channel_probe, CHANNEL_STATIC, egg_get_arg(), channel::flags, channel::name, NULL, partymember_printf(), and server_config.

00465 {
00466   channel_t *chan;
00467   char *next, *item, *value;
00468 
00469   while (text && isspace(*text)) text++;
00470 
00471   if (!text || !*text) {
00472     partymember_printf(p, "Syntax: %s <channel>", cmd);
00473     return(0);
00474   }
00475 
00476   chan = channel_probe(text, 0);
00477   if (!chan) {
00478     partymember_printf(p, "Channel not found!");
00479     return(0);
00480   }
00481 
00482   partymember_printf(p, "Information about '%s':", chan->name);
00483   if (!(chan->flags & CHANNEL_STATIC)) {
00484     partymember_printf(p, "Saved settings: none (not a static channel)");
00485   }
00486   else {
00487     next = server_config.chaninfo_items;
00488     while (next && *next) {
00489       egg_get_arg(next, &next, &item);
00490       if (!item) break;
00491       channel_get(chan, &value, item, 0, NULL);
00492       if (value) {
00493         partymember_printf(p, "%s: %s", item, value);
00494       }
00495       free(item);
00496     }
00497   }
00498   return(BIND_RET_LOG);
00499 }

static int party_chanmembermode ( partymember_t p,
user_t u,
const char *  cmd,
const char *  text,
const char *  flags,
const char *  mode 
) [static]

Definition at line 146 of file party_commands.c.

References BIND_RET_LOG, channel_probe, egg_get_arg(), channel::name, partychan::name, NULL, partychan_get_default(), partymember_printf(), printserv, SERVER_NORMAL, user_check_flags_str(), and user_check_partial_flags_str().

Referenced by party_dehalfop(), party_deop(), party_devoice(), party_halfop(), party_op(), and party_voice().

00147 {
00148   char *nick, *chan;
00149   partychan_t *pchan;
00150   channel_t *ircchan;
00151 
00152   egg_get_arg(text, &text, &chan);
00153 
00154   if (!chan) {
00155     partymember_printf(p, "Syntax: %s [channel] <nick>", cmd);
00156     return(0);
00157   }
00158 
00159   if (text && *text) nick = strdup(text);
00160   else {
00161     nick = chan;
00162     pchan = partychan_get_default(p);
00163     if (pchan) chan = strdup(pchan->name);
00164     else {
00165       partymember_printf(p, "You are not on a partyline channel! Please specify a channel: %s [channel] <nick>", cmd);
00166       free(nick);
00167       return(0);
00168     }
00169   }
00170 
00171   ircchan = channel_probe(chan, 0);
00172   if (!ircchan) {
00173     partymember_printf(p, "I'm not on '%s', as far as I know!", chan);
00174     free(nick);
00175     free(chan);
00176     return(0);
00177   }
00178 
00179   if (user_check_partial_flags_str(u, NULL, flags) || user_check_flags_str(u, chan, flags)) {
00180     partymember_printf(p, "Setting mode %s for %s on %s", mode, nick, ircchan->name);
00181     printserv(SERVER_NORMAL, "MODE %s %s %s", ircchan->name, mode, nick);
00182   }
00183   else {
00184     partymember_printf(p, "You need +%s to set that mode!", flags);
00185   }
00186   free(nick);
00187   free(chan);
00188   return(BIND_RET_LOG);
00189 }

static int party_channels ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 395 of file party_commands.c.

References _, BIND_RET_LOG, channel_get_modes(), channel_get_prefix(), channel_head, channel_probe, user::handle, channel::member_head, channel::name, nchannels, channel_member::next, channel::next, channel_member::nick, channel::nmembers, partymember_printf(), channel::topic, channel_member::uhost, and user_lookup_by_irchost().

00396 {
00397   char buf[512];
00398   user_t *user;
00399   channel_t *chan;
00400   channel_member_t *m;
00401 
00402   if ( !text || !*text) {
00403     if (nchannels <= 0) {
00404       partymember_printf(p, _("The channel list is empty."));
00405       return BIND_RET_LOG;
00406     }
00407 
00408     for (chan = channel_head; chan; chan = chan->next) {
00409       partymember_printf(p, "   %s : %d member%s", chan->name, chan->nmembers, chan->nmembers == 1 ? "" : "s");
00410     }
00411     return BIND_RET_LOG;
00412   }
00413 
00414   chan = channel_probe(text, 0);
00415   if (!chan) {
00416     partymember_printf(p, "Channel not found!");
00417     return 0;
00418   }
00419 
00420   if (!chan->nmembers) {
00421     partymember_printf(p, "Not in channel.");
00422     return 0;
00423   }
00424 
00425   channel_get_modes(chan, buf, 512);
00426   partymember_printf(p, "Channel %s, %d member%s, mode +%s:", chan->name, chan->nmembers, chan->nmembers == 1 ? "" : "s", buf);
00427   partymember_printf(p, "Channel Topic: %s", chan->topic);
00428   partymember_printf(p, "(n = owner, m = master, o = op, d = deop, b = bot)");
00429   partymember_printf(p, " NICKNAME        HANDLE          JOIN  IDLE  USER@HOST");
00430   for (m = chan->member_head; m; m = m->next) {
00431     snprintf(buf, 512, "%s!%s", m->nick, m->uhost);
00432     user = user_lookup_by_irchost(buf);
00433     partymember_printf(p, "%c%-15s %-15s %-5s %-5s %s", channel_get_prefix(m), m->nick, user ? user->handle : "*", "N/A", "N/A", m->uhost);
00434   }
00435   partymember_printf(p, "End of channel info.");
00436   return BIND_RET_LOG;
00437 }

static int party_chansave ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 502 of file party_commands.c.

References BIND_RET_LOG, channel_save, and server_config.

00503 {
00504   while (text && isspace(*text)) text++;
00505 
00506   channel_save(text && *text ? text : server_config.chanfile);
00507   return(BIND_RET_LOG);
00508 }

static int party_chanset ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 440 of file party_commands.c.

References BIND_RET_LOG, channel_probe, egg_get_arg(), parse_chanset(), and partymember_printf().

00441 {
00442   const char *settings;
00443   char *name;
00444   channel_t *chan;
00445 
00446   egg_get_arg(text, &settings, &name);
00447   if (!name) {
00448     partymember_printf(p, "Syntax: %s <channel> [settings]", cmd);
00449     return(0);
00450   }
00451 
00452   chan = channel_probe(name, 0);
00453   free(name);
00454   if (!chan) {
00455     partymember_printf(p, "Channel not found! Use +chan if you want to create a new channel.");
00456     return(0);
00457   }
00458 
00459   parse_chanset(chan, settings);
00460   return(BIND_RET_LOG);
00461 }

static int party_dehalfop ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 210 of file party_commands.c.

References party_chanmembermode().

00211 {
00212   return party_chanmembermode(p, u, cmd, text, "lo", "-l");
00213 }

static int party_deop ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 198 of file party_commands.c.

References party_chanmembermode().

00199 {
00200   return party_chanmembermode(p, u, cmd, text, "o", "-o");
00201 }

static int party_devoice ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 222 of file party_commands.c.

References party_chanmembermode().

00223 {
00224   return party_chanmembermode(p, u, cmd, text, "lo", "-v");
00225 }

static int party_dump ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 114 of file party_commands.c.

References _, BIND_RET_LOG, partymember_printf(), printserv, and SERVER_NORMAL.

00115 {
00116   if (!text || !*text) {
00117     partymember_printf(p, _("Syntax: dump <commands>"));
00118     return(0);
00119   }
00120 
00121   printserv(SERVER_NORMAL, "%s\r\n", text);
00122   return(BIND_RET_LOG);
00123 }

static int party_halfop ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 204 of file party_commands.c.

References party_chanmembermode().

00205 {
00206   return party_chanmembermode(p, u, cmd, text, "lo", "+l");
00207 }

static int party_jump ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 126 of file party_commands.c.

References _, BIND_RET_LOG, kill_server, parse_server(), partymember_printf(), server_add, server_config, server_find, server_list_index, and server_set_next.

00127 {
00128   char *host, *pass;
00129   int port, num;
00130 
00131   if (text && *text) {
00132     parse_server(text, &host, &port, &pass);
00133     num = server_find(host, port, pass);
00134     if (num < 0) {
00135       num = server_add(host, port, pass);
00136       partymember_printf(p, _("Added %s/%d as server #%d.\n"), host, port ? port : server_config.default_port, num+1);
00137     }
00138     free(host);
00139   }
00140   else num = server_list_index+1;
00141   server_set_next(num);
00142   kill_server("changing servers");
00143   return(BIND_RET_LOG);
00144 }

static int party_list_masks ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 519 of file party_commands.c.

References BIND_RET_LOG.

00520 {
00521   return(BIND_RET_LOG);
00522 }

static int party_minus_chan ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 336 of file party_commands.c.

References BIND_RET_LOG, channel_remove, partymember_printf(), printserv, and SERVER_NORMAL.

00337 {
00338   while (text && isspace(*text)) text++;
00339 
00340   if (!text || !*text) {
00341     partymember_printf(p, "Syntax: -chan <channel>");
00342     return(0);
00343   }
00344 
00345   if (channel_remove(text)) {
00346     partymember_printf(p, "Channel not found!");
00347     return(0);
00348   }
00349 
00350   partymember_printf(p, "Channel '%s' has been removed.", text);
00351   printserv(SERVER_NORMAL, "PART %s", text);
00352   return(BIND_RET_LOG);
00353 }

static int party_minus_mask ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 526 of file party_commands.c.

References BIND_RET_LOG.

00527 {
00528   return(BIND_RET_LOG);
00529 }

static int party_minus_server ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 92 of file party_commands.c.

References _, BIND_RET_LOG, parse_server(), partymember_printf(), server_del, and server_find.

00093 {
00094   char *host, *pass;
00095   int port, i;
00096 
00097   if (!text || !*text) {
00098     partymember_printf(p, _("Syntax: -server <host> [port] [pass]"));
00099     return(0);
00100   }
00101 
00102   parse_server(text, &host, &port, &pass);
00103   i = server_find(host, port, pass);
00104   free(host);
00105   if (i < 0) partymember_printf(p, _("No matching servers."));
00106   else {
00107     server_del(i);
00108     partymember_printf(p, _("Deleted server %d."), i+1);
00109   }
00110   return(BIND_RET_LOG);
00111 }

static int party_msg ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 228 of file party_commands.c.

References _, BIND_RET_LOG, egg_get_arg(), partymember_printf(), printserv, and SERVER_NORMAL.

00229 {
00230   char *dest;
00231   const char *next;
00232 
00233   egg_get_arg(text, &next, &dest);
00234   if (!next || !*next || !dest || !*dest) {
00235     partymember_printf(p, _("Syntax: %s <nick/chan> <message>"), cmd);
00236     if (dest) free(dest);
00237     return(0);
00238   }
00239 
00240   printserv(SERVER_NORMAL, "PRIVMSG %s :%s\r\n", dest, next);
00241   partymember_printf(p, _("Msg to %1$s: %2$s"), dest, next);
00242   free(dest);
00243   return(BIND_RET_LOG);
00244 }

static int party_op ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 192 of file party_commands.c.

References party_chanmembermode().

00193 {
00194   return party_chanmembermode(p, u, cmd, text, "o", "+o");
00195 }

static int party_pls_chan ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 289 of file party_commands.c.

References _, BIND_RET_LOG, channel_add, channel_get, channel_lookup, CHANNEL_STATIC, egg_get_arg(), channel::flags, channel::name, NULL, parse_chanset(), partymember_printf(), printserv, SERVER_NORMAL, and server_support.

00290 {
00291   const char *settings, *chantypes;
00292   char *name, *key;
00293   channel_t *chan;
00294 
00295   egg_get_arg(text, &settings, &name);
00296   if (!name) {
00297     partymember_printf(p, "Syntax: +chan <channel> [settings]");
00298     return(0);
00299   }
00300 
00301   if (server_support("CHANTYPES", &chantypes) == -1) chantypes = "#&";
00302 
00303   if (!strchr(chantypes, *name)) {
00304     partymember_printf(p, _("Error: '%c' is not a valid channel prefix."), *name);
00305     partymember_printf(p, _("       This server supports '%s'"), chantypes);
00306     free(name);
00307     return(0);
00308   }
00309 
00310   chan = channel_lookup(name);
00311   if (chan) {
00312     if (chan->flags & CHANNEL_STATIC) {
00313       partymember_printf(p, _("Error: Channel '%s' already exists!"), name);
00314       free(name);
00315       return(0);
00316     }
00317     chan->flags |= CHANNEL_STATIC;
00318     partymember_printf(p, _("Channel '%s' has been made permanent."), name);
00319     return(BIND_RET_LOG);
00320   }
00321 
00322   chan = channel_add(name);
00323   partymember_printf(p, _("Channel '%s' has been created."), name);
00324   free(name);
00325 
00326   parse_chanset(chan, settings);
00327 
00328   channel_get(chan, &key, "key", 0, NULL);
00329   if (key && strlen(key)) printserv(SERVER_NORMAL, "JOIN %s %s", chan->name, key);
00330   else printserv(SERVER_NORMAL, "JOIN %s", chan->name);
00331 
00332   return(BIND_RET_LOG);
00333 }

static int party_plus_mask ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 512 of file party_commands.c.

References BIND_RET_LOG.

00513 {
00514   return(BIND_RET_LOG);
00515 }

static int party_plus_server ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 68 of file party_commands.c.

References _, BIND_RET_LOG, parse_server(), partymember_printf(), server_add, and server_config.

00069 {
00070   char *host, *pass;
00071   int port;
00072 
00073   if (!text || !*text) {
00074     partymember_printf(p, _("Syntax: +server <host> [port] [pass]"));
00075     return(0);
00076   }
00077 
00078   parse_server(text, &host, &port, &pass);
00079   if (!strlen(host)) {
00080     partymember_printf(p, _("Please specify a valid host."));
00081     free(host);
00082     return(0);
00083   }
00084 
00085   server_add(host, port, pass);
00086   partymember_printf(p, _("Added %s/%d.\n"), host, port ? port : server_config.default_port);
00087   free(host);
00088   return(BIND_RET_LOG);
00089 }

static int party_servers ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 27 of file party_commands.c.

References _, BIND_RET_LOG, server::host, server::next, partymember_printf(), server::pass, server::port, server_list, and server_list_len.

00028 {
00029   server_t *s;
00030 
00031   if (server_list_len <= 0) {
00032     partymember_printf(p, _("The server list is empty."));
00033     return(BIND_RET_LOG);
00034   }
00035 
00036   partymember_printf(p, _("%d server%s:"), server_list_len, (server_list_len != 1) ? "s" : "");
00037   for (s = server_list; s; s = s->next) {
00038     if (s->port) partymember_printf(p, _("   %s (port %d)%s"), s->host, s->port, s->pass ? _(" (password set)") : "");
00039     else partymember_printf(p, _("   %s (default port)%s"), s->host, s->pass ? _(" (password set)") : "");
00040   }
00041   return(BIND_RET_LOG);
00042 }

static int party_voice ( partymember_t p,
const char *  nick,
user_t u,
const char *  cmd,
const char *  text 
) [static]

Definition at line 216 of file party_commands.c.

References party_chanmembermode().

00217 {
00218   return party_chanmembermode(p, u, cmd, text, "lo", "+v");
00219 }


Variable Documentation

const char rcsid[] = "$Id: party_commands.c,v 1.28 2008-10-17 15:57:43 sven Exp $" [static]

Definition at line 21 of file party_commands.c.

Definition at line 532 of file party_commands.c.


Generated on Sun Nov 30 18:43:36 2008 for eggdrop1.9 by  doxygen 1.5.6