Added the client_function timeout to the code.

Also noticed a BIG bug in the screen_set code, the strcmp's never worked, they
where no longer checking the results == 0.
This commit is contained in:
glengray
2001-11-12 17:35:43 +00:00
parent 91c430a8c4
commit e137c1011b
4 changed files with 66 additions and 11 deletions
+29 -11
View File
@@ -589,9 +589,9 @@ screen_set_func (client * c, int argc, char **argv)
p = argv[i]; p = argv[i];
if (*p == '-') if (*p == '-')
p++; p++;
// Handle the "name" parameter // Handle the "name" parameter
if (strcmp (p, "name")) { if (strcmp (p, "name") == 0) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: name=\"%s\"\n", argv[i]); debug ("screen_set: name=\"%s\"\n", argv[i]);
@@ -606,7 +606,7 @@ screen_set_func (client * c, int argc, char **argv)
} }
} }
// Handle the "priority" parameter // Handle the "priority" parameter
else if (strcmp (p, "priority")) { else if (strcmp (p, "priority") == 0) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: priority=\"%s\"\n", argv[i]); debug ("screen_set: priority=\"%s\"\n", argv[i]);
@@ -621,7 +621,7 @@ screen_set_func (client * c, int argc, char **argv)
} }
} }
// Handle the "duration" parameter // Handle the "duration" parameter
else if (strcmp (p, "duration")) { else if (strcmp (p, "duration") == 0) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: duration=\"%s\"\n", argv[i]); debug ("screen_set: duration=\"%s\"\n", argv[i]);
@@ -636,7 +636,7 @@ screen_set_func (client * c, int argc, char **argv)
} }
} }
// Handle the "heartbeat" parameter // Handle the "heartbeat" parameter
else if (strcmp (p, "heartbeat")) { else if (strcmp (p, "heartbeat") == 0) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: heartbeat=\"%s\"\n", argv[i]); debug ("screen_set: heartbeat=\"%s\"\n", argv[i]);
@@ -662,7 +662,7 @@ screen_set_func (client * c, int argc, char **argv)
} }
} }
// Handle the "wid" parameter // Handle the "wid" parameter
else if (strcmp (p, "wid")) { else if (strcmp (p, "wid") == 0) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: wid=\"%s\"\n", argv[i]); debug ("screen_set: wid=\"%s\"\n", argv[i]);
@@ -675,9 +675,10 @@ screen_set_func (client * c, int argc, char **argv)
} else { } else {
sock_send_string (c->sock, "huh? -wid requires a parameter\n"); sock_send_string (c->sock, "huh? -wid requires a parameter\n");
} }
} }
// Handle the "hgt" parameter // Handle the "hgt" parameter
else if (strcmp (p, "hgt")) { else if (strcmp (p, "hgt") == 0) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: hgt=\"%s\"\n", argv[i]); debug ("screen_set: hgt=\"%s\"\n", argv[i]);
@@ -690,11 +691,28 @@ screen_set_func (client * c, int argc, char **argv)
} else { } else {
sock_send_string (c->sock, "huh? -hgt requires a parameter\n"); sock_send_string (c->sock, "huh? -hgt requires a parameter\n");
} }
} else {
sock_send_string (c->sock, "huh? invalid parameter\n");
} }
} // done checking argv // Handle the "timeout" parameter
else if (strcmp (p, "timeout") == 0) {
if (argc > i + 1) {
i++;
syslog(LOG_NOTICE, "Setting timeout.");
debug ("screen_set: timeout=\"%s\"\n", argv[i]);
// set the duration...
number = atoi (argv[i]);
// Add the timeout value (count of TIME_UNITS)
// to struct, TIME_UNIT is 1/8th of a second
if (number > 0) {
s->timeout = number;
syslog(LOG_NOTICE, "Timeout set.");
}
sock_send_string(c->sock, "success\n");
} else {
sock_send_string (c->sock, "huh? -timeout requires a parameter\n");
}
}
else sock_send_string (c->sock, "huh? invalid parameter\n");
}// done checking argv
return 0; return 0;
} }
+34
View File
@@ -565,6 +565,8 @@ void
do_mainloop () do_mainloop ()
{ {
screen *s = NULL; screen *s = NULL;
char *message=NULL;
//char buf[64]; //char buf[64];
// FIXME: s should still be null from initialization.... what's happening here?! // FIXME: s should still be null from initialization.... what's happening here?!
@@ -616,6 +618,38 @@ do_mainloop ()
no_screen_screen (timer); no_screen_screen (timer);
usleep (TIME_UNIT); usleep (TIME_UNIT);
//Check to see if the screen has a timeout value, if it does
//decrese it and then check to see if it has excpired.
//Remove if expired.
if((message = malloc(256)) == NULL)
syslog(LOG_NOTICE, "Error allocating message string");
else {
snprintf(message, 256, "Screen->%s has timeout->%d", s->name, s->timeout);
syslog(LOG_NOTICE, message);
free(message);
}
if (s && s->timeout != -1) {
--(s->timeout);
if((message = malloc(256)) == NULL)
syslog(LOG_NOTICE, "Error allocating message string");
else {
snprintf(message, 256, "Timeout matches check, has timeout->%d", s->name, s->timeout);
syslog(LOG_NOTICE, message);
free(message);
}
if (s->timeout <= 0) {
screen_remove (s->parent, s->id);
if((message = malloc(256)) == NULL)
syslog(LOG_NOTICE, "Error allocating message string");
else {
snprintf(message, 256, "Removing screen %s which has timeout->%d", s->name, s->timeout);
syslog(LOG_NOTICE, message);
free(message);
}
}
}
} }
// Quit! // Quit!
+2
View File
@@ -14,6 +14,7 @@
#include "main.h" #include "main.h"
int default_duration = 0; int default_duration = 0;
int default_timeout = -1;
screen * screen *
screen_create () screen_create ()
@@ -36,6 +37,7 @@ screen_create ()
s->keys = NULL; s->keys = NULL;
s->parent = NULL; s->parent = NULL;
s->widgets = NULL; s->widgets = NULL;
s->timeout = default_timeout; //ignored unless greater than 0.
s->widgets = LL_new (); s->widgets = LL_new ();
if (!s->widgets) { if (!s->widgets) {
+1
View File
@@ -11,6 +11,7 @@ typedef struct screen {
int priority; int priority;
int duration; int duration;
int heartbeat; int heartbeat;
int timeout;
char *keys; char *keys;
LinkedList *widgets; LinkedList *widgets;
client *parent; client *parent;