first steps towards supporting the "bye" command

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