ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/ermyth/src/svsignore.C
Revision: 1.4
Committed: Tue Aug 28 17:08:12 2007 UTC (16 years, 9 months ago) by pippijn
Content type: text/plain
Branch: MAIN
Changes since 1.3: +11 -8 lines
Log Message:
- changed name
- updated the example config to the new system
- added more documentation
- enhanced documentation generators
- added a link to the pdf to the website
- added an RSS feed generator
- transitioned hooks to c++ callbacks
- did various merges with upstream along the way
- added const where appropriate
- removed the old block allocator
- fixed most memory leaks
- transitioned some dictionaries to std::map
- transitioned some lists to std::vector
- made some free functions members where appropriate
- renamed string to dynstr and added a static string ststr
- use NOW instead of time (NULL) if possible
- completely reworked database backends, crypto handlers and protocol handlers
  to use an object factory
- removed the old module system. ermyth does not do any dynamic loading anymore
- fixed most of the build system
- reworked how protocol commands work

File Contents

# User Rev Content
1 pippijn 1.1 /*
2     * svsignore.C: Services ignore list management.
3 pippijn 1.2 * Rights to this code are documented in doc/pod/license.pod.
4 pippijn 1.1 *
5 pippijn 1.4 * Copyright © 2005-2007 Atheme Project (http://www.atheme.org)
6 pippijn 1.1 */
7    
8 pippijn 1.4 static char const rcsid[] = "$Id: svsignore.C,v 1.3 2007-07-21 13:23:22 pippijn Exp $";
9 pippijn 1.1
10     #include "atheme.h"
11     #include <account/svsignore.h>
12    
13     svsignore_vector svs_ignore_list;
14    
15     /*
16     * svsignore_add(char *mask, char *reason)
17     *
18     * Services ignore factory.
19     *
20     * Inputs:
21     * - mask to ignore
22     * - reason for ignore
23     *
24     * Outputs:
25     * - on success, a new svsignore object
26     *
27     * Side Effects:
28     * - a services ignore is added
29     *
30     * Bugs:
31     * - this function does not check for dupes
32     */
33     svsignore_t *
34     svsignore_add (char *mask, char *reason)
35     {
36     svsignore_t *svsignore;
37    
38 pippijn 1.4 svsignore = new svsignore_t;
39 pippijn 1.1
40     svs_ignore_list.push_back (svsignore);
41    
42     svsignore->mask = sstrdup (mask);
43     svsignore->settime = NOW;
44     svsignore->reason = sstrdup (reason);
45     cnt.svsignore++;
46    
47     return svsignore;
48     }
49    
50     /*
51     * svsignore_find(user_t *source)
52     *
53     * Finds any services ignores that affect a user.
54     *
55     * Inputs:
56     * - user object to check
57     *
58     * Outputs:
59     * - if any ignores match, the ignore that matches
60     * - if none match, NULL
61     *
62     * Side Effects:
63     * - none
64     */
65     svsignore_t *
66     svsignore_find (user_t *source)
67     {
68     svsignore_t *svsignore;
69 pippijn 1.4 svsignore_vector::iterator it = svs_ignore_list.begin ();
70     svsignore_vector::iterator et = svs_ignore_list.end ();
71 pippijn 1.1 char host[BUFSIZE];
72    
73     if (!use_svsignore)
74     return NULL;
75    
76     *host = '\0';
77     strlcpy (host, source->nick, BUFSIZE);
78     strlcat (host, "!", BUFSIZE);
79     strlcat (host, source->user, BUFSIZE);
80     strlcat (host, "@", BUFSIZE);
81     strlcat (host, source->host, BUFSIZE);
82    
83 pippijn 1.4 while (it != et)
84 pippijn 1.1 {
85     svsignore = *it;
86    
87     if (!match (svsignore->mask, host))
88     return svsignore;
89 pippijn 1.4
90     ++it;
91 pippijn 1.1 }
92    
93     return NULL;
94     }
95    
96     /*
97     * svsignore_delete(svsignore_t *svsignore)
98     *
99     * Destroys a services ignore.
100     *
101     * Inputs:
102     * - svsignore to destroy
103     *
104     * Outputs:
105     * - nothing
106     *
107     * Side Effects:
108     * - a services ignore is destroyed and removed from the list
109     */
110     void
111     svsignore_delete (svsignore_t *svsignore)
112     {
113     svs_ignore_list.erase (svsignore);
114    
115 pippijn 1.4 sfree (svsignore->mask);
116     sfree (svsignore->reason);
117     delete svsignore;
118 pippijn 1.1 }