Introduction
Introduction Statistics Contact Development Disclaimer Help
applied anonymous cleanup patch, thanks anonymous! - sic - simple irc client
git clone git://git.suckless.org/sic
Log
Files
Refs
README
LICENSE
---
commit 75d42255f22a40935ced8b2e4c134996f8efebe2
parent dad75aa6ba9f9b50b5f6c656929092aad0963462
Author: Anselm R Garbe <[email protected]>
Date: Sat, 17 Apr 2010 11:12:54 +0100
applied anonymous cleanup patch, thanks anonymous!
Diffstat:
M sic.c | 87 ++++++++++++++++-------------…
M util.c | 43 +++++++++++++----------------…
2 files changed, 62 insertions(+), 68 deletions(-)
---
diff --git a/sic.c b/sic.c
@@ -55,76 +55,77 @@ privmsg(char *channel, char *msg) {
}
static void
-parsein(char *msg) {
- char *p;
- char c;
+parsein(char *s) {
+ char c, *p;
- if(msg[0] == '\0')
+ if(s[0] == '\0')
return;
- msg = ctok(&msg, '\n');
- if(msg[0] != ':') {
- privmsg(channel, msg);
+ skip(s, '\n');
+ if(s[0] != ':') {
+ privmsg(channel, s);
return;
}
- c = *++msg;
- if(!c || !isspace(msg[1]))
- sout("%s", msg);
- else {
- if(msg[1])
- msg += 2;
+ c = *++s;
+ if(c != '\0' && isspace(s[1])) {
+ p = s + 2;
switch(c) {
case 'j':
- sout("JOIN %s", msg);
+ sout("JOIN %s", p);
if(channel[0] == '\0')
- strlcpy(channel, msg, sizeof channel);
- break;
+ strlcpy(channel, p, sizeof channel);
+ return;
case 'l':
- p = tok(&msg);
+ s = eat(p, isspace, 1);
+ p = eat(s, isspace, 0);
+ if(!*s)
+ s = channel;
+ if(*p)
+ *p++ = '\0';
if(!*p)
- p = channel;
- if(!*msg)
- msg = "sic - 250 LOC are too much!";
- sout("PART %s :%s", p, msg);
- break;
+ p = "sic - 250 LOC are too much!";
+ sout("PART %s :%s", s, p);
+ return;
case 'm':
- p = tok(&msg);
- privmsg(p, msg);
- break;
+ s = eat(p, isspace, 1);
+ p = eat(s, isspace, 0);
+ if(*p)
+ *p++ = '\0';
+ privmsg(s, p);
+ return;
case 's':
- strlcpy(channel, msg, sizeof channel);
- break;
- default:
- sout("%c %s", c, msg);
- break;
+ strlcpy(channel, p, sizeof channel);
+ return;
}
}
+ sout("%s", s);
}
static void
-parsesrv(char *msg) {
- char *cmd, *p, *usr, *txt;
+parsesrv(char *cmd) {
+ char *usr, *par, *txt;
usr = host;
- if(!msg || !*msg)
+ if(!cmd || !*cmd)
return;
- if(msg[0] == ':') {
- msg++;
- p = tok(&msg);
- if(!*msg)
+ if(cmd[0] == ':') {
+ usr = cmd + 1;
+ cmd = skip(usr, ' ');
+ if(cmd[0] == '\0')
return;
- usr = ctok(&p, '!');
+ skip(usr, '!');
}
- txt = ctok(&msg, '\r');
- msg = ctok(&txt, ':');
- cmd = tok(&msg);
+ skip(cmd, '\r');
+ par = skip(cmd, ' ');
+ txt = skip(par, ':');
+ trim(par);
if(!strcmp("PONG", cmd))
return;
if(!strcmp("PRIVMSG", cmd))
- pout(msg, "<%s> %s", usr, txt);
+ pout(par, "<%s> %s", usr, txt);
else if(!strcmp("PING", cmd))
sout("PONG %s", txt);
else {
- pout(usr, ">< %s: %s", cmd, txt);
+ pout(usr, ">< %s (%s): %s", cmd, par, txt);
if(!strcmp("NICK", cmd) && !strcmp(usr, nick))
strlcpy(nick, txt, sizeof nick);
}
diff --git a/util.c b/util.c
@@ -47,35 +47,28 @@ strlcpy(char *to, const char *from, int l) {
to[l-1] = '\0';
}
-static void
-eat(char **s, int (*p)(int), int r) {
- char *q;
-
- for(q = *s; *q && p(*q) == r; q++)
- ;
- *s = q;
+static char *
+eat(char *s, int (*p)(int), int r) {
+ while(s != '\0' && p(*s) == r)
+ s++;
+ return s;
}
static char*
-tok(char **s) {
- char *p;
-
- eat(s, isspace, 1);
- p = *s;
- eat(s, isspace, 0);
- if(**s)
- *(*s)++ = '\0';
- return p;
+skip(char *s, char c) {
+ while(*s != c && *s != '\0')
+ s++;
+ if (*s != '\0')
+ *s++ = '\0';
+ return s;
}
-static char*
-ctok(char **s, int c) {
- char *p, *q;
+static void
+trim(char *s) {
+ char *e;
- q = *s;
- for(p = q; *p && *p != c; p++)
- ;
- if(*p) *p++ = '\0';
- *s = p;
- return q;
+ e = s + strlen(s) - 1;
+ while (isspace(*e) && e > s)
+ e--;
+ *(e + 1) = '\0';
}
You are viewing proxied material from suckless.org. 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.