ref: e978996babb834efb9d2de465c812e11178cc33a
parent: 5479f0fb4283ca4a5a58c9b7b50c5b86bde13aa1
author: kemal <[email protected]>
date: Mon Nov 15 06:48:06 EST 2021
ircs, ircx: add support for /me
--- a/dat.h
+++ b/dat.h
@@ -47,4 +47,4 @@
int depth;
};
-extern char *logdir;
+extern char *logdir, *mynick;
--- a/fns.h
+++ b/fns.h
@@ -8,6 +8,7 @@
void ircfmtquit(Ircmsg *, char *, int);
void ircfmtpart(Ircmsg *, char *, int);
void ircfmtpriv(Ircmsg *, char *, int);
+void ircfmtaction(Ircmsg *, char *, int);
void ircfmtnumeric(Ircmsg *, char *, int);
void listfree(List **);
int listadd(List **, void *);
--- a/ircfmt.c
+++ b/ircfmt.c
@@ -123,6 +123,27 @@
}
void
+ircfmtaction(Ircmsg *irc, char *buf, int bufsize)
+{
+ int n;
+
+ n = strlen(irc->trail);
+ if(irc->trail[n-1] == 1)
+ irc->trail[n-1] = 0;
+ if(irc->nick == nil)
+ irc->nick = mynick;
+
+ if(logdir != nil && ircischan(irc->par[0]))
+ snprint(buf, bufsize,
+ "* %s %s",
+ irc->nick, irc->trail+8);
+ else
+ snprint(buf, bufsize,
+ "(%s) * %s %s",
+ irc->par[0], irc->nick, irc->trail+8);
+}
+
+void
ircfmtnumeric(Ircmsg *irc, char *buf, int bufsize)
{
int i, n;
--- a/ircs.man
+++ b/ircs.man
@@ -51,8 +51,8 @@
The -p option causes a password to be sent to the server. The
password is read via the authentication agent factotum(4) which
-must be mounted in the same namespace. The -p option can only be
-used with the -e (use TLS) option.
+must be mounted in the same namespace. Ircs will use TLS if -p is
+used.
By default the logs are formatted so that they can easily be
processed with Plan 9 tools, like cat(1) or grep(1). The log
--- a/ircx
+++ b/ircx
@@ -27,7 +27,8 @@
/w mask send who query
/W mask send whois query
/x create new ircx window
-[/ ]message send message to target'
+[/ ]message send message to target
+/me message send an action emote'
fn usage{
aux/usage
@@ -299,6 +300,11 @@
ifs=$oifs
msg='PRIVMSG '^$target^' :'^$line
}
+ case /me
+ if(~ $#target 0)
+ echo no target
+ if not
+ msg='PRIVMSG '^$target^' :ACTION '^$"*^''
case /*
echo unknown command
case *
--- a/main.c
+++ b/main.c
@@ -45,13 +45,12 @@
};
int mainstacksize = Stacksize;
-char *logdir;
+char *logdir, *mynick;
static char *service = "ircs";
static char *post;
static char *file;
-static char *mynick;
static char *user;
static char *addr;
@@ -498,7 +497,10 @@
target = nil;
if(strcmp(irc.cmd, "PRIVMSG") == 0){
- fmt = ircfmtpriv;
+ if(strncmp(irc.trail, "\1ACTION ", 8) == 0)
+ fmt = ircfmtaction; /* /me */
+ else
+ fmt = ircfmtpriv;
target = irc.par[0];
} else if(strcmp(irc.cmd, "JOIN") == 0){
joinmsg(&irc, msg, time);
@@ -572,7 +574,10 @@
target = nil;
if(strcmp(irc.cmd, "PRIVMSG") == 0){
- fmt = ircfmtpriv;
+ if(strncmp(irc.trail, "\1ACTION ", 8) == 0)
+ fmt = ircfmtaction; /* /me */
+ else
+ fmt = ircfmtpriv;
target = irc.par[0];
} else if(strcmp(irc.cmd, "QUIT") == 0){
state = Quit;