parent
a23f587be8
commit
2797ac8abf
|
@ -86,7 +86,7 @@ the same as the nickname.
|
|||
.
|
||||
.It Fl v
|
||||
Show raw IRC protocol in the
|
||||
.Ql ~irc
|
||||
.Ql -raw-
|
||||
view.
|
||||
.
|
||||
.It Fl w Ar pass
|
||||
|
@ -202,7 +202,7 @@ Query information about a user.
|
|||
.Pp
|
||||
Additionally,
|
||||
messages entered in the
|
||||
.Ql ~irc
|
||||
.Ql -raw-
|
||||
view
|
||||
will be sent as raw IRC commands.
|
||||
.
|
||||
|
|
2
chat.c
2
chat.c
|
@ -62,7 +62,7 @@ int main(int argc, char *argv[]) {
|
|||
break; case 'p': self.port = dupe(optarg);
|
||||
break; case 'r': self.real = dupe(optarg);
|
||||
break; case 'u': self.user = dupe(optarg);
|
||||
break; case 'v': self.verbose = true;
|
||||
break; case 'v': self.raw = true;
|
||||
break; case 'w': self.pass = dupe(optarg);
|
||||
break; default: return EX_USAGE;
|
||||
}
|
||||
|
|
4
chat.h
4
chat.h
|
@ -42,7 +42,7 @@ struct {
|
|||
char *user;
|
||||
char *real;
|
||||
char *join;
|
||||
bool verbose;
|
||||
bool raw;
|
||||
bool notify;
|
||||
bool quit;
|
||||
} self;
|
||||
|
@ -59,7 +59,7 @@ struct Tag {
|
|||
enum { TagsLen = 256 };
|
||||
const struct Tag TagNone;
|
||||
const struct Tag TagStatus;
|
||||
const struct Tag TagVerbose;
|
||||
const struct Tag TagRaw;
|
||||
struct Tag tagFind(const char *name);
|
||||
struct Tag tagFor(const char *name);
|
||||
|
||||
|
|
4
input.c
4
input.c
|
@ -25,7 +25,7 @@
|
|||
#include "chat.h"
|
||||
|
||||
static void privmsg(struct Tag tag, bool action, const char *mesg) {
|
||||
if (tag.id == TagStatus.id || tag.id == TagVerbose.id) return;
|
||||
if (tag.id == TagStatus.id || tag.id == TagRaw.id) return;
|
||||
char *line;
|
||||
int send;
|
||||
asprintf(
|
||||
|
@ -184,7 +184,7 @@ void input(struct Tag tag, char *input) {
|
|||
}
|
||||
|
||||
if (!slash) {
|
||||
if (tag.id == TagVerbose.id) {
|
||||
if (tag.id == TagRaw.id) {
|
||||
ircFmt("%s\r\n", input);
|
||||
} else {
|
||||
privmsg(tag, false, input);
|
||||
|
|
8
irc.c
8
irc.c
|
@ -110,8 +110,8 @@ void ircFmt(const char *format, ...) {
|
|||
int len = vasprintf(&buf, format, ap);
|
||||
va_end(ap);
|
||||
if (!buf) err(EX_OSERR, "vasprintf");
|
||||
if (self.verbose) {
|
||||
uiFmt(TagVerbose, UICold, "\3%d<<<\3 %.*s", IRCWhite, len - 2, buf);
|
||||
if (self.raw) {
|
||||
uiFmt(TagRaw, UICold, "\3%d<<<\3 %.*s", IRCWhite, len - 2, buf);
|
||||
}
|
||||
ircWrite(buf, len);
|
||||
free(buf);
|
||||
|
@ -133,8 +133,8 @@ retry:
|
|||
char *line = buf;
|
||||
while (NULL != (crlf = strnstr(line, "\r\n", &buf[len] - line))) {
|
||||
crlf[0] = '\0';
|
||||
if (self.verbose) {
|
||||
uiFmt(TagVerbose, UICold, "\3%d>>>\3 %s", IRCGray, line);
|
||||
if (self.raw) {
|
||||
uiFmt(TagRaw, UICold, "\3%d>>>\3 %s", IRCGray, line);
|
||||
}
|
||||
handle(line);
|
||||
line = &crlf[2];
|
||||
|
|
10
tag.c
10
tag.c
|
@ -21,19 +21,19 @@
|
|||
|
||||
#include "chat.h"
|
||||
|
||||
#define NONE ""
|
||||
#define STATUS "~status"
|
||||
#define VERBOSE "~irc"
|
||||
#define NONE "-none-"
|
||||
#define STATUS "-status-"
|
||||
#define RAW "-raw-"
|
||||
|
||||
const struct Tag TagNone = { 0, NONE };
|
||||
const struct Tag TagStatus = { 1, STATUS };
|
||||
const struct Tag TagVerbose = { 2, VERBOSE };
|
||||
const struct Tag TagRaw = { 2, RAW };
|
||||
|
||||
static struct {
|
||||
char *name[TagsLen];
|
||||
size_t len;
|
||||
} tags = {
|
||||
.name = { NONE, STATUS, VERBOSE },
|
||||
.name = { NONE, STATUS, RAW },
|
||||
.len = 3,
|
||||
};
|
||||
|
||||
|
|
4
ui.c
4
ui.c
|
@ -509,13 +509,13 @@ static void keyChar(wchar_t ch) {
|
|||
}
|
||||
|
||||
static bool isAction(struct Tag tag, const wchar_t *input) {
|
||||
if (tag.id == TagStatus.id || tag.id == TagVerbose.id) return false;
|
||||
if (tag.id == TagStatus.id || tag.id == TagRaw.id) return false;
|
||||
return !wcsncasecmp(input, L"/me ", 4);
|
||||
}
|
||||
|
||||
// FIXME: This duplicates logic from input.c for wcs.
|
||||
static bool isCommand(struct Tag tag, const wchar_t *input) {
|
||||
if (tag.id == TagStatus.id || tag.id == TagVerbose.id) return true;
|
||||
if (tag.id == TagStatus.id || tag.id == TagRaw.id) return true;
|
||||
if (input[0] != L'/') return false;
|
||||
const wchar_t *space = wcschr(&input[1], L' ');
|
||||
const wchar_t *extra = wcschr(&input[1], L'/');
|
||||
|
|
Loading…
Reference in New Issue