ii-1.7-ucspi.diff - sites - public wiki contents of suckless.org | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
ii-1.7-ucspi.diff (5161B) | |
--- | |
1 diff --git a/ii.1 b/ii.1 | |
2 index dd1f6e3..c293c37 100644 | |
3 --- a/ii.1 | |
4 +++ b/ii.1 | |
5 @@ -20,6 +20,10 @@ server with basic command line tools. | |
6 For example if you will join a channel just do echo "/j #channel" > in | |
7 and ii creates a new channel directory with in and out file. | |
8 .SH SYNOPSIS | |
9 +.B tcpclient | |
10 +host | |
11 +port | |
12 +.RB [ tlsc ] | |
13 .B ii | |
14 .RB [ \-s | |
15 .IR servername ] | |
16 @@ -93,5 +97,7 @@ Write to ii (at) modprobe (dot) de for suggestions, fi… | |
17 Copyright \(co 2005-2006 by Anselm R. Garbe <garbeam (at) gmail (dot) c… | |
18 Copyright \(co 2005-2008 by Nico Golde <nico (at) ngolde (dot) de> | |
19 .SH SEE ALSO | |
20 +.BR tcpclient(1), | |
21 +.BR tlsc(1), | |
22 .BR echo (1), | |
23 .BR tail (1), | |
24 diff --git a/ii.c b/ii.c | |
25 index d93266c..5305869 100644 | |
26 --- a/ii.c | |
27 +++ b/ii.c | |
28 @@ -5,9 +5,7 @@ | |
29 #include <netdb.h> | |
30 #include <sys/types.h> | |
31 #include <sys/stat.h> | |
32 -#include <sys/socket.h> | |
33 #include <sys/select.h> | |
34 -#include <netinet/in.h> | |
35 #include <stdio.h> | |
36 #include <stdlib.h> | |
37 #include <limits.h> | |
38 @@ -19,6 +17,9 @@ | |
39 #include <time.h> | |
40 #include <unistd.h> | |
41 | |
42 +#define READ_FD 6 | |
43 +#define WRITE_FD 7 | |
44 + | |
45 #ifndef PIPE_BUF /* FreeBSD don't know PIPE_BUF */ | |
46 #define PIPE_BUF 4096 | |
47 #endif | |
48 @@ -33,7 +34,6 @@ struct Channel { | |
49 Channel *next; | |
50 }; | |
51 | |
52 -static int irc; | |
53 static time_t last_response; | |
54 static Channel *channels = NULL; | |
55 static char *host = "irc.freenode.net"; | |
56 @@ -148,31 +148,7 @@ static void login(char *key, char *fullname) { | |
57 nick, nick, host, fullname ? fullname :… | |
58 else snprintf(message, PIPE_BUF, "NICK %s\r\nUSER %s localhost … | |
59 nick, nick, host, fullname ? fullname :… | |
60 - write(irc, message, strlen(message)); /* login */ | |
61 -} | |
62 - | |
63 -static int tcpopen(unsigned short port) { | |
64 - int fd; | |
65 - struct sockaddr_in sin; | |
66 - struct hostent *hp = gethostbyname(host); | |
67 - | |
68 - memset(&sin, 0, sizeof(struct sockaddr_in)); | |
69 - if(!hp) { | |
70 - perror("ii: cannot retrieve host information"); | |
71 - exit(EXIT_FAILURE); | |
72 - } | |
73 - sin.sin_family = AF_INET; | |
74 - memcpy(&sin.sin_addr, hp->h_addr, hp->h_length); | |
75 - sin.sin_port = htons(port); | |
76 - if((fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { | |
77 - perror("ii: cannot create socket"); | |
78 - exit(EXIT_FAILURE); | |
79 - } | |
80 - if(connect(fd, (const struct sockaddr *) &sin, sizeof(sin)) < 0… | |
81 - perror("ii: cannot connect to host"); | |
82 - exit(EXIT_FAILURE); | |
83 - } | |
84 - return fd; | |
85 + write(WRITE_FD, message, strlen(message)); /* login */ | |
86 } | |
87 | |
88 static size_t tokenize(char **result, size_t reslen, char *str, char de… | |
89 @@ -219,7 +195,7 @@ static void proc_channels_privmsg(char *channel, cha… | |
90 snprintf(message, PIPE_BUF, "<%s> %s", nick, buf); | |
91 print_out(channel, message); | |
92 snprintf(message, PIPE_BUF, "PRIVMSG %s :%s\r\n", channel, buf); | |
93 - write(irc, message, strlen(message)); | |
94 + write(WRITE_FD, message, strlen(message)); | |
95 } | |
96 | |
97 static void proc_channels_input(Channel *c, char *buf) { | |
98 @@ -273,7 +249,7 @@ static void proc_channels_input(Channel *c, char *bu… | |
99 else | |
100 snprintf(message, PIPE_BUF, | |
101 "PART %s :ii - 500 SLOC… | |
102 - write(irc, message, strlen(message)); | |
103 + write(WRITE_FD, message, strlen(message)); | |
104 close(c->fd); | |
105 /*create_filepath(infile, sizeof(infile), c->na… | |
106 unlink(infile); */ | |
107 @@ -288,7 +264,7 @@ static void proc_channels_input(Channel *c, char *bu… | |
108 snprintf(message, PIPE_BUF, "%s\r\n", &buf[1]); | |
109 | |
110 if (message[0] != '\0') | |
111 - write(irc, message, strlen(message)); | |
112 + write(WRITE_FD, message, strlen(message)); | |
113 } | |
114 | |
115 static void proc_server_cmd(char *buf) { | |
116 @@ -339,7 +315,7 @@ static void proc_server_cmd(char *buf) { | |
117 return; | |
118 } else if(!strncmp("PING", argv[TOK_CMD], 5)) { | |
119 snprintf(message, PIPE_BUF, "PONG %s\r\n", argv[TOK_TEX… | |
120 - write(irc, message, strlen(message)); | |
121 + write(WRITE_FD, message, strlen(message)); | |
122 return; | |
123 } else if(!argv[TOK_NICKSRV] || !argv[TOK_USER]) { /* se… | |
124 snprintf(message, PIPE_BUF, "%s%s", argv[TOK_ARG] ? arg… | |
125 @@ -402,7 +378,7 @@ static void handle_channels_input(Channel *c) { | |
126 | |
127 static void handle_server_output() { | |
128 static char buf[PIPE_BUF]; | |
129 - if(read_line(irc, PIPE_BUF, buf) == -1) { | |
130 + if(read_line(READ_FD, PIPE_BUF, buf) == -1) { | |
131 perror("ii: remote host closed connection"); | |
132 exit(EXIT_FAILURE); | |
133 } | |
134 @@ -419,8 +395,8 @@ static void run() { | |
135 snprintf(ping_msg, sizeof(ping_msg), "PING %s\r\n", host); | |
136 for(;;) { | |
137 FD_ZERO(&rd); | |
138 - maxfd = irc; | |
139 - FD_SET(irc, &rd); | |
140 + maxfd = READ_FD; | |
141 + FD_SET(READ_FD, &rd); | |
142 for(c = channels; c; c = c->next) { | |
143 if(maxfd < c->fd) | |
144 maxfd = c->fd; | |
145 @@ -440,10 +416,10 @@ static void run() { | |
146 print_out(NULL, "-!- ii shutting down: … | |
147 exit(EXIT_FAILURE); | |
148 } | |
149 - write(irc, ping_msg, strlen(ping_msg)); | |
150 + write(WRITE_FD, ping_msg, strlen(ping_msg)); | |
151 continue; | |
152 } | |
153 - if(FD_ISSET(irc, &rd)) { | |
154 + if(FD_ISSET(READ_FD, &rd)) { | |
155 handle_server_output(); | |
156 last_response = time(NULL); | |
157 } | |
158 @@ -479,7 +455,6 @@ int main(int argc, char *argv[]) { | |
159 default: usage(); break; | |
160 } | |
161 } | |
162 - irc = tcpopen(port); | |
163 if(!snprintf(path, sizeof(path), "%s/%s", prefix, host)) { | |
164 fputs("ii: path to irc directory too long\n", stderr); | |
165 exit(EXIT_FAILURE); |