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