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

Comparing:
ircd-hybrid/include/channel.h (file contents), Revision 1155 by michael, Tue Aug 9 20:27:45 2011 UTC vs.
ircd-hybrid/trunk/include/channel.h (file contents), Revision 4785 by michael, Sat Oct 25 16:13:48 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) 2002 by the past and present ircd coders, and others.
4 > *  Copyright (c) 1997-2014 ircd-hybrid development team
5   *
6   *  This program is free software; you can redistribute it and/or modify
7   *  it under the terms of the GNU General Public License as published by
# Line 15 | Line 15
15   *
16   *  You should have received a copy of the GNU General Public License
17   *  along with this program; if not, write to the Free Software
18 < *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307
18 > *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
19   *  USA
20   */
21  
# Line 29 | Line 29
29  
30   #include "ircd_defs.h"        /* KEYLEN, CHANNELLEN */
31  
32 + /* channel visible */
33 + #define ShowChannel(v,c)        (PubChannel(c) || IsMember((v),(c)))
34 +
35 + #define IsMember(who, chan) ((find_channel_link(who, chan)) ? 1 : 0)
36 + #define AddMemberFlag(x, y) ((x)->flags |=  (y))
37 + #define DelMemberFlag(x, y) ((x)->flags &= ~(y))
38 +
39 + #define FLOOD_NOTICED           1
40 + #define JOIN_FLOOD_NOTICED      2
41 +
42 + #define SetFloodNoticed(x)   ((x)->flags |= FLOOD_NOTICED)
43 + #define IsSetFloodNoticed(x) ((x)->flags & FLOOD_NOTICED)
44 + #define ClearFloodNoticed(x) ((x)->flags &= ~FLOOD_NOTICED)
45 +
46 + #define SetJoinFloodNoticed(x)   ((x)->flags |= JOIN_FLOOD_NOTICED)
47 + #define IsSetJoinFloodNoticed(x) ((x)->flags & JOIN_FLOOD_NOTICED)
48 + #define ClearJoinFloodNoticed(x) ((x)->flags &= ~JOIN_FLOOD_NOTICED)
49 +
50   struct Client;
51  
52   /*! \brief Mode structure for channels */
53   struct Mode
54   {
55 <  unsigned int mode;   /*!< simple modes */
56 <  unsigned int limit;  /*!< +l userlimit */
57 <  char key[KEYLEN];    /*!< +k key */
55 >  unsigned int mode;   /**< simple modes */
56 >  unsigned int limit;  /**< +l userlimit */
57 >  char key[KEYLEN + 1];    /**< +k key */
58   };
59  
60   /*! \brief Channel structure */
# Line 47 | Line 65 | struct Channel
65    struct Channel *hnextch;
66    struct Mode mode;
67  
68 <  char *topic;
69 <  char *topic_info;
68 >  char topic[TOPICLEN + 1];
69 >  char topic_info[USERHOST_REPLYLEN];
70  
71    time_t channelts;
72    time_t topic_time;
73 <  time_t last_knock; /*!< don't allow knock to flood */
73 >  time_t last_knock;  /**< Don't allow knock to flood */
74    time_t last_join_time;
75    time_t first_received_message_time; /*!< channel flood control */
76    unsigned int flags;
77    int received_number_of_privmsgs;
78  
79 +  dlink_list locmembers;  /*!< local members are here too */
80    dlink_list members;
81    dlink_list invites;
82    dlink_list banlist;
# Line 66 | Line 85 | struct Channel
85  
86    float number_joined;
87  
88 <  char chname[CHANNELLEN + 1];
88 >  char name[CHANNELLEN + 1];
89   };
90  
91   /*! \brief Membership structure */
92   struct Membership
93   {
94 <  dlink_node channode;     /*!< link to chptr->members    */
95 <  dlink_node usernode;     /*!< link to source_p->channel */
96 <  struct Channel *chptr;   /*!< Channel pointer */
97 <  struct Client *client_p; /*!< Client pointer */
98 <  unsigned int flags;      /*!< user/channel flags, e.g. CHFL_CHANOP */
94 >  dlink_node locchannode;  /**< link to chptr->locmembers */
95 >  dlink_node channode;     /**< link to chptr->members    */
96 >  dlink_node usernode;     /**< link to source_p->channel */
97 >  struct Channel *chptr;   /**< Channel pointer */
98 >  struct Client *client_p; /**< Client pointer */
99 >  unsigned int flags;      /**< user/channel flags, e.g. CHFL_CHANOP */
100   };
101  
102 < /*! \brief Ban structure.  Used for b/e/I n!u\@h masks */
102 > /*! \brief Ban structure. Used for b/e/I n!u\@h masks */
103   struct Ban
104   {
105    dlink_node node;
106    char *name;
107 <  char *username;
107 >  char *user;
108    char *host;
109    char *who;
110    size_t len;
111    time_t when;
112    struct irc_ssaddr addr;
113    int bits;
114 <  char type;
114 >  int type;
115   };
116  
117 < extern dlink_list global_channel_list;
117 > extern dlink_list channel_list;
118 > extern struct event splitmode_event;
119  
120 < extern int check_channel_name(const char *, int);
121 < extern int can_send(struct Channel *, struct Client *, struct Membership *);
120 > extern int check_channel_name(const char *, const int);
121 > extern int can_send(struct Channel *, struct Client *, struct Membership *, const char *);
122   extern int is_banned(const struct Channel *, const struct Client *);
123 < extern int can_join(struct Client *, struct Channel *, const char *);
124 < extern int has_member_flags(struct Membership *, unsigned int);
123 > extern int can_join(struct Client *, const struct Channel *, const char *);
124 > extern int has_member_flags(const struct Membership *, const unsigned int);
125  
126 + extern void channel_do_join(struct Client *, char *, char *);
127 + extern void channel_do_join_0(struct Client *);
128 + extern void channel_do_part(struct Client *, char *, const char *);
129   extern void remove_ban(struct Ban *, dlink_list *);
130 < extern void init_channels(void);
131 < extern void add_user_to_channel(struct Channel *, struct Client *,
108 <                                unsigned int, int);
130 > extern void channel_init(void);
131 > extern void add_user_to_channel(struct Channel *, struct Client *, unsigned int, int);
132   extern void remove_user_from_channel(struct Membership *);
133   extern void channel_member_names(struct Client *, struct Channel *, int);
134   extern void add_invite(struct Channel *, struct Client *);
# Line 115 | Line 138 | extern void channel_modes(struct Channel
138   extern void check_spambot_warning(struct Client *, const char *);
139   extern void check_splitmode(void *);
140   extern void free_channel_list(dlink_list *);
118 extern void free_topic(struct Channel *);
141   extern void destroy_channel(struct Channel *);
142 < extern void set_channel_topic(struct Channel *, const char *, const char *, time_t);
142 > extern void channel_set_topic(struct Channel *, const char *, const char *, time_t, int);
143  
144 < extern const char *get_member_status(const struct Membership *, int);
144 > extern const char *get_member_status(const struct Membership *, const int);
145  
146   extern struct Channel *make_channel(const char *);
147   extern struct Membership *find_channel_link(struct Client *, struct Channel *);
148 <
127 < /* channel visible */
128 < #define ShowChannel(v,c)        (PubChannel(c) || IsMember((v),(c)))
129 <
130 < #define IsMember(who, chan) ((find_channel_link(who, chan)) ? 1 : 0)
131 < #define AddMemberFlag(x, y) ((x)->flags |=  (y))
132 < #define DelMemberFlag(x, y) ((x)->flags &= ~(y))
133 <
134 < #define FLOOD_NOTICED           1
135 < #define JOIN_FLOOD_NOTICED      2
136 <
137 < #define SetFloodNoticed(x)   ((x)->flags |= FLOOD_NOTICED)
138 < #define IsSetFloodNoticed(x) ((x)->flags & FLOOD_NOTICED)
139 < #define ClearFloodNoticed(x) ((x)->flags &= ~FLOOD_NOTICED)
140 <
141 < #define SetJoinFloodNoticed(x)   ((x)->flags |= JOIN_FLOOD_NOTICED)
142 < #define IsSetJoinFloodNoticed(x) ((x)->flags & JOIN_FLOOD_NOTICED)
143 < #define ClearJoinFloodNoticed(x) ((x)->flags &= ~JOIN_FLOOD_NOTICED)
144 <
145 < #endif  /* INCLUDED_channel_h */
148 > #endif

Diff Legend

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