ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/modules/m_svsmode.c
(Generate patch)

Comparing ircd-hybrid/trunk/modules/m_svsmode.c (file contents):
Revision 2274 by michael, Tue Jun 18 16:01:57 2013 UTC vs.
Revision 3135 by michael, Mon Mar 10 21:11:25 2014 UTC

# Line 1 | Line 1
1   /*
2 < *  ircd-hybrid: an advanced Internet Relay Chat Daemon(ircd).
2 > *  ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3   *
4 < *  Copyright (C) 1999 by the Bahamut Development Team.
5 < *  Copyright (C) 2011 by the Hybrid Development Team.
4 > *  Copyright (c) 1999 Bahamut development team.
5 > *  Copyright (c) 2011-2014 ircd-hybrid development team
6   *
7   *  This program is free software; you can redistribute it and/or modify
8   *  it under the terms of the GNU General Public License as published by
# Line 48 | Line 48
48   * \param parv     Argument vector where parv[0] .. parv[parc-1] are non-NULL
49   *                 pointers.
50   * \note Valid arguments for this command are:
51 < *      - parv[0] = sender prefix
51 > *      - parv[0] = command
52   *      - parv[1] = nickname
53   *      - parv[2] = TS (or mode, depending on svs version)
54   *      - parv[3] = mode (or services id if old svs version)
55   *      - parv[4] = optional argument (services id)
56   */
57 < static void
57 > static int
58   ms_svsmode(struct Client *client_p, struct Client *source_p,
59             int parc, char *parv[])
60   {
61    struct Client *target_p = NULL;
62    int what = MODE_ADD;
63    unsigned int flag = 0, setmodes = 0;
64 <  char *m = NULL, *modes = NULL, *extarg = NULL;
64 >  const char *m = NULL, *modes = NULL, *extarg = NULL;
65    time_t ts = 0;
66  
67    if (!HasFlag(source_p, FLAGS_SERVICE))
68 <    return;
68 >    return 0;
69  
70    if ((parc >= 4) && ((*parv[3] == '+') || (*parv[3] == '-')))
71    {
# Line 80 | Line 80 | ms_svsmode(struct Client *client_p, stru
80    }
81  
82    if ((target_p = find_person(client_p, parv[1])) == NULL)
83 <    return;
83 >    return 0;
84  
85    if (ts && (ts != target_p->tsinfo))
86 <    return;
86 >    return 0;
87  
88    setmodes = target_p->umodes;
89  
# Line 121 | Line 121 | ms_svsmode(struct Client *client_p, stru
121              detach_conf(target_p, CONF_OPER);
122              ClrOFlag(target_p);
123              DelUMode(target_p, ConfigFileEntry.oper_only_umodes);
124 <
125 <           if ((dm = dlinkFindDelete(&oper_list, target_p)) != NULL)
126 <             free_dlink_node(dm);
124 >
125 >            if ((dm = dlinkFindDelete(&oper_list, target_p)))
126 >              free_dlink_node(dm);
127            }
128          }
129  
# Line 145 | Line 145 | ms_svsmode(struct Client *client_p, stru
145          break;
146  
147        case 'S':  /* Only servers may set +S in a burst */
148 +      case 'W':  /* Only servers may set +W in a burst */
149          break;
150  
151        default:
# Line 161 | Line 162 | ms_svsmode(struct Client *client_p, stru
162    }
163  
164    if (extarg)
165 <  {
166 <    sendto_server(client_p, CAP_TS6, NOCAPS,
166 <                  ":%s SVSMODE %s %lu %s %s", ID(source_p),
165 >    sendto_server(client_p, NOCAPS, NOCAPS, ":%s SVSMODE %s %lu %s %s",
166 >                  ID(source_p),
167                    ID(target_p), (unsigned long)target_p->tsinfo, modes, extarg);
168 –    sendto_server(client_p, NOCAPS, CAP_TS6,
169 –                  ":%s SVSMODE %s %lu %s %s", source_p->name,
170 –                  target_p->name, (unsigned long)target_p->tsinfo, modes, extarg);
171 –  }
168    else
169 <  {
170 <    sendto_server(client_p, CAP_TS6, NOCAPS,
175 <                  ":%s SVSMODE %s %lu %s", ID(source_p),
169 >    sendto_server(client_p, NOCAPS, NOCAPS, ":%s SVSMODE %s %lu %s",
170 >                  ID(source_p),
171                    ID(target_p), (unsigned long)target_p->tsinfo, modes);
177 –    sendto_server(client_p, NOCAPS, CAP_TS6,
178 –                  ":%s SVSMODE %s %lu %s", source_p->name,
179 –                  target_p->name, (unsigned long)target_p->tsinfo, modes);
180 –  }
172  
173    if (MyConnect(target_p) && (setmodes != target_p->umodes))
174    {
# Line 185 | Line 176 | ms_svsmode(struct Client *client_p, stru
176  
177      send_umode(target_p, target_p, setmodes, 0xffffffff, modebuf);
178    }
179 +
180 +  return 0;
181   }
182  
183 < static struct Message svsmode_msgtab = {
183 > static struct Message svsmode_msgtab =
184 > {
185    "SVSMODE", 0, 0, 3, MAXPARA, MFLG_SLOW, 0,
186 <  {m_ignore, m_ignore, ms_svsmode, m_ignore, m_ignore, m_ignore}
186 >  { m_ignore, m_ignore, ms_svsmode, m_ignore, m_ignore, m_ignore }
187   };
188  
189   static void
# Line 204 | Line 198 | module_exit(void)
198    mod_del_cmd(&svsmode_msgtab);
199   }
200  
201 < struct module module_entry = {
201 > struct module module_entry =
202 > {
203    .node    = { NULL, NULL, NULL },
204    .name    = NULL,
205    .version = "$Revision$",

Diff Legend

– Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)