istyle change - irc - Unnamed repository; edit this file 'description' to name the repository. Err vernunftzentrum.de 70 hgit clone git://vernunftzentrum.de/irc.git URL:git://vernunftzentrum.de/irc.git vernunftzentrum.de 70 1Log /ckeen/repos/irc/log.gph vernunftzentrum.de 70 1Files /ckeen/repos/irc/files.gph vernunftzentrum.de 70 1Refs /ckeen/repos/irc/refs.gph vernunftzentrum.de 70 1README /ckeen/repos/irc/file/README.gph vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1commit fea5b2171f559a5aac7b38773659eca26064562d /ckeen/repos/irc/commit/fea5b2171f559a5aac7b38773659eca26064562d.gph vernunftzentrum.de 70 1parent 35d40adb208fd0c8ded353fb80b202d5f6f0b77e /ckeen/repos/irc/commit/35d40adb208fd0c8ded353fb80b202d5f6f0b77e.gph vernunftzentrum.de 70 hAuthor: Quentin Carbonneaux URL:mailto:quentin.carbonneaux@yale.edu vernunftzentrum.de 70 iDate: Tue, 3 May 2016 21:31:50 -0400 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 istyle change Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i irc.c | 501 +++++++++++++++++-------------- Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i1 file changed, 282 insertions(+), 219 deletions(-) Err vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1diff --git a/irc.c b/irc.c /ckeen/repos/irc/file/irc.c.gph vernunftzentrum.de 70 i@@ -23,34 +23,42 @@ Err vernunftzentrum.de 70 i #undef CTRL Err vernunftzentrum.de 70 i #define CTRL(x) (x & 037) Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i-#define SCROLL 15 Err vernunftzentrum.de 70 i-#define INDENT 23 Err vernunftzentrum.de 70 i-#define DATEFMT "%H:%M" Err vernunftzentrum.de 70 i-#define PFMT " %-12s < %s" Err vernunftzentrum.de 70 i+#define SCROLL 15 Err vernunftzentrum.de 70 i+#define INDENT 23 Err vernunftzentrum.de 70 i+#define DATEFMT "%H:%M" Err vernunftzentrum.de 70 i+#define PFMT " %-12s < %s" Err vernunftzentrum.de 70 i #define PFMTHIGH "> %-12s < %s" Err vernunftzentrum.de 70 i-#define SRV "irc.oftc.net" Err vernunftzentrum.de 70 i-#define PORT 6667 Err vernunftzentrum.de 70 i+#define SRV "irc.oftc.net" Err vernunftzentrum.de 70 i+#define PORT 6667 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i-enum { ChanLen = 64, LineLen = 512, MaxChans = 16, BufSz = 2048, LogSz = 4096 }; Err vernunftzentrum.de 70 i+enum { Err vernunftzentrum.de 70 i+ ChanLen = 64, Err vernunftzentrum.de 70 i+ LineLen = 512, Err vernunftzentrum.de 70 i+ MaxChans = 16, Err vernunftzentrum.de 70 i+ BufSz = 2048, Err vernunftzentrum.de 70 i+ LogSz = 4096 Err vernunftzentrum.de 70 i+}; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i-char nick[64]; Err vernunftzentrum.de 70 i-int quit, winchg; Err vernunftzentrum.de 70 i-int sfd; /* Server file descriptor. */ Err vernunftzentrum.de 70 i struct { Err vernunftzentrum.de 70 i int x; Err vernunftzentrum.de 70 i int y; Err vernunftzentrum.de 70 i WINDOW *sw, *mw, *iw; Err vernunftzentrum.de 70 i-} scr; /* Screen relative data. */ Err vernunftzentrum.de 70 i+} scr; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i struct Chan { Err vernunftzentrum.de 70 i char name[ChanLen]; Err vernunftzentrum.de 70 i char *buf, *eol; Err vernunftzentrum.de 70 i- int n; /* Scroll offset. */ Err vernunftzentrum.de 70 i- size_t sz; /* size of buf. */ Err vernunftzentrum.de 70 i+ int n; /* Scroll offset. */ Err vernunftzentrum.de 70 i+ size_t sz; /* Size of buf. */ Err vernunftzentrum.de 70 i char high; /* Nick highlight. */ Err vernunftzentrum.de 70 i- char new; /* New message. */ Err vernunftzentrum.de 70 i+ char new; /* New message. */ Err vernunftzentrum.de 70 i } chl[MaxChans]; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+char nick[64]; Err vernunftzentrum.de 70 i+int quit, winchg; Err vernunftzentrum.de 70 i+int sfd; /* Server file descriptor. */ Err vernunftzentrum.de 70 i int nch, ch; /* Current number of channels, and current channel. */ Err vernunftzentrum.de 70 i-char outb[BufSz], *outp=outb; /* Output buffer. */ Err vernunftzentrum.de 70 i+char outb[BufSz], *outp = outb; /* Output buffer. */ Err vernunftzentrum.de 70 i static FILE *logfp; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i static void scmd(char *, char *, char *, char *); Err vernunftzentrum.de 70 i@@ -70,13 +78,14 @@ static void Err vernunftzentrum.de 70 i sndf(const char *fmt, ...) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i va_list vl; Err vernunftzentrum.de 70 i- size_t n, l=BufSz-(outp-outb); Err vernunftzentrum.de 70 i+ size_t n, l = BufSz - (outp - outb); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if (l<2) return; Err vernunftzentrum.de 70 i+ if (l < 2) Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i va_start(vl, fmt); Err vernunftzentrum.de 70 i- n=vsnprintf(outp, l-2, fmt, vl); Err vernunftzentrum.de 70 i+ n = vsnprintf(outp, l - 2, fmt, vl); Err vernunftzentrum.de 70 i va_end(vl); Err vernunftzentrum.de 70 i- outp += n>l-2 ? l-2 : n; Err vernunftzentrum.de 70 i+ outp += n > l - 2 ? l - 2 : n; Err vernunftzentrum.de 70 i *outp++ = '\r'; Err vernunftzentrum.de 70 i *outp++ = '\n'; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i@@ -84,40 +93,45 @@ sndf(const char *fmt, ...) Err vernunftzentrum.de 70 i static int Err vernunftzentrum.de 70 i srd(void) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- static char l[BufSz], *p=l; Err vernunftzentrum.de 70 i+ static char l[BufSz], *p = l; Err vernunftzentrum.de 70 i char *s, *usr, *cmd, *par, *data; Err vernunftzentrum.de 70 i int rd; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if (p-l>=BufSz) p=l; /* Input buffer overflow, there should something better to do. */ Err vernunftzentrum.de 70 i- rd=read(sfd, p, BufSz-(p-l)); Err vernunftzentrum.de 70 i- if (rd<0) { Err vernunftzentrum.de 70 i- if (errno==EINTR) return 1; Err vernunftzentrum.de 70 i+ if (p - l >= BufSz) Err vernunftzentrum.de 70 i+ p = l; /* Input buffer overflow, there should something better to do. */ Err vernunftzentrum.de 70 i+ rd = read(sfd, p, BufSz - (p - l)); Err vernunftzentrum.de 70 i+ if (rd < 0) { Err vernunftzentrum.de 70 i+ if (errno == EINTR) Err vernunftzentrum.de 70 i+ return 1; Err vernunftzentrum.de 70 i panic("IO error while reading."); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i- if (rd==0) return 0; Err vernunftzentrum.de 70 i- p+=rd; Err vernunftzentrum.de 70 i+ if (rd == 0) Err vernunftzentrum.de 70 i+ return 0; Err vernunftzentrum.de 70 i+ p += rd; Err vernunftzentrum.de 70 i for (;;) { /* Cycle on all received lines. */ Err vernunftzentrum.de 70 i- if (!(s=memchr(l, '\n', p-l))) Err vernunftzentrum.de 70 i+ if (!(s = memchr(l, '\n', p - l))) Err vernunftzentrum.de 70 i return 1; Err vernunftzentrum.de 70 i- if (s>l && s[-1]=='\r') Err vernunftzentrum.de 70 i- s[-1]=0; Err vernunftzentrum.de 70 i+ if (s > l && s[-1] == '\r') Err vernunftzentrum.de 70 i+ s[-1] = 0; Err vernunftzentrum.de 70 i *s++ = 0; Err vernunftzentrum.de 70 i- if (*l==':') { Err vernunftzentrum.de 70 i- if (!(cmd=strchr(l, ' '))) goto lskip; Err vernunftzentrum.de 70 i+ if (*l == ':') { Err vernunftzentrum.de 70 i+ if (!(cmd = strchr(l, ' '))) Err vernunftzentrum.de 70 i+ goto lskip; Err vernunftzentrum.de 70 i *cmd++ = 0; Err vernunftzentrum.de 70 i- usr = l+1; Err vernunftzentrum.de 70 i+ usr = l + 1; Err vernunftzentrum.de 70 i } else { Err vernunftzentrum.de 70 i usr = 0; Err vernunftzentrum.de 70 i cmd = l; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i- if (!(par=strchr(cmd, ' '))) goto lskip; Err vernunftzentrum.de 70 i+ if (!(par = strchr(cmd, ' '))) Err vernunftzentrum.de 70 i+ goto lskip; Err vernunftzentrum.de 70 i *par++ = 0; Err vernunftzentrum.de 70 i- if ((data=strchr(par, ':'))) Err vernunftzentrum.de 70 i+ if ((data = strchr(par, ':'))) Err vernunftzentrum.de 70 i *data++ = 0; Err vernunftzentrum.de 70 i scmd(usr, cmd, par, data); Err vernunftzentrum.de 70 i lskip: Err vernunftzentrum.de 70 i- memmove(l, s, p-s); Err vernunftzentrum.de 70 i- p-=s-l; Err vernunftzentrum.de 70 i+ memmove(l, s, p - s); Err vernunftzentrum.de 70 i+ p -= s - l; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i@@ -136,9 +150,9 @@ dial(const char *host, short port) Err vernunftzentrum.de 70 i sin.sin_port = htons(port); Err vernunftzentrum.de 70 i freeaddrinfo(ai); Err vernunftzentrum.de 70 i f = socket(AF_INET, SOCK_STREAM, 0); Err vernunftzentrum.de 70 i- if (f<0) Err vernunftzentrum.de 70 i+ if (f < 0) Err vernunftzentrum.de 70 i panic("Cannot create socket."); Err vernunftzentrum.de 70 i- if (connect(f, (struct sockaddr *)&sin, sizeof sin)<0) Err vernunftzentrum.de 70 i+ if (connect(f, (struct sockaddr *)&sin, sizeof sin) < 0) Err vernunftzentrum.de 70 i panic("Cannot connect to host."); Err vernunftzentrum.de 70 i return f; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i@@ -146,16 +160,16 @@ dial(const char *host, short port) Err vernunftzentrum.de 70 i static int Err vernunftzentrum.de 70 i chadd(char *name) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- if (nch>=MaxChans || strlen(name)>=ChanLen) Err vernunftzentrum.de 70 i+ if (nch >= MaxChans || strlen(name) >= ChanLen) Err vernunftzentrum.de 70 i return -1; Err vernunftzentrum.de 70 i strcpy(chl[nch].name, name); Err vernunftzentrum.de 70 i- chl[nch].sz=LogSz; Err vernunftzentrum.de 70 i- chl[nch].buf=malloc(LogSz); Err vernunftzentrum.de 70 i+ chl[nch].sz = LogSz; Err vernunftzentrum.de 70 i+ chl[nch].buf = malloc(LogSz); Err vernunftzentrum.de 70 i if (!chl[nch].buf) Err vernunftzentrum.de 70 i panic("Out of memory."); Err vernunftzentrum.de 70 i- chl[nch].eol=chl[nch].buf; Err vernunftzentrum.de 70 i- chl[nch].n=0; Err vernunftzentrum.de 70 i- ch=nch++; Err vernunftzentrum.de 70 i+ chl[nch].eol = chl[nch].buf; Err vernunftzentrum.de 70 i+ chl[nch].n = 0; Err vernunftzentrum.de 70 i+ ch = nch++; Err vernunftzentrum.de 70 i tdrawbar(); Err vernunftzentrum.de 70 i return nch; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i@@ -166,7 +180,7 @@ chfind(char *name) Err vernunftzentrum.de 70 i int i; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i assert(name); Err vernunftzentrum.de 70 i- for (i=nch-1; i>0; i--) Err vernunftzentrum.de 70 i+ for (i = nch - 1; i > 0; i--) Err vernunftzentrum.de 70 i if (!strcmp(chl[i].name, name)) Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i return i; Err vernunftzentrum.de 70 i@@ -177,11 +191,12 @@ chdel(char *name) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i int n; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if (!(n=chfind(name))) return 0; Err vernunftzentrum.de 70 i+ if (!(n = chfind(name))) Err vernunftzentrum.de 70 i+ return 0; Err vernunftzentrum.de 70 i nch--; Err vernunftzentrum.de 70 i free(chl[n].buf); Err vernunftzentrum.de 70 i- memmove(&chl[n], &chl[n+1], (nch-n)*sizeof(struct Chan)); Err vernunftzentrum.de 70 i- ch=nch-1; Err vernunftzentrum.de 70 i+ memmove(&chl[n], &chl[n + 1], (nch - n) * sizeof(struct Chan)); Err vernunftzentrum.de 70 i+ ch = nch - 1; Err vernunftzentrum.de 70 i tdrawbar(); Err vernunftzentrum.de 70 i return 1; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i@@ -192,19 +207,22 @@ pushl(char *p, char *e) Err vernunftzentrum.de 70 i int x; Err vernunftzentrum.de 70 i char *w; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if ((w=memchr(p, '\n', e-p))) e=w+1; Err vernunftzentrum.de 70 i- for (w=p, x=0;; p++, x++) { Err vernunftzentrum.de 70 i- if (x>=scr.x) { Err vernunftzentrum.de 70 i+ if ((w = memchr(p, '\n', e - p))) Err vernunftzentrum.de 70 i+ e = w + 1; Err vernunftzentrum.de 70 i+ for (w = p, x = 0;; p++, x++) { Err vernunftzentrum.de 70 i+ if (x >= scr.x) { Err vernunftzentrum.de 70 i waddch(scr.mw, '\n'); Err vernunftzentrum.de 70 i- for (x=0; x=e || *p==' ' || p-w+INDENT>=scr.x-1) { Err vernunftzentrum.de 70 i- for (; w= e || *p == ' ' || p - w + INDENT >= scr.x - 1) { Err vernunftzentrum.de 70 i+ for (; w < p; w++) Err vernunftzentrum.de 70 i waddch(scr.mw, *w); Err vernunftzentrum.de 70 i- if (p>=e) return e; Err vernunftzentrum.de 70 i+ if (p >= e) Err vernunftzentrum.de 70 i+ return e; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i@@ -212,47 +230,51 @@ pushl(char *p, char *e) Err vernunftzentrum.de 70 i static void Err vernunftzentrum.de 70 i pushf(int cn, const char *fmt, ...) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- struct Chan *const c=&chl[cn]; Err vernunftzentrum.de 70 i- size_t n, blen=c->eol-c->buf; Err vernunftzentrum.de 70 i+ struct Chan *const c = &chl[cn]; Err vernunftzentrum.de 70 i+ size_t n, blen = c->eol - c->buf; Err vernunftzentrum.de 70 i va_list vl; Err vernunftzentrum.de 70 i time_t t; Err vernunftzentrum.de 70 i char *s; Err vernunftzentrum.de 70 i struct tm *tm, *gmtm; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if (blen+LineLen>=c->sz) { Err vernunftzentrum.de 70 i+ if (blen + LineLen >= c->sz) { Err vernunftzentrum.de 70 i c->sz *= 2; Err vernunftzentrum.de 70 i- c->buf=realloc(c->buf, c->sz); Err vernunftzentrum.de 70 i- if (!c->buf) panic("Out of memory."); Err vernunftzentrum.de 70 i- c->eol=c->buf+blen; Err vernunftzentrum.de 70 i+ c->buf = realloc(c->buf, c->sz); Err vernunftzentrum.de 70 i+ if (!c->buf) Err vernunftzentrum.de 70 i+ panic("Out of memory."); Err vernunftzentrum.de 70 i+ c->eol = c->buf + blen; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i- t=time(0); Err vernunftzentrum.de 70 i- if (!(tm=localtime(&t))) panic("Localtime failed."); Err vernunftzentrum.de 70 i- n=strftime(c->eol, LineLen, DATEFMT, tm); Err vernunftzentrum.de 70 i- if (!(gmtm=gmtime(&t))) panic("Gmtime failed."); Err vernunftzentrum.de 70 i+ t = time(0); Err vernunftzentrum.de 70 i+ if (!(tm = localtime(&t))) Err vernunftzentrum.de 70 i+ panic("Localtime failed."); Err vernunftzentrum.de 70 i+ n = strftime(c->eol, LineLen, DATEFMT, tm); Err vernunftzentrum.de 70 i+ if (!(gmtm = gmtime(&t))) Err vernunftzentrum.de 70 i+ panic("Gmtime failed."); Err vernunftzentrum.de 70 i c->eol[n++] = ' '; Err vernunftzentrum.de 70 i va_start(vl, fmt); Err vernunftzentrum.de 70 i s = c->eol + n; Err vernunftzentrum.de 70 i- n+=vsnprintf(s, LineLen-n-1, fmt, vl); Err vernunftzentrum.de 70 i+ n += vsnprintf(s, LineLen - n - 1, fmt, vl); Err vernunftzentrum.de 70 i va_end(vl); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i if (logfp) { Err vernunftzentrum.de 70 i fprintf(logfp, "%-12.12s\t%04d-%02d-%02dT%02d:%02d:%02dZ\t%s\n", Err vernunftzentrum.de 70 i c->name, Err vernunftzentrum.de 70 i gmtm->tm_year + 1900, gmtm->tm_mon + 1, gmtm->tm_mday, Err vernunftzentrum.de 70 i- gmtm->tm_hour, gmtm->tm_min, gmtm->tm_sec, Err vernunftzentrum.de 70 i- s); Err vernunftzentrum.de 70 i+ gmtm->tm_hour, gmtm->tm_min, gmtm->tm_sec, s); Err vernunftzentrum.de 70 i fflush(logfp); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i strcat(c->eol, "\n"); Err vernunftzentrum.de 70 i- if (n>=LineLen-1) Err vernunftzentrum.de 70 i- c->eol+=LineLen-1; Err vernunftzentrum.de 70 i+ if (n >= LineLen - 1) Err vernunftzentrum.de 70 i+ c->eol += LineLen - 1; Err vernunftzentrum.de 70 i else Err vernunftzentrum.de 70 i- c->eol+=n+1; Err vernunftzentrum.de 70 i- if (cn==ch && c->n==0) { Err vernunftzentrum.de 70 i- char *p=c->eol-n-1; Err vernunftzentrum.de 70 i- if (p!=c->buf) waddch(scr.mw, '\n'); Err vernunftzentrum.de 70 i- pushl(p, c->eol-1); Err vernunftzentrum.de 70 i+ c->eol += n + 1; Err vernunftzentrum.de 70 i+ if (cn == ch && c->n == 0) { Err vernunftzentrum.de 70 i+ char *p = c->eol - n - 1; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ if (p != c->buf) Err vernunftzentrum.de 70 i+ waddch(scr.mw, '\n'); Err vernunftzentrum.de 70 i+ pushl(p, c->eol - 1); Err vernunftzentrum.de 70 i wrefresh(scr.mw); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i@@ -261,43 +283,49 @@ static void Err vernunftzentrum.de 70 i scmd(char *usr, char *cmd, char *par, char *data) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i int s, c; Err vernunftzentrum.de 70 i- char *pm=strtok(par, " "); Err vernunftzentrum.de 70 i+ char *pm = strtok(par, " "); Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if (!usr) usr="?"; Err vernunftzentrum.de 70 i+ if (!usr) Err vernunftzentrum.de 70 i+ usr = "?"; Err vernunftzentrum.de 70 i else { Err vernunftzentrum.de 70 i- char *bang=strchr(usr, '!'); Err vernunftzentrum.de 70 i+ char *bang = strchr(usr, '!'); Err vernunftzentrum.de 70 i if (bang) Err vernunftzentrum.de 70 i- *bang=0; Err vernunftzentrum.de 70 i+ *bang = 0; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i if (!strcmp(cmd, "PRIVMSG")) { Err vernunftzentrum.de 70 i- if (!pm || !data) return; Err vernunftzentrum.de 70 i- c=chfind(pm); Err vernunftzentrum.de 70 i+ if (!pm || !data) Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i+ c = chfind(pm); Err vernunftzentrum.de 70 i if (strcasestr(data, nick)) { Err vernunftzentrum.de 70 i pushf(c, PFMTHIGH, usr, data); Err vernunftzentrum.de 70 i chl[c].high |= ch != c; Err vernunftzentrum.de 70 i- } else Err vernunftzentrum.de 70 i+ } else Err vernunftzentrum.de 70 i pushf(c, PFMT, usr, data); Err vernunftzentrum.de 70 i if (ch != c) { Err vernunftzentrum.de 70 i- chl[c].new=1; Err vernunftzentrum.de 70 i+ chl[c].new = 1; Err vernunftzentrum.de 70 i tdrawbar(); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i } else if (!strcmp(cmd, "PING")) { Err vernunftzentrum.de 70 i- sndf("PONG :%s", data?data:"(null)"); Err vernunftzentrum.de 70 i+ sndf("PONG :%s", data ? data : "(null)"); Err vernunftzentrum.de 70 i } else if (!strcmp(cmd, "PART")) { Err vernunftzentrum.de 70 i- if (!pm) return; Err vernunftzentrum.de 70 i+ if (!pm) Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i pushf(chfind(pm), "-!- %s has left %s", usr, pm); Err vernunftzentrum.de 70 i } else if (!strcmp(cmd, "JOIN")) { Err vernunftzentrum.de 70 i- if (!pm) return; Err vernunftzentrum.de 70 i+ if (!pm) Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i pushf(chfind(pm), "-!- %s has joined %s", usr, pm); Err vernunftzentrum.de 70 i } else if (!strcmp(cmd, "470")) { /* Channel forwarding. */ Err vernunftzentrum.de 70 i- char *ch=strtok(0, " "), *fch=strtok(0, " "); Err vernunftzentrum.de 70 i- if (!ch || !fch || !(s=chfind(ch))) return; Err vernunftzentrum.de 70 i+ char *ch = strtok(0, " "), *fch = strtok(0, " "); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ if (!ch || !fch || !(s = chfind(ch))) Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i chl[s].name[0] = 0; Err vernunftzentrum.de 70 i- strncat(chl[s].name, fch, ChanLen-1); Err vernunftzentrum.de 70 i+ strncat(chl[s].name, fch, ChanLen - 1); Err vernunftzentrum.de 70 i tdrawbar(); Err vernunftzentrum.de 70 i } else if (!strcmp(cmd, "471") || !strcmp(cmd, "473") Err vernunftzentrum.de 70 i- || !strcmp(cmd, "474") || !strcmp(cmd, "475")) { /* Join error. */ Err vernunftzentrum.de 70 i- if ((pm=strtok(0, " "))) { Err vernunftzentrum.de 70 i+ || !strcmp(cmd, "474") || !strcmp(cmd, "475")) { /* Join error. */ Err vernunftzentrum.de 70 i+ if ((pm = strtok(0, " "))) { Err vernunftzentrum.de 70 i chdel(pm); Err vernunftzentrum.de 70 i pushf(0, "-!- Cannot join channel %s (%s)", pm, cmd); Err vernunftzentrum.de 70 i tredraw(); Err vernunftzentrum.de 70 i@@ -306,53 +334,58 @@ scmd(char *usr, char *cmd, char *par, char *data) Err vernunftzentrum.de 70 i return; Err vernunftzentrum.de 70 i } else if (!strcmp(cmd, "NOTICE") || !strcmp(cmd, "375") Err vernunftzentrum.de 70 i || !strcmp(cmd, "372") || !strcmp(cmd, "376")) { Err vernunftzentrum.de 70 i- pushf(0, "%s", data?data:""); Err vernunftzentrum.de 70 i+ pushf(0, "%s", data ? data : ""); Err vernunftzentrum.de 70 i } else Err vernunftzentrum.de 70 i- pushf(0, "%s - %s %s", cmd, par, data?data:"(null)"); Err vernunftzentrum.de 70 i+ pushf(0, "%s - %s %s", cmd, par, data ? data : "(null)"); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i static void Err vernunftzentrum.de 70 i uparse(char *m) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- char *p=m; Err vernunftzentrum.de 70 i+ char *p = m; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if (!p[0] || (p[1]!=' ' && p[1]!=0)) { Err vernunftzentrum.de 70 i+ if (!p[0] || (p[1] != ' ' && p[1] != 0)) { Err vernunftzentrum.de 70 i pmsg: Err vernunftzentrum.de 70 i- if (ch==0) return; Err vernunftzentrum.de 70 i- m+=strspn(m, " "); Err vernunftzentrum.de 70 i- if (!*m) return; Err vernunftzentrum.de 70 i+ if (ch == 0) Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i+ m += strspn(m, " "); Err vernunftzentrum.de 70 i+ if (!*m) Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i pushf(ch, PFMT, nick, m); Err vernunftzentrum.de 70 i sndf("PRIVMSG %s :%s", chl[ch].name, m); Err vernunftzentrum.de 70 i return; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i switch (*p) { Err vernunftzentrum.de 70 i case 'j': /* Join channels. */ Err vernunftzentrum.de 70 i- p+=1+(p[1]==' '); Err vernunftzentrum.de 70 i- p=strtok(p, " "); Err vernunftzentrum.de 70 i+ p += 1 + (p[1] == ' '); Err vernunftzentrum.de 70 i+ p = strtok(p, " "); Err vernunftzentrum.de 70 i while (p) { Err vernunftzentrum.de 70 i- if (chadd(p)<0) break; Err vernunftzentrum.de 70 i+ if (chadd(p) < 0) Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i sndf("JOIN %s", p); Err vernunftzentrum.de 70 i- p=strtok(0, " "); Err vernunftzentrum.de 70 i+ p = strtok(0, " "); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i tredraw(); Err vernunftzentrum.de 70 i return; Err vernunftzentrum.de 70 i case 'l': /* Leave channels. */ Err vernunftzentrum.de 70 i- p+=1+(p[1]==' '); Err vernunftzentrum.de 70 i+ p += 1 + (p[1] == ' '); Err vernunftzentrum.de 70 i if (!*p) { Err vernunftzentrum.de 70 i- if (ch==0) return; /* Cannot leave server window. */ Err vernunftzentrum.de 70 i+ if (ch == 0) Err vernunftzentrum.de 70 i+ return; /* Cannot leave server window. */ Err vernunftzentrum.de 70 i strcat(p, chl[ch].name); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i- p=strtok(p, " "); Err vernunftzentrum.de 70 i+ p = strtok(p, " "); Err vernunftzentrum.de 70 i while (p) { Err vernunftzentrum.de 70 i if (chdel(p)) Err vernunftzentrum.de 70 i sndf("PART %s", p); Err vernunftzentrum.de 70 i- p=strtok(0, " "); Err vernunftzentrum.de 70 i+ p = strtok(0, " "); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i tredraw(); Err vernunftzentrum.de 70 i return; Err vernunftzentrum.de 70 i case 'm': /* Private message. */ Err vernunftzentrum.de 70 i- m=p+1+(p[1]==' '); Err vernunftzentrum.de 70 i- if (!(p=strchr(m, ' '))) return; Err vernunftzentrum.de 70 i+ m = p + 1 + (p[1] == ' '); Err vernunftzentrum.de 70 i+ if (!(p = strchr(m, ' '))) Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i *p++ = 0; Err vernunftzentrum.de 70 i sndf("PRIVMSG %s :%s", m, p); Err vernunftzentrum.de 70 i return; Err vernunftzentrum.de 70 i@@ -361,7 +394,7 @@ uparse(char *m) Err vernunftzentrum.de 70 i sndf("%s", &p[2]); Err vernunftzentrum.de 70 i return; Err vernunftzentrum.de 70 i case 'q': /* Quit. */ Err vernunftzentrum.de 70 i- quit=1; Err vernunftzentrum.de 70 i+ quit = 1; Err vernunftzentrum.de 70 i return; Err vernunftzentrum.de 70 i default: /* Send on current channel. */ Err vernunftzentrum.de 70 i goto pmsg; Err vernunftzentrum.de 70 i@@ -371,7 +404,8 @@ uparse(char *m) Err vernunftzentrum.de 70 i static void Err vernunftzentrum.de 70 i sigwinch(int sig) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- if (sig) winchg=1; Err vernunftzentrum.de 70 i+ if (sig) Err vernunftzentrum.de 70 i+ winchg = 1; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i static void Err vernunftzentrum.de 70 i@@ -383,14 +417,15 @@ tinit(void) Err vernunftzentrum.de 70 i raw(); Err vernunftzentrum.de 70 i noecho(); Err vernunftzentrum.de 70 i getmaxyx(stdscr, scr.y, scr.x); Err vernunftzentrum.de 70 i- if (scr.y<4) panic("Screen too small."); Err vernunftzentrum.de 70 i- if ((scr.sw=newwin(1, scr.x, 0, 0))==0 Err vernunftzentrum.de 70 i- || (scr.mw=newwin(scr.y-2, scr.x, 1, 0))==0 Err vernunftzentrum.de 70 i- || (scr.iw=newwin(1, scr.x, scr.y-1, 0))==0) Err vernunftzentrum.de 70 i+ if (scr.y < 4) Err vernunftzentrum.de 70 i+ panic("Screen too small."); Err vernunftzentrum.de 70 i+ if ((scr.sw = newwin(1, scr.x, 0, 0)) == 0 Err vernunftzentrum.de 70 i+ || (scr.mw = newwin(scr.y - 2, scr.x, 1, 0)) == 0 Err vernunftzentrum.de 70 i+ || (scr.iw = newwin(1, scr.x, scr.y - 1, 0)) == 0) Err vernunftzentrum.de 70 i panic("Cannot create windows."); Err vernunftzentrum.de 70 i keypad(scr.iw, 1); Err vernunftzentrum.de 70 i scrollok(scr.mw, 1); Err vernunftzentrum.de 70 i- if (has_colors()==TRUE) { Err vernunftzentrum.de 70 i+ if (has_colors() == TRUE) { Err vernunftzentrum.de 70 i start_color(); Err vernunftzentrum.de 70 i init_pair(1, COLOR_WHITE, COLOR_BLUE); Err vernunftzentrum.de 70 i wbkgd(scr.sw, COLOR_PAIR(1)); Err vernunftzentrum.de 70 i@@ -402,16 +437,16 @@ tresize(void) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i struct winsize ws; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- winchg=0; Err vernunftzentrum.de 70 i- if (ioctl(0, TIOCGWINSZ, &ws)<0) Err vernunftzentrum.de 70 i+ winchg = 0; Err vernunftzentrum.de 70 i+ if (ioctl(0, TIOCGWINSZ, &ws) < 0) Err vernunftzentrum.de 70 i panic("Ioctl (TIOCGWINSZ) failed."); Err vernunftzentrum.de 70 i- resizeterm(scr.y=ws.ws_row, scr.x=ws.ws_col); Err vernunftzentrum.de 70 i- if (scr.y<3 || scr.x<10) Err vernunftzentrum.de 70 i+ resizeterm(scr.y = ws.ws_row, scr.x = ws.ws_col); Err vernunftzentrum.de 70 i+ if (scr.y < 3 || scr.x < 10) Err vernunftzentrum.de 70 i panic("Screen too small."); Err vernunftzentrum.de 70 i- wresize(scr.mw, scr.y-2, scr.x); Err vernunftzentrum.de 70 i+ wresize(scr.mw, scr.y - 2, scr.x); Err vernunftzentrum.de 70 i wresize(scr.iw, 1, scr.x); Err vernunftzentrum.de 70 i wresize(scr.sw, 1, scr.x); Err vernunftzentrum.de 70 i- mvwin(scr.iw, scr.y-1, 0); Err vernunftzentrum.de 70 i+ mvwin(scr.iw, scr.y - 1, 0); Err vernunftzentrum.de 70 i tredraw(); Err vernunftzentrum.de 70 i tdrawbar(); Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i@@ -419,43 +454,49 @@ tresize(void) Err vernunftzentrum.de 70 i static void Err vernunftzentrum.de 70 i tredraw(void) Err vernunftzentrum.de 70 i { Err vernunftzentrum.de 70 i- struct Chan *const c=&chl[ch]; Err vernunftzentrum.de 70 i+ struct Chan *const c = &chl[ch]; Err vernunftzentrum.de 70 i char *q, *p; Err vernunftzentrum.de 70 i- int llen=0, nl=-1; Err vernunftzentrum.de 70 i+ int llen = 0, nl = -1; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i- if (c->eol==c->buf) { Err vernunftzentrum.de 70 i+ if (c->eol == c->buf) { Err vernunftzentrum.de 70 i wclear(scr.mw); Err vernunftzentrum.de 70 i wrefresh(scr.mw); Err vernunftzentrum.de 70 i return; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i- p=c->eol-1; Err vernunftzentrum.de 70 i+ p = c->eol - 1; Err vernunftzentrum.de 70 i if (c->n) { Err vernunftzentrum.de 70 i- int i=c->n; Err vernunftzentrum.de 70 i- for (; p>c->buf; p--) Err vernunftzentrum.de 70 i- if (*p=='\n' && !i--) break; Err vernunftzentrum.de 70 i- if (p==c->buf) c->n-=i; Err vernunftzentrum.de 70 i+ int i = c->n; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ for (; p > c->buf; p--) Err vernunftzentrum.de 70 i+ if (*p == '\n' && !i--) Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i+ if (p == c->buf) Err vernunftzentrum.de 70 i+ c->n -= i; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i- q=p; Err vernunftzentrum.de 70 i- while (nlc->buf) Err vernunftzentrum.de 70 i+ q = p; Err vernunftzentrum.de 70 i+ while (nl < scr.y - 2) { Err vernunftzentrum.de 70 i+ llen = 0; Err vernunftzentrum.de 70 i+ while (*q != '\n' && q > c->buf) Err vernunftzentrum.de 70 i q--, llen++; Err vernunftzentrum.de 70 i- nl += 1+llen/scr.x; Err vernunftzentrum.de 70 i- if (q==c->buf) break; Err vernunftzentrum.de 70 i+ nl += 1 + llen / scr.x; Err vernunftzentrum.de 70 i+ if (q == c->buf) Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i q--; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i- if (q!=c->buf) q+=2; Err vernunftzentrum.de 70 i- for (llen=0; nl>scr.y-2; ) { /* Maybe we must split the top line. */ Err vernunftzentrum.de 70 i- if (q[llen]=='\n' || llen>=scr.x) { Err vernunftzentrum.de 70 i- q+=llen+(q[llen]=='\n'); Err vernunftzentrum.de 70 i- llen=0; Err vernunftzentrum.de 70 i+ if (q != c->buf) Err vernunftzentrum.de 70 i+ q += 2; Err vernunftzentrum.de 70 i+ for (llen = 0; nl > scr.y - 2;) { /* Maybe we must split the top line. */ Err vernunftzentrum.de 70 i+ if (q[llen] == '\n' || llen >= scr.x) { Err vernunftzentrum.de 70 i+ q += llen + (q[llen] == '\n'); Err vernunftzentrum.de 70 i+ llen = 0; Err vernunftzentrum.de 70 i nl--; Err vernunftzentrum.de 70 i- } else llen++; Err vernunftzentrum.de 70 i+ } else Err vernunftzentrum.de 70 i+ llen++; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i wclear(scr.mw); Err vernunftzentrum.de 70 i wmove(scr.mw, 0, 0); Err vernunftzentrum.de 70 i- while (q0 && l 0 && l < scr.x / 2; fst--) Err vernunftzentrum.de 70 i+ l += strlen(chl[fst].name) + 3; Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i werase(scr.sw); Err vernunftzentrum.de 70 i- for (l=0; fst'), l++; Err vernunftzentrum.de 70 i- else if (chl[fst].new) waddch(scr.sw, '+'), l++; Err vernunftzentrum.de 70 i- for (; *p && l'), l++; Err vernunftzentrum.de 70 i+ else if (chl[fst].new) Err vernunftzentrum.de 70 i+ waddch(scr.sw, '+'), l++; Err vernunftzentrum.de 70 i+ for (; *p && l < scr.x; p++, l++) Err vernunftzentrum.de 70 i waddch(scr.sw, *p); Err vernunftzentrum.de 70 i- if (l=len) return; Err vernunftzentrum.de 70 i- memmove(&l[cu], &l[cu+1], len-cu-1); Err vernunftzentrum.de 70 i- dirty=cu; Err vernunftzentrum.de 70 i+ if (cu >= len) Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i+ memmove(&l[cu], &l[cu + 1], len - cu - 1); Err vernunftzentrum.de 70 i+ dirty = cu; Err vernunftzentrum.de 70 i len--; Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case KEY_BACKSPACE: Err vernunftzentrum.de 70 i- if (cu==0) return; Err vernunftzentrum.de 70 i- memmove(&l[cu-1], &l[cu], len-cu); Err vernunftzentrum.de 70 i- dirty=--cu; Err vernunftzentrum.de 70 i+ if (cu == 0) Err vernunftzentrum.de 70 i+ return; Err vernunftzentrum.de 70 i+ memmove(&l[cu - 1], &l[cu], len - cu); Err vernunftzentrum.de 70 i+ dirty = --cu; Err vernunftzentrum.de 70 i len--; Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case '\n': Err vernunftzentrum.de 70 i- l[len]=0; Err vernunftzentrum.de 70 i+ l[len] = 0; Err vernunftzentrum.de 70 i uparse(l); Err vernunftzentrum.de 70 i- dirty=cu=len=0; Err vernunftzentrum.de 70 i+ dirty = cu = len = 0; Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i default: Err vernunftzentrum.de 70 i- if (c>CHAR_MAX || len>=BufSz-1) return; /* Skip other curses codes. */ Err vernunftzentrum.de 70 i- memmove(&l[cu+1], &l[cu], len-cu); Err vernunftzentrum.de 70 i- dirty=cu; Err vernunftzentrum.de 70 i+ if (c > CHAR_MAX || len >= BufSz - 1) Err vernunftzentrum.de 70 i+ return; /* Skip other curses codes. */ Err vernunftzentrum.de 70 i+ memmove(&l[cu + 1], &l[cu], len - cu); Err vernunftzentrum.de 70 i+ dirty = cu; Err vernunftzentrum.de 70 i len++; Err vernunftzentrum.de 70 i- l[cu++]=c; Err vernunftzentrum.de 70 i+ l[cu++] = c; Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i- while (cu=scr.x/2 ? scr.x/2 : shft; Err vernunftzentrum.de 70 i- while (cu>=scr.x+shft) Err vernunftzentrum.de 70 i- dirty=0, shft += scr.x/2; Err vernunftzentrum.de 70 i- if (dirty<=shft) Err vernunftzentrum.de 70 i- i=shft; Err vernunftzentrum.de 70 i- else if (dirty>scr.x+shft || dirty>len) Err vernunftzentrum.de 70 i+ while (cu < shft) Err vernunftzentrum.de 70 i+ dirty = 0, shft -= shft >= scr.x / 2 ? scr.x / 2 : shft; Err vernunftzentrum.de 70 i+ while (cu >= scr.x + shft) Err vernunftzentrum.de 70 i+ dirty = 0, shft += scr.x / 2; Err vernunftzentrum.de 70 i+ if (dirty <= shft) Err vernunftzentrum.de 70 i+ i = shft; Err vernunftzentrum.de 70 i+ else if (dirty > scr.x + shft || dirty > len) Err vernunftzentrum.de 70 i goto mvcur; Err vernunftzentrum.de 70 i else Err vernunftzentrum.de 70 i- i=dirty; Err vernunftzentrum.de 70 i- wmove(scr.iw, 0, i-shft); Err vernunftzentrum.de 70 i+ i = dirty; Err vernunftzentrum.de 70 i+ wmove(scr.iw, 0, i - shft); Err vernunftzentrum.de 70 i wclrtoeol(scr.iw); Err vernunftzentrum.de 70 i- for (; i-shft=0) Err vernunftzentrum.de 70 i+ while ((o = getopt(argc, argv, "hn:u:s:p:l:")) >= 0) Err vernunftzentrum.de 70 i switch (o) { Err vernunftzentrum.de 70 i case 'h': Err vernunftzentrum.de 70 i case '?': Err vernunftzentrum.de 70 i@@ -607,11 +662,12 @@ main(int argc, char *argv[]) Err vernunftzentrum.de 70 i fputs("usage: irc [-n NICK] [-u USER] [-s SERVER] [-p PORT] [-l LOGFILE ] [-h]\n", stderr); Err vernunftzentrum.de 70 i exit(0); Err vernunftzentrum.de 70 i case 'l': Err vernunftzentrum.de 70 i- if (!(logfp=fopen(optarg, "a"))) Err vernunftzentrum.de 70 i+ if (!(logfp = fopen(optarg, "a"))) Err vernunftzentrum.de 70 i panic("fopen: logfile"); Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case 'n': Err vernunftzentrum.de 70 i- if (strlen(optarg)>=sizeof nick) goto usage; Err vernunftzentrum.de 70 i+ if (strlen(optarg) >= sizeof nick) Err vernunftzentrum.de 70 i+ goto usage; Err vernunftzentrum.de 70 i strcpy(nick, optarg); Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case 'u': Err vernunftzentrum.de 70 i@@ -621,21 +677,25 @@ main(int argc, char *argv[]) Err vernunftzentrum.de 70 i server = optarg; Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i case 'p': Err vernunftzentrum.de 70 i- if (!(port=strtol(optarg, 0, 0))) goto usage; Err vernunftzentrum.de 70 i+ if (!(port = strtol(optarg, 0, 0))) Err vernunftzentrum.de 70 i+ goto usage; Err vernunftzentrum.de 70 i break; Err vernunftzentrum.de 70 i } Err vernunftzentrum.de 70 i- if (!nick[0] && ircnick && strlen(ircnick)