Mercurial > irccd
annotate irccdctl/main.c @ 974:342fb90f2512
irccdctl: re-implement many of the plugin-* commands
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 07 Feb 2021 14:36:28 +0100 |
parents | f365e5be1261 |
children | 5ffc8350e84b |
rev | line source |
---|---|
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * main.c -- irccdctl(1) main file |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2013-2021 David Demelier <markand@malikania.fr> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
960
4af3140f234d
misc: various fixes for Alpine Linux
David Demelier <markand@malikania.fr>
parents:
958
diff
changeset
|
19 #include <compat.h> |
4af3140f234d
misc: various fixes for Alpine Linux
David Demelier <markand@malikania.fr>
parents:
958
diff
changeset
|
20 |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #include <sys/socket.h> |
960
4af3140f234d
misc: various fixes for Alpine Linux
David Demelier <markand@malikania.fr>
parents:
958
diff
changeset
|
22 #include <sys/time.h> |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include <sys/un.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 #include <assert.h> |
974
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
25 #include <ctype.h> |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 #include <err.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 #include <errno.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 #include <limits.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 #include <stdarg.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 #include <stdlib.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 #include <stdnoreturn.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 #include <string.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 #include <unistd.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 #include <stdio.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 #include <irccd/limits.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 #include <irccd/util.h> |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
969
diff
changeset
|
40 static int verbose; |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 static int sock; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 static struct sockaddr_un sockaddr = { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 .sun_family = PF_LOCAL, |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 .sun_path = "/tmp/irccd.sock" |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 }; |
958
533639ec5e9c
misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents:
956
diff
changeset
|
46 static char in[IRC_BUF_LEN]; |
533639ec5e9c
misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents:
956
diff
changeset
|
47 static char out[IRC_BUF_LEN]; |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 static char * |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 poll(void) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 { |
958
533639ec5e9c
misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents:
956
diff
changeset
|
52 static char ret[IRC_BUF_LEN]; |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 char *nl; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 while (!(nl = strstr(in, "\n"))) { |
958
533639ec5e9c
misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents:
956
diff
changeset
|
56 char buf[IRC_BUF_LEN] = {0}; |
956
5e682f1cebcc
irccd: improve SSL support and add basic whois
David Demelier <markand@malikania.fr>
parents:
953
diff
changeset
|
57 ssize_t nr; |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 |
956
5e682f1cebcc
irccd: improve SSL support and add basic whois
David Demelier <markand@malikania.fr>
parents:
953
diff
changeset
|
59 if ((nr = recv(sock, buf, sizeof (buf) - 1, 0)) <= 0) |
5e682f1cebcc
irccd: improve SSL support and add basic whois
David Demelier <markand@malikania.fr>
parents:
953
diff
changeset
|
60 errc(1, nr == 0 ? ECONNRESET : errno, "abort"); |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 if (strlcat(in, buf, sizeof (in)) >= sizeof (in)) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 errc(1, EMSGSIZE, "abort"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 *nl = '\0'; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 strlcpy(ret, in, sizeof (ret)); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 memmove(in, nl + 1, sizeof (in) - (nl - in) - 1); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 return ret; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 dial(void) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 const struct timeval tv = { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 .tv_sec = 30 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 }; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 if ((sock = socket(PF_LOCAL, SOCK_STREAM, 0)) < 0) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 err(1, "socket"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 if (setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, &tv, sizeof (tv)) < 0 || |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof (tv)) < 0) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 err(1, "setsockopt"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 if (connect(sock, (const struct sockaddr *)&sockaddr, SUN_LEN(&sockaddr)) < 0) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 err(1, "connect"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 check(void) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
91 /* Ensure we're talking to irccd. */ |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
92 int major, minor, patch; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
93 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
94 if ((sscanf(poll(), "IRCCD %d.%d.%d", &major, &minor, &patch) != 3)) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
95 errx(1, "abort: not irccd instance"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
96 if (verbose) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
97 printf("connected to irccd %d.%d.%d\n", major, minor, patch); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
98 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
99 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
100 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
101 req(const char *fmt, ...) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
102 { |
958
533639ec5e9c
misc: use sys/queue.h
David Demelier <markand@malikania.fr>
parents:
956
diff
changeset
|
103 char buf[IRC_BUF_LEN]; |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
104 va_list ap; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
105 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
106 va_start(ap, fmt); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
107 vsnprintf(buf, sizeof (buf), fmt, ap); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
108 va_end(ap); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
109 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
110 if (strlcat(out, buf, sizeof (out)) >= sizeof (out) || |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
111 strlcat(out, "\n", sizeof (out)) >= sizeof (out)) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
112 errc(1, EMSGSIZE, "abort"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
113 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
114 while (out[0]) { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
115 ssize_t ns, len; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
116 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
117 len = strlen(out); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
118 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
119 if ((ns = send(sock, out, len, MSG_NOSIGNAL)) <= 0) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
120 err(1, "send"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
121 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
122 if (ns >= len) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
123 memset(out, 0, sizeof (out)); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
124 else |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
125 memmove(out, out + ns, sizeof (out) - ns); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
126 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
127 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
128 |
974
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
129 static char * |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
130 ok(void) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
131 { |
974
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
132 char *response = poll(); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
133 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
134 if (strncmp(response, "OK", 2) != 0) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
135 errx(1, "abort: %s", response); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
136 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
137 /* Skip "OK". */ |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
138 response += 2; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
139 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
140 while (*response && isspace(*response)) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
141 response++; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
142 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
143 return response; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
144 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
145 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
146 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
147 show_connect(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
148 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
149 const char *args[2] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
150 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
151 if (irc_util_split(line, args, 2) == 2) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
152 printf("%-16s: %s\n", "event", "onConnect"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
153 printf("%-16s: %s\n", "server", args[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
154 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
155 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
156 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
157 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
158 show_disconnect(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
159 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
160 const char *args[2] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
161 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
162 if (irc_util_split(line, args, 2) == 2) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
163 printf("%-16s: %s\n", "event", "onDisonnect"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
164 printf("%-16s: %s\n", "server", args[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
165 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
166 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
167 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
168 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
169 show_invite(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
170 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
171 const char *args[5] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
172 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
173 if (irc_util_split(line, args, 5) == 5) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
174 printf("%-16s: %s\n", "event", "onInvite"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
175 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
176 printf("%-16s: %s\n", "origin", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
177 printf("%-16s: %s\n", "channel", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
178 printf("%-16s: %s\n", "nickname", args[4]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
179 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
180 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
181 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
182 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
183 show_join(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
184 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
185 const char *args[4] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
186 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
187 if (irc_util_split(line, args, 4) == 4) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
188 printf("%-16s: %s\n", "event", "onJoin"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
189 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
190 printf("%-16s: %s\n", "origin", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
191 printf("%-16s: %s\n", "channel", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
192 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
193 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
194 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
195 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
196 show_kick(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
197 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
198 const char *args[6] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
199 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
200 if (irc_util_split(line, args, 6) >= 5) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
201 printf("%-16s: %s\n", "event", "onKick"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
202 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
203 printf("%-16s: %s\n", "origin", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
204 printf("%-16s: %s\n", "channel", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
205 printf("%-16s: %s\n", "target", args[4]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
206 printf("%-16s: %s\n", "reason", args[5] ? args[5] : ""); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
207 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
208 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
209 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
210 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
211 show_me(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
212 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
213 const char *args[5] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
214 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
215 if (irc_util_split(line, args, 5) == 5) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
216 printf("%-16s: %s\n", "event", "onMe"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
217 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
218 printf("%-16s: %s\n", "origin", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
219 printf("%-16s: %s\n", "channel", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
220 printf("%-16s: %s\n", "message", args[4]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
221 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
222 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
223 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
224 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
225 show_message(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
226 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
227 const char *args[5] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
228 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
229 if (irc_util_split(line, args, 5) == 5) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
230 printf("%-16s: %s\n", "event", "onMessage"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
231 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
232 printf("%-16s: %s\n", "origin", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
233 printf("%-16s: %s\n", "channel", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
234 printf("%-16s: %s\n", "message", args[4]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
235 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
236 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
237 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
238 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
239 show_mode(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
240 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
241 const char *args[8] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
242 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
243 if (irc_util_split(line, args, 8) >= 5) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
244 printf("%-16s: %s\n", "event", "onMode"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
245 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
246 printf("%-16s: %s\n", "origin", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
247 printf("%-16s: %s\n", "channel", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
248 printf("%-16s: %s\n", "mode", args[4]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
249 printf("%-16s: %s\n", "limit", (args[5] ? args[5] : "")); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
250 printf("%-16s: %s\n", "user", (args[6] ? args[6] : "")); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
251 printf("%-16s: %s\n", "mask", (args[7] ? args[7] : "")); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
252 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
253 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
254 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
255 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
256 show_nick(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
257 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
258 const char *args[4] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
259 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
260 if (irc_util_split(line, args, 4) == 4) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
261 printf("%-16s: %s\n", "event", "onNick"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
262 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
263 printf("%-16s: %s\n", "origin", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
264 printf("%-16s: %s\n", "nickname", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
265 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
266 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
267 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
268 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
269 show_notice(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
270 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
271 const char *args[5] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
272 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
273 if (irc_util_split(line, args, 5) == 5) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
274 printf("%-16s: %s\n", "event", "onNotice"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
275 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
276 printf("%-16s: %s\n", "origin", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
277 printf("%-16s: %s\n", "channel", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
278 printf("%-16s: %s\n", "message", args[4]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
279 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
280 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
281 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
282 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
283 show_part(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
284 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
285 const char *args[5] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
286 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
287 if (irc_util_split(line, args, 5) >= 4) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
288 printf("%-16s: %s\n", "event", "onPart"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
289 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
290 printf("%-16s: %s\n", "origin", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
291 printf("%-16s: %s\n", "channel", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
292 printf("%-16s: %s\n", "reason", (args[4] ? args[4] : "")); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
293 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
294 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
295 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
296 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
297 show_topic(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
298 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
299 const char *args[5] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
300 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
301 if (irc_util_split(line, args, 5) >= 4) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
302 printf("%-16s: %s\n", "event", "onTopic"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
303 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
304 printf("%-16s: %s\n", "origin", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
305 printf("%-16s: %s\n", "channel", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
306 printf("%-16s: %s\n", "topic", args[4]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
307 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
308 } |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
309 |
974
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
310 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
311 show_whois(char *line) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
312 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
313 const char *args[6] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
314 //char *p, *token; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
315 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
316 if (irc_util_split(line, args, 6) >= 4) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
317 printf("%-16s: %s\n", "event", "onWhois"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
318 printf("%-16s: %s\n", "server", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
319 printf("%-16s: %s\n", "nickname", args[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
320 printf("%-16s: %s\n", "username", args[3]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
321 printf("%-16s: %s\n", "hostname", args[4]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
322 printf("%-16s: %s\n", "username", args[5]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
323 //printf("channels: %s\n", args[6]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
324 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
325 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
326 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
327 static const struct { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
328 const char *event; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
329 void (*show)(char *); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
330 } watchtable[] = { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
331 { "EVENT-CONNECT", show_connect }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
332 { "EVENT-DISCONNECT", show_disconnect }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
333 { "EVENT-INVITE", show_invite }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
334 { "EVENT-JOIN", show_join }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
335 { "EVENT-KICK", show_kick }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
336 { "EVENT-MESSAGE", show_message }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
337 { "EVENT-ME", show_me }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
338 { "EVENT-MODE", show_mode }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
339 { "EVENT-NICK", show_nick }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
340 { "EVENT-NOTICE", show_notice }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
341 { "EVENT-PART", show_part }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
342 { "EVENT-TOPIC", show_topic }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
343 { "EVENT-WHOIS", show_whois } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
344 }; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
345 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
346 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
347 show(char *ev) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
348 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
349 for (size_t i = 0; i < IRC_UTIL_SIZE(watchtable); ++i) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
350 if (strncmp(watchtable[i].event, ev, strlen(watchtable[i].event)) == 0) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
351 watchtable[i].show(ev); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
352 printf("\n"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
353 break; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
354 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
355 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
356 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
357 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
358 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
359 plugin_list_set(int argc, char **argv, const char *cmd) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
360 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
361 char *line, *p; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
362 size_t num = 0; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
363 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
364 if (argc == 3) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
365 req("%s %s %s %s", cmd, argv[0], argv[1], argv[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
366 ok(); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
367 return; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
368 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
369 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
370 if (argc == 2) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
371 req("%s %s %s", cmd, argv[0], argv[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
372 else |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
373 req("%s %s", cmd, argv[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
374 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
375 if (sscanf(line = ok(), "%zu", &num) != 1) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
376 errx(1, "could not retrieve list"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
377 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
378 if (argc == 2) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
379 puts(poll()); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
380 else { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
381 while (num-- != 0 && (line = poll())) { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
382 if (!(p = strchr(line, '='))) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
383 continue; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
384 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
385 *p = '\0'; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
386 printf("%-16s: %s\n", line, p + 1); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
387 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
388 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
389 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
390 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
391 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
392 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
393 cmd_plugin_config(int argc, char **argv) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
394 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
395 return plugin_list_set(argc, argv, "PLUGIN-CONFIG"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
396 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
397 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
398 /* |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
399 * Response: |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
400 * |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
401 * OK name |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
402 * summary |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
403 * version |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
404 * license |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
405 * author |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
406 */ |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
407 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
408 cmd_plugin_info(int argc, char **argv) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
409 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
410 (void)argc; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
411 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
412 const char *response; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
413 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
414 req("PLUGIN-INFO %s", argv[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
415 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
416 if (strncmp((response = poll()), "OK ", 3) != 0) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
417 errx(1, "failed to retrieve plugin information"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
418 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
419 printf("%-16s: %s\n", "name", response + 3); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
420 printf("%-16s: %s\n", "summary", poll()); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
421 printf("%-16s: %s\n", "version", poll()); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
422 printf("%-16s: %s\n", "license", poll()); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
423 printf("%-16s: %s\n", "author", poll()); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
424 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
425 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
426 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
427 cmd_plugin_list(int argc, char **argv) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
428 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
429 (void)argc; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
430 (void)argv; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
431 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
432 char *list; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
433 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
434 req("PLUGIN-LIST"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
435 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
436 if (strncmp(list = poll(), "OK ", 3) != 0) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
437 errx(1, "failed to retrieve plugin list"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
438 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
439 list += 3; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
440 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
441 for (char *p; (p = strchr(list, ' ')); ) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
442 *p = '\n'; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
443 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
444 puts(list); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
445 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
446 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
447 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
448 cmd_plugin_load(int argc, char **argv) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
449 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
450 (void)argc; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
451 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
452 req("PLUGIN-LOAD %s", argv[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
453 ok(); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
454 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
455 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
456 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
457 cmd_plugin_path(int argc, char **argv) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
458 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
459 return plugin_list_set(argc, argv, "PLUGIN-PATH"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
460 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
461 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
462 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
463 cmd_plugin_reload(int argc, char **argv) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
464 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
465 if (argc == 1) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
466 req("PLUGIN-RELOAD %s", argv[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
467 else |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
468 req("PLUGIN-RELOAD"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
469 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
470 ok(); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
471 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
472 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
473 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
474 cmd_plugin_template(int argc, char **argv) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
475 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
476 return plugin_list_set(argc, argv, "PLUGIN-TEMPLATE"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
477 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
478 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
479 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
480 cmd_plugin_unload(int argc, char **argv) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
481 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
482 if (argc == 1) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
483 req("PLUGIN-UNLOAD %s", argv[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
484 else |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
485 req("PLUGIN-UNLOAD"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
486 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
487 ok(); |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
488 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
489 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
490 static void |
947
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
491 cmd_server_disconnect(int argc, char **argv) |
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
492 { |
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
493 if (argc == 1) |
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
494 req("SERVER-DISCONNECT %s", argv[0]); |
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
495 else |
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
496 req("SERVER-DISCONNECT"); |
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
497 |
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
498 ok(); |
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
499 } |
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
500 |
974
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
501 /* |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
502 * Response: |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
503 * |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
504 * OK name |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
505 * hostname port [ssl] |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
506 * nickname username realname |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
507 * chan1 chan2 chanN |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
508 */ |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
509 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
510 cmd_server_info(int argc, char **argv) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
511 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
512 (void)argc; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
513 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
514 char *list; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
515 const char *args[16] = {0}; |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
516 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
517 req("SERVER-INFO %s", argv[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
518 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
519 if (strncmp(list = poll(), "OK ", 3) != 0) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
520 errx(1, "failed to retrieve server information"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
521 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
522 printf("%-16s: %s\n", "name", list + 3); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
523 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
524 if (irc_util_split((list = poll()), args, 3) < 2) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
525 errx(1, "malformed server connection"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
526 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
527 printf("%-16s: %s\n", "hostname", args[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
528 printf("%-16s: %s\n", "port", args[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
529 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
530 if (args[2]) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
531 printf("%-16s: %s\n", "ssl", "true"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
532 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
533 if (irc_util_split((list = poll()), args, 3) != 3) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
534 errx(1, "malformed server ident"); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
535 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
536 printf("%-16s: %s\n", "nickname", args[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
537 printf("%-16s: %s\n", "username", args[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
538 printf("%-16s: %s\n", "realname", args[0]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
539 printf("%-16s: %s\n", "channels", poll()); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
540 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
541 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
542 static void |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
543 cmd_server_join(int argc, char **argv) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
544 { |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
545 if (argc >= 3) |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
546 req("SERVER-JOIN %s %s %s", argv[0], argv[1], argv[2]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
547 else |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
548 req("SERVER-JOIN %s %s", argv[0], argv[1]); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
549 |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
550 ok(); |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
551 } |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
552 |
947
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
553 static void |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
554 cmd_server_list(int argc, char **argv) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
555 { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
556 (void)argc; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
557 (void)argv; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
558 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
559 char *list; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
560 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
561 req("SERVER-LIST"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
562 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
563 if (strncmp(list = poll(), "OK ", 3) != 0) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
564 errx(1, "failed to retrieve server list"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
565 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
566 /* Skip "OK " */ |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
567 list += 3; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
568 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
569 /* Since list is separated by spaces, just convert them to \n */ |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
570 for (char *p; (p = strchr(list, ' ')); ) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
571 *p = '\n'; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
572 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
573 puts(list); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
574 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
575 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
576 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
577 cmd_server_message(int argc, char **argv) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
578 { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
579 (void)argc; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
580 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
581 req("SERVER-MESSAGE %s %s %s", argv[0], argv[1], argv[2]); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
582 ok(); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
583 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
584 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
585 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
586 cmd_server_me(int argc, char **argv) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
587 { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
588 (void)argc; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
589 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
590 req("SERVER-ME %s %s %s", argv[0], argv[1], argv[2]); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
591 ok(); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
592 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
593 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
594 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
595 cmd_server_mode(int argc, char **argv) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
596 { |
950
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
597 (void)argc; |
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
598 (void)argv; |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
599 #if 0 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
600 req("MODE %s %s %s%c%s%c%s%c%s", argv[0], argv[1], argv[2], |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
601 argc >= 4 ? ' ', argv[3] : "", |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
602 argc >= 5 ? ' ', argv[4] : "", |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
603 argc >= 6 ? ' ', argv[5] : ""); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
604 ok(); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
605 #endif |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
606 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
607 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
608 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
609 cmd_server_nick(int argc, char **argv) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
610 { |
950
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
611 (void)argc; |
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
612 |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
613 req("SERVER-NICK %s %s", argv[0], argv[1]); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
614 ok(); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
615 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
616 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
617 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
618 cmd_server_notice(int argc, char **argv) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
619 { |
950
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
620 (void)argc; |
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
621 |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
622 req("SERVER-NOTICE %s %s %s", argv[0], argv[1], argv[2]); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
623 ok(); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
624 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
625 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
626 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
627 cmd_server_part(int argc, char **argv) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
628 { |
950
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
629 (void)argc; |
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
630 |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
631 /* Let's advertise irccd a bit. */ |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
632 req("SERVER-PART %s %s %s", argv[0], argv[1], |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
633 argc >= 3 ? argv[2] : "irccd is shutting down"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
634 ok(); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
635 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
636 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
637 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
638 cmd_server_topic(int argc, char **argv) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
639 { |
950
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
640 (void)argc; |
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
641 |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
642 req("SERVER-TOPIC %s %s %s", argv[0], argv[1], argv[2]); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
643 ok(); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
644 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
645 |
953
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
646 static void |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
647 cmd_watch(int argc, char **argv) |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
648 { |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
649 (void)argc; |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
650 (void)argv; |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
651 |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
652 struct timeval tv = {0}; |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
653 char *ev; |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
654 |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
655 /* Enable watch. */ |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
656 req("WATCH"); |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
657 ok(); |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
658 |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
659 /* Turn off timeout to receive indefinitely. */ |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
660 if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof (tv)) < 0) |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
661 err(1, "setsockopt"); |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
662 |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
663 while ((ev = poll())) |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
664 show(ev); |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
665 } |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
666 |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
667 static const struct cmd { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
668 const char *name; |
950
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
669 int minargs; |
9fcb0038fe0a
irccd: bring SSL support back
David Demelier <markand@malikania.fr>
parents:
947
diff
changeset
|
670 int maxargs; |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
671 void (*exec)(int, char **); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
672 } cmds[] = { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
673 /* name min max exec */ |
974
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
674 { "plugin-config", 1, 3, cmd_plugin_config }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
675 { "plugin-info", 1, 1, cmd_plugin_info }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
676 { "plugin-list", 0, 0, cmd_plugin_list }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
677 { "plugin-load", 1, 1, cmd_plugin_load }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
678 { "plugin-path", 0, 3, cmd_plugin_path }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
679 { "plugin-reload", 0, 1, cmd_plugin_reload }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
680 { "plugin-template", 1, 3, cmd_plugin_template }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
681 { "plugin-unload", 0, 1, cmd_plugin_unload }, |
947
95201fd9ad88
irccd: servers are now linked lists
David Demelier <markand@malikania.fr>
parents:
941
diff
changeset
|
682 { "server-disconnect", 0, 1, cmd_server_disconnect }, |
974
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
683 { "server-info", 1, 1, cmd_server_info }, |
342fb90f2512
irccdctl: re-implement many of the plugin-* commands
David Demelier <markand@malikania.fr>
parents:
971
diff
changeset
|
684 { "server-join", 2, 3, cmd_server_join }, |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
685 { "server-list", 0, 0, cmd_server_list }, |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
686 { "server-me", 3, 3, cmd_server_me }, |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
687 { "server-message", 3, 3, cmd_server_message }, |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
688 { "server-mode", 3, 6, cmd_server_mode }, |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
689 { "server-nick", 2, 2, cmd_server_nick }, |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
690 { "server-notice", 3, 3, cmd_server_notice }, |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
691 { "server-part", 3, 3, cmd_server_part }, |
953
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
692 { "server-topic", 3, 3, cmd_server_topic }, |
ab43ba409f9d
irccd: add SSL, and cleanup events
David Demelier <markand@malikania.fr>
parents:
950
diff
changeset
|
693 { "watch", 0, 0, cmd_watch } |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
694 }; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
695 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
696 static int |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
697 cmp_cmd(const void *d1, const void *d2) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
698 { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
699 return strcmp(d1, ((const struct cmd *)d2)->name); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
700 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
701 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
702 static const struct cmd * |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
703 find_cmd(const char *name) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
704 { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
705 return bsearch(name, cmds, IRC_UTIL_SIZE(cmds), sizeof (cmds[0]), cmp_cmd); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
706 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
707 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
708 static void |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
709 run(int argc, char **argv) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
710 { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
711 const struct cmd *c; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
712 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
713 if (!(c = find_cmd(argv[0]))) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
714 errx(1, "abort: command not found"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
715 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
716 --argc; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
717 ++argv; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
718 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
719 if (argc < c->minargs || argc > c->maxargs) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
720 errx(1, "abort: invalid number of arguments"); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
721 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
722 c->exec(argc, argv); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
723 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
724 |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
969
diff
changeset
|
725 noreturn static void |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
726 usage(void) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
727 { |
969
d7501067de95
extern: add (set|get)progname polyfills
David Demelier <markand@malikania.fr>
parents:
960
diff
changeset
|
728 fprintf(stderr, "usage: %s [-v] [-s sock] command [arguments...]\n", getprogname()); |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
729 exit(1); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
730 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
731 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
732 int |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
733 main(int argc, char **argv) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
734 { |
969
d7501067de95
extern: add (set|get)progname polyfills
David Demelier <markand@malikania.fr>
parents:
960
diff
changeset
|
735 setprogname("irccdctl"); |
d7501067de95
extern: add (set|get)progname polyfills
David Demelier <markand@malikania.fr>
parents:
960
diff
changeset
|
736 |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
737 for (int ch; (ch = getopt(argc, argv, "s:v")) != -1; ) { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
738 switch (ch) { |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
739 case 's': |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
740 strlcpy(sockaddr.sun_path, optarg, sizeof (sockaddr.sun_path)); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
741 break; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
742 case 'v': |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
969
diff
changeset
|
743 verbose = 1; |
941
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
744 break; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
745 default: |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
746 break; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
747 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
748 } |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
749 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
750 argc -= optind; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
751 argv += optind; |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
752 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
753 if (argc < 1) |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
754 usage(); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
755 |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
756 dial(); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
757 check(); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
758 run(argc, argv); |
e43ccb1f0ace
irccdctl: add basics commands
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
759 } |