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;
}
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
View File
@@ -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;
+8 -6
View File
@@ -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) {
+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)",
__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) {
+5 -5
View File
@@ -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) {
+3 -3
View File
@@ -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");
+3 -3
View File
@@ -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...