first steps towards supporting the "bye" command
This commit is contained in:
+2
-2
@@ -53,7 +53,7 @@ Client *client_create(int sock)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
c->ack = 0;
|
||||
c->state = NEW;
|
||||
c->name = NULL;
|
||||
c->menu = NULL;
|
||||
|
||||
@@ -110,7 +110,7 @@ client_destroy(Client *c)
|
||||
input_release_client_keys(c);
|
||||
|
||||
/* Free client's other data */
|
||||
c->ack = 0;
|
||||
c->state = GONE;
|
||||
|
||||
/* Clean up the name...*/
|
||||
if (c->name)
|
||||
|
||||
+7
-1
@@ -23,9 +23,15 @@
|
||||
|
||||
#define CLIENT_NAME_SIZE 256
|
||||
|
||||
typedef enum _clientstate {
|
||||
NEW,
|
||||
ACTIVE,
|
||||
GONE
|
||||
} ClientState;
|
||||
|
||||
typedef struct Client {
|
||||
char *name;
|
||||
int ack;
|
||||
ClientState state;
|
||||
int sock;
|
||||
int backlight;
|
||||
int heartbeat;
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "client.h"
|
||||
#include "input.h"
|
||||
|
||||
|
||||
/***************************************************************
|
||||
* Debugging only.. prints out a list of arguments it receives
|
||||
*/
|
||||
@@ -73,7 +74,7 @@ hello_func(Client *c, int argc, char **argv)
|
||||
display_props->cellwidth, display_props->cellheight);
|
||||
|
||||
/* make note that client has sent hello */
|
||||
c->ack = 1;
|
||||
c->state = ACTIVE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -91,6 +92,7 @@ bye_func(Client *c, int argc, char **argv)
|
||||
if (c != NULL) {
|
||||
debug(RPT_INFO, "Bye, %s!", (c->name != NULL) ? c->name : "unknown client");
|
||||
|
||||
c->state = GONE;
|
||||
sock_send_error(c->sock, "\"bye\" is currently ignored\n");
|
||||
}
|
||||
return 0;
|
||||
@@ -106,7 +108,7 @@ client_set_func(Client *c, int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 3) {
|
||||
@@ -164,7 +166,7 @@ client_add_key_func(Client *c, int argc, char **argv)
|
||||
int exclusively = 0;
|
||||
int argnr;
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc < 2) {
|
||||
@@ -206,7 +208,7 @@ client_del_key_func(Client *c, int argc, char **argv)
|
||||
{
|
||||
int argnr;
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc < 2) {
|
||||
@@ -230,7 +232,7 @@ client_del_key_func(Client *c, int argc, char **argv)
|
||||
int
|
||||
backlight_func(Client *c, int argc, char **argv)
|
||||
{
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 2) {
|
||||
@@ -276,7 +278,7 @@ backlight_func(Client *c, int argc, char **argv)
|
||||
int
|
||||
info_func(Client *c, int argc, char **argv)
|
||||
{
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc > 1) {
|
||||
|
||||
@@ -97,7 +97,7 @@ menu_add_item_func(Client *c, int argc, char **argv)
|
||||
|
||||
debug(RPT_DEBUG, "%s(Client [%d], %s, %s)",
|
||||
__FUNCTION__, c->sock, argv[1], argv[2]);
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (c->name == NULL) {
|
||||
@@ -237,7 +237,7 @@ menu_del_item_func(Client *c, int argc, char **argv)
|
||||
char *menu_id;
|
||||
char *item_id;
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 3) {
|
||||
@@ -443,7 +443,7 @@ menu_set_item_func(Client *c, int argc, char **argv)
|
||||
|
||||
debug(RPT_DEBUG, "%s(Client [%d]: %s)",
|
||||
__FUNCTION__, c->sock, argv2string(argc, argv));
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc < 4) {
|
||||
@@ -726,7 +726,7 @@ menu_goto_func(Client * c, int argc, char **argv)
|
||||
debug(RPT_DEBUG, "%s(Client [%d], %s, %s)",
|
||||
__FUNCTION__, c->sock, ((argc > 1) ? argv[1] : "<null>"),
|
||||
((argc > 2) ? argv[2] : "<null>"));
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if ((argc < 2) || (argc > 3)) {
|
||||
@@ -845,7 +845,7 @@ menu_set_main_func(Client *c, int argc, char **argv)
|
||||
debug(RPT_DEBUG, "%s(Client [%d], %s, %s)",
|
||||
__FUNCTION__, c->sock, ((argc > 1) ? argv[1] : "<null>"),
|
||||
((argc > 2) ? argv[2] : "<null>"));
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 2) {
|
||||
|
||||
@@ -44,7 +44,7 @@ screen_add_func(Client *c, int argc, char **argv)
|
||||
int err = 0;
|
||||
Screen *s;
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 2) {
|
||||
@@ -88,7 +88,7 @@ screen_del_func(Client *c, int argc, char **argv)
|
||||
int err = 0;
|
||||
Screen *s;
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 2) {
|
||||
@@ -139,7 +139,7 @@ screen_set_func(Client *c, int argc, char **argv)
|
||||
char *id;
|
||||
Screen * s;
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc == 1) {
|
||||
@@ -424,7 +424,7 @@ screen_add_key_func(Client *c, int argc, char **argv)
|
||||
char *id; /* Screen ID */
|
||||
char *keys; /* Keys wanted */
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 3) {
|
||||
@@ -500,7 +500,7 @@ screen_del_key_func(Client *c, int argc, char **argv)
|
||||
char *id; /* Screen ID */
|
||||
char *keys; /* Keys wanted */
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 3) {
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
int
|
||||
output_func(Client *c, int argc, char **argv)
|
||||
{
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 2) {
|
||||
@@ -110,7 +110,7 @@ sleep_func(Client *c, int argc, char **argv)
|
||||
#define MAX_SECS 60
|
||||
#define MIN_SECS 1
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 2) {
|
||||
@@ -170,7 +170,7 @@ sleep_func(Client *c, int argc, char **argv)
|
||||
int
|
||||
noop_func(Client *c, int argc, char **argv)
|
||||
{
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
sock_send_string(c->sock, "noop complete\n");
|
||||
|
||||
@@ -51,7 +51,7 @@ widget_add_func(Client *c, int argc, char **argv)
|
||||
Screen * s;
|
||||
Widget * w;
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if ((argc < 4) || (argc > 6)) {
|
||||
@@ -137,7 +137,7 @@ widget_del_func(Client *c, int argc, char **argv)
|
||||
Screen *s;
|
||||
Widget *w;
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
if (argc != 3) {
|
||||
@@ -194,7 +194,7 @@ widget_set_func(Client *c, int argc, char **argv)
|
||||
Screen *s;
|
||||
Widget *w;
|
||||
|
||||
if (!c->ack)
|
||||
if (c->state != ACTIVE)
|
||||
return 1;
|
||||
|
||||
/* If there weren't enough parameters...
|
||||
|
||||
Reference in New Issue
Block a user