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, fixes, 7|-|>< ;) etc.
     17  Copyright \(co 2005-2006 by Anselm R. Garbe <garbeam (at) gmail (dot) com> and 
     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 : nick);
     58  	else snprintf(message, PIPE_BUF, "NICK %s\r\nUSER %s localhost %s :%s\r\n",
     59  				nick, nick, host, fullname ? fullname : nick);
     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 delim) {
     89 @@ -219,7 +195,7 @@ static void proc_channels_privmsg(char *channel, char *buf) {
     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 *buf) {
     99  			else
    100  				snprintf(message, PIPE_BUF,
    101  						"PART %s :ii - 500 SLOC are too much\r\n", c->name);
    102 -			write(irc, message, strlen(message));
    103 +			write(WRITE_FD, message, strlen(message));
    104  			close(c->fd);
    105  			/*create_filepath(infile, sizeof(infile), c->name, "in");
    106  			unlink(infile); */
    107 @@ -288,7 +264,7 @@ static void proc_channels_input(Channel *c, char *buf) {
    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_TEXT]);
    120 -		write(irc, message, strlen(message));
    121 +		write(WRITE_FD, message, strlen(message));
    122  		return;
    123  	} else if(!argv[TOK_NICKSRV] || !argv[TOK_USER]) {	/* server command */
    124  		snprintf(message, PIPE_BUF, "%s%s", argv[TOK_ARG] ? argv[TOK_ARG] : "", argv[TOK_TEXT] ? argv[TOK_TEXT] : "");
    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: ping timeout");
    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);