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;
|
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
@@ -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;
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
@@ -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...
|
||||||
|
|||||||
Reference in New Issue
Block a user