Introduction
Introduction Statistics Contact Development Disclaimer Help
Add nickname and new message indicator. - irc - Unnamed repository; edit this f…
git clone git://vernunftzentrum.de/irc.git
Log
Files
Refs
README
---
commit e3ce65b0ed8f3e7342646f8272a0cf0c78d31f79
parent 9d13c27310b659f41379c638b799281d7735201c
Author: Hiltjo Posthuma <[email protected]>
Date: Sun, 24 Apr 2016 18:32:41 +0200
Add nickname and new message indicator.
Diffstat:
irc.c | 28 ++++++++++++++++++++--------
1 file changed, 20 insertions(+), 8 deletions(-)
---
diff --git a/irc.c b/irc.c
@@ -46,6 +46,8 @@ struct Chan {
char *buf, *eol;
int n; /* Scroll offset. */
size_t sz; /* size of buf. */
+ char high; /* Nick highlight. */
+ char new; /* New message. */
} chl[MaxChans];
int nch, ch; /* Current number of channels, and current channel. */
char outb[BufSz], *outp=outb; /* Output buffer. */
@@ -258,7 +260,7 @@ pushf(int cn, const char *fmt, ...)
static void
scmd(char *usr, char *cmd, char *par, char *data)
{
- int s;
+ int s, c;
char *pm=strtok(par, " ");
if (!usr) usr="?";
@@ -269,10 +271,16 @@ scmd(char *usr, char *cmd, char *par, char *data)
}
if (!strcmp(cmd, "PRIVMSG")) {
if (!pm || !data) return;
- if (strcasestr(data, nick))
- pushf(chfind(pm), PFMTHIGH, usr, data);
- else
- pushf(chfind(pm), PFMT, usr, data);
+ c=chfind(pm);
+ if (strcasestr(data, nick)) {
+ pushf(c, PFMTHIGH, usr, data);
+ chl[c].high |= ch != c;
+ } else
+ pushf(c, PFMT, usr, data);
+ if (ch != c) {
+ chl[c].new=1;
+ tdrawbar();
+ }
} else if (!strcmp(cmd, "PING")) {
sndf("PONG :%s", data?data:"(null)");
} else if (!strcmp(cmd, "PART")) {
@@ -466,6 +474,8 @@ tdrawbar(void)
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++)
waddch(scr.sw, *p);
if (l<scr.x-1)
@@ -487,11 +497,13 @@ tgetch(void)
switch (c) {
case CTRL('n'):
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;
tdrawbar();
tredraw();
return;
@@ -595,7 +607,7 @@ 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':
@@ -615,9 +627,9 @@ main(int argc, char *argv[])
if (!nick[0] && ircnick && strlen(ircnick)<sizeof nick)
strcpy(nick, ircnick);
if (!nick[0]) goto usage;
- if (!user) user = "Unknown";
+ 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);
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.