Mercurial > irccd
annotate tests/data/example-dl-plugin.c @ 1052:8904cd227948
misc: update INSTALL.md
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 20 Jun 2021 12:33:25 +0200 |
parents | 8f8ce47aba8a |
children | 8f26ee9cc6dd |
rev | line source |
---|---|
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * example-dl-plugin.c -- simple plugin for unit tests |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2013-2021 David Demelier <markand@malikania.fr> |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <string.h> |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #include <irccd/event.h> |
1003 | 22 #include <irccd/server.h> |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include <irccd/util.h> |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 struct kw { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 const char *key; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 char value[256]; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 }; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 /* |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 * Options. |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 */ |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 static struct kw options[] = { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 { "option-1", "value-1" } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 }; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 static const char *options_list[] = { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 "option-1", |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 NULL |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 }; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 /* |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 * Templates. |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 */ |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 static struct kw templates[] = { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 { "template-1", "Welcome #{target}" } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 }; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 static const char *templates_list[] = { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 "template-1", |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 NULL |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 }; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 /* |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 * Paths. |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 */ |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 static struct kw paths[] = { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 { "path-1", "/usr/local/etc" } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 }; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 static const char *paths_list[] = { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 "path-1", |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 NULL |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 }; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 static void |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 set(struct kw *table, size_t tablesz, const char *key, const char *value) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 for (size_t i = 0; i < tablesz; ++i) { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 if (strcmp(table[i].key, key) == 0) { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 strlcpy(table[i].value, value, sizeof (table[i].value)); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 break; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 static const char * |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 get(const struct kw *table, size_t tablesz, const char *key) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 for (size_t i = 0; i < tablesz; ++i) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 if (strcmp(table[i].key, key) == 0) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 return table[i].value; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 return NULL; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 |
1003 | 87 void |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 example_dl_plugin_set_option(const char *key, const char *value) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 set(options, IRC_UTIL_SIZE(options), key, value); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 |
1003 | 93 const char * |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 example_dl_plugin_get_option(const char *key) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 return get(options, IRC_UTIL_SIZE(options), key); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 |
1003 | 99 const char ** |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 example_dl_plugin_get_options(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 return options_list; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
103 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 |
1003 | 105 void |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 example_dl_plugin_set_template(const char *key, const char *value) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 set(templates, IRC_UTIL_SIZE(templates), key, value); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 |
1003 | 111 const char * |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 example_dl_plugin_get_template(const char *key) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 return get(templates, IRC_UTIL_SIZE(templates), key); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 |
1003 | 117 const char ** |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 example_dl_plugin_get_templates(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 return templates_list; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 |
1003 | 123 void |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 example_dl_plugin_set_path(const char *key, const char *value) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 set(paths, IRC_UTIL_SIZE(paths), key, value); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 |
1003 | 129 const char * |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 example_dl_plugin_get_path(const char *key) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
132 return get(paths, IRC_UTIL_SIZE(paths), key); |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
133 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
134 |
1003 | 135 const char ** |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
136 example_dl_plugin_get_paths(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
137 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
138 return paths_list; |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
139 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
140 |
1003 | 141 void |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
142 example_dl_plugin_event(const struct irc_event *ev) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
143 { |
1003 | 144 irc_server_send(ev->server, "EVENT"); |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
145 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
146 |
1003 | 147 void |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
148 example_dl_plugin_load(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
149 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
150 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
151 |
1003 | 152 void |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
153 example_dl_plugin_reload(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
154 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
155 } |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
156 |
1003 | 157 void |
938
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
158 example_dl_plugin_unload(void) |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
159 { |
7b74df7e8913
irccd: native plugin support
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
160 } |