diff options
| author | Quentin Carbonneaux | 2016-05-03 21:31:50 -0400 |
|---|---|---|
| committer | Quentin Carbonneaux | 2016-05-03 21:31:50 -0400 |
| commit | fea5b2171f559a5aac7b38773659eca26064562d (patch) | |
| tree | 0dddc85b2467cc578a4081eb33c65abb2091c9dd | |
| parent | 35d40adb208fd0c8ded353fb80b202d5f6f0b77e (diff) | |
style change
| -rw-r--r-- | irc.c | 501 |
1 files changed, 282 insertions, 219 deletions
@@ -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 better to do. */ - 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 to do. */ + 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 error. */ + 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 codes. */ - 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 PORT] [-l LOGFILE ] [-h]\n", stderr); 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(); |
