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