Skip to content
Extraits de code Groupes Projets
Vérifiée Valider dd601d90 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

Less check in lkt

parent f3223dc1
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!75Resolve "Stickers in lkt"
...@@ -28,8 +28,6 @@ ...@@ -28,8 +28,6 @@
#define LKT_KEY_VALUE_SEP ": \n\t\0" #define LKT_KEY_VALUE_SEP ": \n\t\0"
#define fail_if(cond, msg) { if (cond) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); } } #define fail_if(cond, msg) { if (cond) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); } }
#define fail(msg) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); } #define fail(msg) { LOG_ERROR("%s", msg); exit(EXIT_FAILURE); }
#define lkt_send_and_exit(buffer, len) exit(write_socket(lkt_connect(), buffer, len))
#define write_socket(sock, buff, len) (fwrite(buff, sizeof(char), len, sock) != len)
#define exit_with_status(sock, buff) { \ #define exit_with_status(sock, buff) { \
read_socket(sock, buff, 2); \ read_socket(sock, buff, 2); \
...@@ -82,29 +80,6 @@ read_socket(FILE *sock, char *buff, size_t max_len) ...@@ -82,29 +80,6 @@ read_socket(FILE *sock, char *buff, size_t max_len)
return i; return i;
} }
static int
write_socket_format(FILE *sock, const char *format, ...)
{
int ret = 1, size;
char buff[LKT_MESSAGE_MAX];
va_list ap;
va_start(ap, format);
size = vsnprintf(buff, LKT_MESSAGE_MAX - 1, format, ap);
buff[LKT_MESSAGE_MAX - 1] = 0;
if (size < 0)
goto err;
if (fwrite(buff, sizeof(char), size, sock) < (unsigned int) size)
goto err;
ret = 0;
err:
va_end(ap);
return ret;
}
static FILE * static FILE *
create_socket(const char *host, const char *port) create_socket(const char *host, const char *port)
{ {
...@@ -143,6 +118,33 @@ lkt_connect(void) ...@@ -143,6 +118,33 @@ lkt_connect(void)
return sock; return sock;
} }
static void
write_socket(FILE *sock, const char *format, ...)
{
int size;
char buff[LKT_MESSAGE_MAX];
va_list ap;
va_start(ap, format);
size = vsnprintf(buff, LKT_MESSAGE_MAX - 1, format, ap);
buff[LKT_MESSAGE_MAX - 1] = 0;
if (size < 0)
fail("Connexion error")
if (fwrite(buff, sizeof(char), size, sock) < (unsigned int) size)
fail("Connexion error")
va_end(ap);
}
noreturn static inline void
lkt_send_and_exit(const char *buffer, size_t len)
{
write_socket(lkt_connect(), buffer, len);
exit(EXIT_SUCCESS);
}
static char * static char *
lkt_skip_key(char *buffer) lkt_skip_key(char *buffer)
{ {
...@@ -163,7 +165,7 @@ send_cmd_with_uri(FILE *sock, char *cmd, int argc, const char **argv) ...@@ -163,7 +165,7 @@ send_cmd_with_uri(FILE *sock, char *cmd, int argc, const char **argv)
} }
strncat(buf, argv[i], LKT_MESSAGE_MAX - 1); strncat(buf, argv[i], LKT_MESSAGE_MAX - 1);
strncat(buf, "\n", LKT_MESSAGE_MAX - 1); strncat(buf, "\n", LKT_MESSAGE_MAX - 1);
(void) write_socket_format(sock, "%s %s://%s", cmd, argv[0], buf); write_socket(sock, "%s %s://%s", cmd, argv[0], buf);
} }
/* Functions implementing options. */ /* Functions implementing options. */
...@@ -188,7 +190,8 @@ simple_send_with_password__(const char *cmd) ...@@ -188,7 +190,8 @@ simple_send_with_password__(const char *cmd)
fail("Password not provided"); fail("Password not provided");
static const char cmd__[] = "password %s\n%s\nclose\n"; static const char cmd__[] = "password %s\n%s\nclose\n";
FILE *sock = lkt_connect(); FILE *sock = lkt_connect();
exit(write_socket_format(sock, cmd__, password, cmd)); write_socket(sock, cmd__, password, cmd);
exit(EXIT_SUCCESS);
} }
noreturn void noreturn void
...@@ -218,17 +221,17 @@ rescan_or_update__(struct lkt_cmd_args *args, const char *cmd) ...@@ -218,17 +221,17 @@ rescan_or_update__(struct lkt_cmd_args *args, const char *cmd)
/* All the db */ /* All the db */
if (args->argc == 0) if (args->argc == 0)
exit(write_socket_format(sock, "password %s\n%s\n", password, cmd)); write_socket(sock, "password %s\n%s\n", password, cmd);
/* With a query */ /* With a query */
else { else {
memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char));
for (i = 0; i < args->argc; ++i) for (i = 0; i < args->argc; ++i)
strncat(buff, args->argv[i], LKT_MESSAGE_MAX - 1); strncat(buff, args->argv[i], LKT_MESSAGE_MAX - 1);
exit(write_socket_format(sock, "password %s\n%s %s\n", password, cmd, buff)); write_socket(sock, "password %s\n%s %s\n", password, cmd, buff);
} }
abort(); exit(EXIT_SUCCESS);
} }
noreturn void noreturn void
...@@ -259,11 +262,8 @@ play__(struct lkt_cmd_args *args) ...@@ -259,11 +262,8 @@ play__(struct lkt_cmd_args *args)
static const char cmd_pause__[] = "pause\nclose\n"; static const char cmd_pause__[] = "pause\nclose\n";
char buff[LKT_MESSAGE_MAX]; char buff[LKT_MESSAGE_MAX];
FILE *sock = lkt_connect(); FILE *sock = lkt_connect();
write_socket(sock, status__);
if (write_socket(sock, status__, sizeof(status__))) /* In bytes. */
exit(EXIT_FAILURE);
for (;;) { for (;;) {
memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char));
...@@ -276,8 +276,10 @@ play__(struct lkt_cmd_args *args) ...@@ -276,8 +276,10 @@ play__(struct lkt_cmd_args *args)
if (STR_NMATCH(lkt_skip_key(buff), "stop", 4)) { if (STR_NMATCH(lkt_skip_key(buff), "stop", 4)) {
if (!pos) if (!pos)
lkt_send_and_exit(cmd_play__, sizeof(cmd_play__)); /* In bytes. */ lkt_send_and_exit(cmd_play__, sizeof(cmd_play__)); /* In bytes. */
else else {
exit(write_socket_format(lkt_connect(), cmd_play_from__, pos)); write_socket(lkt_connect(), cmd_play_from__, pos);
exit(EXIT_SUCCESS);
}
} }
else else
...@@ -295,8 +297,7 @@ ping__(struct lkt_cmd_args *args) ...@@ -295,8 +297,7 @@ ping__(struct lkt_cmd_args *args)
fail("Invalid argument, the ping command takes no arguments"); fail("Invalid argument, the ping command takes no arguments");
char buff[6] = {0}; char buff[6] = {0};
FILE *sock = lkt_connect(); FILE *sock = lkt_connect();
if (write_socket(sock, "ping\nclose\n", sizeof("ping\n"))) write_socket(sock, "ping\nclose\n");
fail("Failed to send the ping to lektord");
read_socket(sock, buff, 6 * sizeof(char)); read_socket(sock, buff, 6 * sizeof(char));
if (!STR_NMATCH(buff, "OK", 2)) if (!STR_NMATCH(buff, "OK", 2))
fail("ACK"); fail("ACK");
...@@ -316,9 +317,7 @@ current__(struct lkt_cmd_args *args) ...@@ -316,9 +317,7 @@ current__(struct lkt_cmd_args *args)
char *mem = NULL; char *mem = NULL;
FILE *sock = lkt_connect(); FILE *sock = lkt_connect();
if (write_socket(sock, current_song__, sizeof(current_song__))) /* In bytes. */ write_socket(sock, current_song__);
exit(EXIT_FAILURE);
assert(mem = calloc(6 * LKT_MESSAGE_MAX, sizeof(char))); assert(mem = calloc(6 * LKT_MESSAGE_MAX, sizeof(char)));
assert(memset(mem, 0, 6 * LKT_MESSAGE_MAX * sizeof(char))); assert(memset(mem, 0, 6 * LKT_MESSAGE_MAX * sizeof(char)));
...@@ -382,9 +381,7 @@ queue_pop__(struct lkt_cmd_args *args) ...@@ -382,9 +381,7 @@ queue_pop__(struct lkt_cmd_args *args)
FILE *sock = lkt_connect(); FILE *sock = lkt_connect();
/* Get lektor's status. */ /* Get lektor's status. */
write_socket(sock, "status\n");
if (write_socket(sock, "status\n", sizeof("status\n")))
exit(EXIT_FAILURE);
#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; } #define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
for (;;) { for (;;) {
...@@ -405,7 +402,7 @@ queue_pop__(struct lkt_cmd_args *args) ...@@ -405,7 +402,7 @@ queue_pop__(struct lkt_cmd_args *args)
sock = lkt_connect(); sock = lkt_connect();
if (!songid) if (!songid)
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
write_socket_format(sock, "next\ndeleteid %d\n", songid); write_socket(sock, "next\ndeleteid %d\n", songid);
exit_with_status(sock, buff); exit_with_status(sock, buff);
} }
...@@ -429,8 +426,7 @@ status__(struct lkt_cmd_args *args) ...@@ -429,8 +426,7 @@ status__(struct lkt_cmd_args *args)
/* Get lektor's status. */ /* Get lektor's status. */
if (write_socket(sock, status_str__, strlen(status_str__))) write_socket(sock, status_str__);
goto error;
#define assign_flag(str, f) if (STR_NMATCH(buff, str, len) && (atoi(lkt_skip_key(buff)) == 1)) { flags[it++] = f; continue; } #define assign_flag(str, f) if (STR_NMATCH(buff, str, len) && (atoi(lkt_skip_key(buff)) == 1)) { flags[it++] = f; continue; }
#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; } #define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
...@@ -497,7 +493,7 @@ queue_delete__(struct lkt_cmd_args *args) ...@@ -497,7 +493,7 @@ queue_delete__(struct lkt_cmd_args *args)
sscanf(args->argv[0], "%d", &dumy); sscanf(args->argv[0], "%d", &dumy);
if (dumy != 0) { if (dumy != 0) {
fail_if(write_socket_format(sock, cmd_id__, dumy), "ACK"); write_socket(sock, cmd_id__, dumy);
exit_with_status(sock, buff); exit_with_status(sock, buff);
} }
...@@ -543,7 +539,7 @@ queue_seek__(struct lkt_cmd_args *args) ...@@ -543,7 +539,7 @@ queue_seek__(struct lkt_cmd_args *args)
fail("Invalid argument, must be only one integer"); fail("Invalid argument, must be only one integer");
FILE *sock = lkt_connect(); FILE *sock = lkt_connect();
fail_if(write_socket_format(sock, "playid %ld\n", id), "ACK"); write_socket(sock, "playid %ld\n", id);
exit_with_status(sock, buf); exit_with_status(sock, buf);
} }
...@@ -573,8 +569,10 @@ queue_pos__(struct lkt_cmd_args *args) ...@@ -573,8 +569,10 @@ queue_pos__(struct lkt_cmd_args *args)
FILE *sock = NULL; FILE *sock = NULL;
redo: redo:
sock = lkt_connect(); sock = lkt_connect();
fail_if(up != 0 && write_socket_format(sock, "playlist %d:%d\n", continuation, up), "ACK"); if (up != 0)
fail_if(up == 0 && write_socket_format(sock, "playlist %d\n", continuation), "ACK"); write_socket(sock, "playlist %d:%d\n", continuation, up);
else
write_socket(sock, "playlist %d\n", continuation);
for (;;) { for (;;) {
memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char));
...@@ -622,8 +620,7 @@ queue_list__(struct lkt_cmd_args *args) ...@@ -622,8 +620,7 @@ queue_list__(struct lkt_cmd_args *args)
/* Get the current pos to get limits for the playlist command. */ /* Get the current pos to get limits for the playlist command. */
sock = lkt_connect(); sock = lkt_connect();
if (write_socket(sock, "status\n", sizeof("status\n"))) write_socket(sock, "status\n");
fail("Communication error");
#define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; } #define assign_int(str, var) if (STR_NMATCH(buff, str, len)) { var = (atoi(lkt_skip_key(buff))); continue; }
for (;;) { for (;;) {
...@@ -680,7 +677,7 @@ plt_destroy__(struct lkt_cmd_args *args) ...@@ -680,7 +677,7 @@ plt_destroy__(struct lkt_cmd_args *args)
fail_if(args->argc != 1, "Invalid argument"); fail_if(args->argc != 1, "Invalid argument");
FILE *sock = lkt_connect(); FILE *sock = lkt_connect();
char buff[2]; char buff[2];
write_socket_format(sock, "rm %s\n", args->argv[0]); write_socket(sock, "rm %s\n", args->argv[0]);
exit_with_status(sock, buff); exit_with_status(sock, buff);
} }
...@@ -691,7 +688,7 @@ plt_create__(struct lkt_cmd_args *args) ...@@ -691,7 +688,7 @@ plt_create__(struct lkt_cmd_args *args)
FILE *sock = lkt_connect(); FILE *sock = lkt_connect();
char buff[2]; char buff[2];
write_socket_format(sock, "playlistadd %s\n", args->argv[0]); write_socket(sock, "playlistadd %s\n", args->argv[0]);
exit_with_status(sock, buff); exit_with_status(sock, buff);
} }
...@@ -701,15 +698,13 @@ stickers_get__(struct lkt_cmd_args *args) ...@@ -701,15 +698,13 @@ stickers_get__(struct lkt_cmd_args *args)
char buff[LKT_MESSAGE_MAX]; char buff[LKT_MESSAGE_MAX];
FILE *sock; FILE *sock;
if (args->argc == 2) if (args->argc == 2)
write_socket_format(sock = lkt_connect(), "sticker get %s %s\n", write_socket(sock = lkt_connect(), "sticker get %s %s\n", args->argv[0], args->argv[1]);
args->argv[0], args->argv[1]);
else if (args->argc == 3) else if (args->argc == 3)
write_socket_format(sock = lkt_connect(), "sticker get %s %s %s\n", write_socket(sock = lkt_connect(), "sticker get %s %s %s\n", args->argv[0], args->argv[1],
args->argv[0], args->argv[1], args->argv[2]); args->argv[2]);
else if (args->argc == 5) else if (args->argc == 5)
write_socket_format(sock = lkt_connect(), "sticker get %s %s %s %s %s\n", write_socket(sock = lkt_connect(), "sticker get %s %s %s %s %s\n", args->argv[0],
args->argv[0], args->argv[1], args->argv[2], args->argv[1], args->argv[2], args->argv[3], args->argv[4]);
args->argv[3], args->argv[4]);
else else
fail("Invalid argument"); fail("Invalid argument");
...@@ -730,7 +725,7 @@ stickers_set__(struct lkt_cmd_args *args) ...@@ -730,7 +725,7 @@ stickers_set__(struct lkt_cmd_args *args)
fail_if(args->argc != 4, "Invalid argument"); fail_if(args->argc != 4, "Invalid argument");
FILE *sock = lkt_connect(); FILE *sock = lkt_connect();
char buff[2]; char buff[2];
write_socket_format(sock, "sticker set %s %s %s %s\n", args->argv[0], write_socket(sock, "sticker set %s %s %s %s\n", args->argv[0],
args->argv[1], args->argv[2], args->argv[3]); args->argv[1], args->argv[2], args->argv[3]);
exit_with_status(sock, buff); exit_with_status(sock, buff);
} }
...@@ -741,10 +736,10 @@ stickers_delete__(struct lkt_cmd_args *args) ...@@ -741,10 +736,10 @@ stickers_delete__(struct lkt_cmd_args *args)
FILE *sock; FILE *sock;
char buff[2]; char buff[2];
if (args->argc == 2) if (args->argc == 2)
write_socket_format(sock = lkt_connect(), "sticker delete %s %s", write_socket(sock = lkt_connect(), "sticker delete %s %s",
args->argv[0], args->argv[1]); args->argv[0], args->argv[1]);
else if (args->argc == 3) else if (args->argc == 3)
write_socket_format(sock = lkt_connect(), "sticker delete %s %s %s", write_socket(sock = lkt_connect(), "sticker delete %s %s %s",
args->argv[0], args->argv[1], args->argv[2]); args->argv[0], args->argv[1], args->argv[2]);
else else
fail("Invalid argument"); fail("Invalid argument");
...@@ -765,10 +760,10 @@ search_with_cmd__(struct lkt_cmd_args *args, const char *cmd) ...@@ -765,10 +760,10 @@ search_with_cmd__(struct lkt_cmd_args *args, const char *cmd)
redo: redo:
sock = lkt_connect(); sock = lkt_connect();
write_socket_format(sock, "%d %s", continuation, cmd); write_socket(sock, "%d %s", continuation, cmd);
for (i = 0; i < args->argc; ++i) for (i = 0; i < args->argc; ++i)
write_socket_format(sock, " %s", args->argv[i]); write_socket(sock, " %s", args->argv[i]);
(void) write_socket(sock, "\n", sizeof("\n") / sizeof(char)); write_socket(sock, "\n");
for (;;) { for (;;) {
memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char)); memset(buff, 0, LKT_MESSAGE_MAX * sizeof(char));
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter