tRefactor user-state-logic - ratox - FIFO based tox client
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 85dcb9317df7302faa01af91bebbcc1b7e6d4280
(DIR) parent 7cda83ce5f90ce6222c78fa95f10452f801b5977
(HTM) Author: FRIGN <dev@frign.de>
Date: Tue, 7 Oct 2014 17:18:44 +0200
Refactor user-state-logic
Diffstat:
M ratox.c | 41 +++++++++++++++----------------
1 file changed, 20 insertions(+), 21 deletions(-)
---
(DIR) diff --git a/ratox.c b/ratox.c
t@@ -135,6 +135,16 @@ static struct file ffiles[] = {
[FCALL_PENDING] = { .type = STATIC, .name = "call_pending", .flags = O_WRONLY | O_TRUNC | O_CREAT },
};
+struct {
+ char *name;
+ int n;
+} ustate[] = {
+ { .name = "invalid", .n = TOX_USERSTATUS_INVALID },
+ { .name = "none", .n = TOX_USERSTATUS_NONE },
+ { .name = "away", .n = TOX_USERSTATUS_AWAY },
+ { .name = "busy", .n = TOX_USERSTATUS_BUSY },
+};
+
enum {
TRANSFER_NONE,
TRANSFER_INITIATED,
t@@ -752,13 +762,12 @@ cbstatusmessage(Tox *m, int32_t frnum, const uint8_t *data, uint16_t len, void *
}
static void
-cbuserstate(Tox *m, int32_t frnum, uint8_t status, void *udata)
+cbuserstate(Tox *m, int32_t frnum, uint8_t state, void *udata)
{
struct friend *f;
- char *ustate[] = { "none", "away", "busy", "invalid" };
- if (status >= LEN(ustate)) {
- weprintf("Received invalid user status: %d\n", status);
+ if (state >= LEN(ustate)) {
+ weprintf("Received invalid user status: %d\n", state);
return;
}
t@@ -766,8 +775,8 @@ cbuserstate(Tox *m, int32_t frnum, uint8_t status, void *udata)
if (f->num == frnum) {
ftruncate(f->fd[FSTATE], 0);
lseek(f->fd[FSTATE], 0, SEEK_SET);
- dprintf(f->fd[FSTATE], "%s\n", ustate[status]);
- printout(": %s : State > %s\n", f->name, ustate[status]);
+ dprintf(f->fd[FSTATE], "%s\n", ustate[state].name);
+ printout(": %s : State > %s\n", f->name, ustate[state].name);
break;
}
}
t@@ -1106,7 +1115,6 @@ localinit(void)
uint8_t name[TOX_MAX_NAME_LENGTH + 1];
uint8_t address[TOX_FRIEND_ADDRESS_SIZE];
uint8_t status[TOX_MAX_STATUSMESSAGE_LENGTH + 1];
- char *ustate[] = { "none", "away", "busy" };
DIR *d;
int r;
size_t i, m;
t@@ -1169,7 +1177,7 @@ localinit(void)
weprintf("Invalid user status: %d\n", r);
} else {
ftruncate(gslots[STATE].fd[OUT], 0);
- dprintf(gslots[STATE].fd[OUT], "%s\n", ustate[r]);
+ dprintf(gslots[STATE].fd[OUT], "%s\n", ustate[r].name);
}
/* Dump ID */
t@@ -1294,7 +1302,6 @@ friendcreate(int32_t frnum)
{
struct friend *f;
uint8_t status[TOX_MAX_STATUSMESSAGE_LENGTH + 1];
- char *ustate[] = { "none", "away", "busy", "invalid" };
size_t i;
DIR *d;
int r;
t@@ -1364,7 +1371,7 @@ friendcreate(int32_t frnum)
weprintf("Invalid user status: %d\n", r);
} else {
ftruncate(f->fd[FSTATE], 0);
- dprintf(f->fd[FSTATE], "%s\n", ustate[r]);
+ dprintf(f->fd[FSTATE], "%s\n", ustate[r].name);
}
/* Dump file pending state */
t@@ -1473,14 +1480,6 @@ setuserstate(void *data)
char buf[PIPE_BUF];
ssize_t n;
size_t i;
- struct {
- char *name;
- int n;
- } ustate[] = {
- { .name = "none", .n = TOX_USERSTATUS_NONE },
- { .name = "away", .n = TOX_USERSTATUS_AWAY },
- { .name = "busy", .n = TOX_USERSTATUS_BUSY },
- };
n = fiforead(gslots[STATE].dirfd, &gslots[STATE].fd[IN], gfiles[IN],
buf, sizeof(buf) - 1);
t@@ -1490,7 +1489,7 @@ setuserstate(void *data)
n--;
buf[n] = '\0';
for (i = 0; i < LEN(ustate); i++) {
- if (strcmp(buf, ustate[i].name) == 0) {
+ if (ustate[i].n != TOX_USERSTATUS_INVALID && strcmp(buf, ustate[i].name) == 0) {
tox_set_user_status(tox, ustate[i].n);
break;
}
t@@ -1499,14 +1498,14 @@ setuserstate(void *data)
ftruncate(gslots[STATE].fd[ERR], 0);
lseek(gslots[STATE].fd[ERR], 0, SEEK_SET);
dprintf(gslots[STATE].fd[ERR], "invalid\n");
- weprintf("Invalid user status: %s\n", buf);
+ weprintf("Invalid state: %s\n", buf);
return;
}
ftruncate(gslots[STATE].fd[OUT], 0);
lseek(gslots[STATE].fd[OUT], 0, SEEK_SET);
dprintf(gslots[STATE].fd[OUT], "%s\n", buf);
datasave();
- printout("User state > %s\n", buf);
+ printout(": State > %s\n", buf);
}
static void