Reporting patch.
This commit is contained in:
@@ -52,8 +52,11 @@ Bind=127.0.0.1
|
||||
Port=13666
|
||||
# Listen on this specified port; defaults to 13666.
|
||||
|
||||
#Debug=5
|
||||
# Sets the debugging level; defaults to 0 (no debugging output).
|
||||
#ReportLevel=3
|
||||
# Sets the reporting level; defaults to 2 (warnings and errors only).
|
||||
|
||||
#ReportToSyslog=yes
|
||||
# Should we report to syslog instead of stderr ? Default: no
|
||||
|
||||
WaitTime=5
|
||||
# Sets the default time in seconds to displays a screen.
|
||||
|
||||
@@ -66,6 +66,8 @@
|
||||
/* Define the protocol version */
|
||||
#undef PROTOCOL_VERSION
|
||||
|
||||
#undef API_VERSION
|
||||
|
||||
#undef SLI_DRV
|
||||
|
||||
#undef SOLARIS
|
||||
|
||||
@@ -109,6 +109,8 @@ AC_DEFINE_UNQUOTED(LCDPORT, $LCDPORT)
|
||||
|
||||
AC_DEFINE_UNQUOTED(PROTOCOL_VERSION, "0.3")
|
||||
|
||||
AC_DEFINE_UNQUOTED(API_VERSION, "0.4")
|
||||
|
||||
|
||||
AC_ARG_WITH(loadmax,
|
||||
[ --with-loadmax=<load> Max Load Avg at which the backlight will]
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
|
||||
#include "client_data.h"
|
||||
#include "screen.h"
|
||||
@@ -34,14 +34,14 @@ client_data_init (client_data * d)
|
||||
|
||||
d->screenlist = NewScreen();
|
||||
if (!d->screenlist) {
|
||||
fprintf (stderr, "client_data_init: Error allocating screenlist\n");
|
||||
report( RPT_ERR, "client_data_init: Error allocating screenlist");
|
||||
return -1;
|
||||
}
|
||||
/* TODO: this section... (client menus)
|
||||
d->menulist = LL_new();
|
||||
if(!d->menulist)
|
||||
{
|
||||
fprintf(stderr, "client_data_init: Error allocating menulist\n");
|
||||
report( RPT_ERR, "client_data_init: Error allocating menulist");
|
||||
return -1;
|
||||
}
|
||||
*/
|
||||
@@ -53,7 +53,7 @@ client_data_destroy (client_data * d)
|
||||
{
|
||||
screen *s;
|
||||
|
||||
debug ("client_data_destroy\n");
|
||||
report( RPT_INFO, "client_data_destroy");
|
||||
|
||||
if (!d)
|
||||
return -1;
|
||||
@@ -69,18 +69,18 @@ client_data_destroy (client_data * d)
|
||||
free (d->client_keys);
|
||||
|
||||
// Clean up the screenlist...
|
||||
debug ("client_data_destroy: Cleaning screenlist\n");
|
||||
debug( RPT_DEBUG, "client_data_destroy: Cleaning screenlist");
|
||||
ResetScreenList (d->screenlist);
|
||||
do {
|
||||
s = NextScreen(d->screenlist);
|
||||
if (s) {
|
||||
debug ("client_data_destroy: removing screen %s\n", s->id);
|
||||
debug( RPT_DEBUG, "client_data_destroy: removing screen %s", s->id);
|
||||
|
||||
// FIXME? This shouldn't be handled here...
|
||||
// Now, remove it from the screenlist...
|
||||
if (screenlist_remove_all (s) < 0) {
|
||||
// Not a serious error..
|
||||
fprintf (stderr, "client_data_destroy: Error dequeueing screen\n");
|
||||
report( RPT_ERR, "client_data_destroy: Error dequeueing screen");
|
||||
return 0;
|
||||
}
|
||||
// Free its memory...
|
||||
|
||||
+64
-69
@@ -1,12 +1,12 @@
|
||||
/*
|
||||
client_functions.c
|
||||
|
||||
|
||||
This contains definitions for all the functions which clients can run.
|
||||
The functions here are to be called only from parse.c's interpreter.
|
||||
|
||||
|
||||
The client's available function set is defined here, as is the syntax
|
||||
for each command.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
@@ -15,9 +15,8 @@
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
#include "shared/sockets.h"
|
||||
|
||||
#include "drivers/lcd.h"
|
||||
@@ -83,7 +82,7 @@ test_func_func (client * c, int argc, char **argv)
|
||||
|
||||
for (i = 0; i < argc; i++) {
|
||||
snprintf (str, sizeof(str), "test_func_func: %i -> %s\n", i, argv[i]);
|
||||
printf (str);
|
||||
report (RPT_INFO, str);
|
||||
sock_send_string (c->sock, str);
|
||||
}
|
||||
return 0;
|
||||
@@ -107,7 +106,7 @@ hello_func (client * c, int argc, char **argv)
|
||||
sock_send_string (c->sock, "huh? extra parameters ignored\n");
|
||||
}
|
||||
|
||||
debug ("Hello!\n");
|
||||
debug(RPT_INFO, "Hello!");
|
||||
|
||||
memset(str, '\0', sizeof(str));
|
||||
snprintf (str, sizeof(str), "connect LCDproc %s protocol %s lcd wid %i hgt %i cellwid %i cellhgt %i\n",
|
||||
@@ -178,9 +177,7 @@ client_set_func (client * c, int argc, char **argv)
|
||||
} else {
|
||||
strncpy(str, argv[i], sizeof(str) - 1);
|
||||
|
||||
debug ("client_set: name=\"%s\"\n", argv[i]);
|
||||
|
||||
syslog(LOG_INFO, "client set name to %s", str);
|
||||
debug(RPT_DEBUG, "client_set: name=\"%s\"", argv[i]);
|
||||
|
||||
// set the name...
|
||||
if (c->data->name)
|
||||
@@ -229,7 +226,7 @@ client_add_key_func (client * c, int argc, char **argv)
|
||||
}
|
||||
|
||||
keys = argv[1];
|
||||
debug ("client_add_key: current client will handle key(s) %s\n", keys);
|
||||
debug(RPT_DEBUG, "client_add_key: current client will handle key(s) %s", keys);
|
||||
|
||||
if (!c->data->client_keys) {
|
||||
// No keys list, create a new one
|
||||
@@ -287,7 +284,7 @@ client_del_key_func (client * c, int argc, char **argv)
|
||||
}
|
||||
|
||||
keys = argv[1] ;
|
||||
debug ("client_del_key: Deleting key(s) %s from client_keys\n", keys);
|
||||
debug(RPT_DEBUG, "client_del_key: Deleting key(s) %s from client_keys", keys);
|
||||
|
||||
if (c->data->client_keys) {
|
||||
// Client has keys, remove keys from the list
|
||||
@@ -350,7 +347,7 @@ screen_add_key_func (client * c, int argc, char **argv)
|
||||
|
||||
id = argv[1];
|
||||
keys = argv[2];
|
||||
debug ("screen_add_key: Adding key(s) %s to screen %s\n", keys, id);
|
||||
debug(RPT_DEBUG, "screen_add_key: Adding key(s) %s to screen %s", keys, id);
|
||||
|
||||
// Find the screen
|
||||
s = screen_find (c, id);
|
||||
@@ -422,7 +419,7 @@ screen_del_key_func (client * c, int argc, char **argv)
|
||||
|
||||
id = argv[1] ;
|
||||
keys = argv[2] ;
|
||||
debug ("screen_del_key: Deleting key(s) %s from screen %s\n", keys, id);
|
||||
debug(RPT_DEBUG, "screen_del_key: Deleting key(s) %s from screen %s", keys, id);
|
||||
|
||||
// Find the screen
|
||||
s = screen_find (c, id);
|
||||
@@ -487,7 +484,7 @@ screen_add_func (client * c, int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
debug ("screen_add: Adding screen %s\n", argv[1]);
|
||||
debug(RPT_DEBUG, "screen_add: Adding screen %s", argv[1]);
|
||||
|
||||
memset(scr, '\0', sizeof(scr));
|
||||
strncpy(scr, argv[1], sizeof(scr) - 1);
|
||||
@@ -496,12 +493,12 @@ screen_add_func (client * c, int argc, char **argv)
|
||||
if (err == 0)
|
||||
sock_send_string(c->sock, "success\n");
|
||||
else if (err < 0) {
|
||||
fprintf (stderr, "screen_add_func: Error adding screen\n");
|
||||
report(RPT_WARNING, "screen_add_func: Error adding screen");
|
||||
sock_send_string (c->sock, "huh? failed to add screen id#\n");
|
||||
} else
|
||||
sock_send_string (c->sock, "huh? You already have a screen with that id#\n");
|
||||
|
||||
syslog(LOG_NOTICE, "added a screen (%s) to the display", scr);
|
||||
report(RPT_NOTICE, "added a screen (%s) to the display", scr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -527,7 +524,7 @@ screen_del_func (client * c, int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
debug ("screen_del: Deleting screen %s\n", argv[1]);
|
||||
debug (RPT_DEBUG, "screen_del: Deleting screen %s", argv[1]);
|
||||
|
||||
// Enforce bounds limits on argv[1]
|
||||
memset(scr, '\0', sizeof(scr));
|
||||
@@ -537,12 +534,12 @@ screen_del_func (client * c, int argc, char **argv)
|
||||
if ( err == 0 )
|
||||
sock_send_string(c->sock, "success\n");
|
||||
else if (err < 0) {
|
||||
fprintf (stderr, "screen_del_func: Error removing screen\n");
|
||||
report(RPT_WARNING, "screen_del_func: Error removing screen");
|
||||
sock_send_string(c->sock, "huh? failed to remove screen\n");
|
||||
} else
|
||||
sock_send_string (c->sock, "huh? You don't have a screen with that id#\n");
|
||||
|
||||
syslog(LOG_NOTICE, "removed a screen (%s) from the display", scr);
|
||||
report(RPT_NOTICE, "removed a screen (%s) from the display", scr);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -589,12 +586,12 @@ screen_set_func (client * c, int argc, char **argv)
|
||||
p = argv[i];
|
||||
if (*p == '-')
|
||||
p++;
|
||||
|
||||
|
||||
// Handle the "name" parameter
|
||||
if (strcmp (p, "name") == 0) {
|
||||
if (argc > i + 1) {
|
||||
i++;
|
||||
debug ("screen_set: name=\"%s\"\n", argv[i]);
|
||||
debug (RPT_DEBUG, "screen_set: name=\"%s\"", argv[i]);
|
||||
|
||||
// set the name...
|
||||
if (s->name)
|
||||
@@ -609,7 +606,7 @@ screen_set_func (client * c, int argc, char **argv)
|
||||
else if (strcmp (p, "priority") == 0) {
|
||||
if (argc > i + 1) {
|
||||
i++;
|
||||
debug ("screen_set: priority=\"%s\"\n", argv[i]);
|
||||
debug (RPT_DEBUG, "screen_set: priority=\"%s\"", argv[i]);
|
||||
|
||||
// set the priority...
|
||||
number = atoi (argv[i]);
|
||||
@@ -624,7 +621,7 @@ screen_set_func (client * c, int argc, char **argv)
|
||||
else if (strcmp (p, "duration") == 0) {
|
||||
if (argc > i + 1) {
|
||||
i++;
|
||||
debug ("screen_set: duration=\"%s\"\n", argv[i]);
|
||||
debug (RPT_DEBUG, "screen_set: duration=\"%s\"", argv[i]);
|
||||
|
||||
// set the duration...
|
||||
number = atoi (argv[i]);
|
||||
@@ -639,7 +636,7 @@ screen_set_func (client * c, int argc, char **argv)
|
||||
else if (strcmp (p, "heartbeat") == 0) {
|
||||
if (argc > i + 1) {
|
||||
i++;
|
||||
debug ("screen_set: heartbeat=\"%s\"\n", argv[i]);
|
||||
debug (RPT_DEBUG, "screen_set: heartbeat=\"%s\"", argv[i]);
|
||||
|
||||
// set the heartbeat type...
|
||||
if (0 == strcmp (argv[i], "on"))
|
||||
@@ -665,7 +662,7 @@ screen_set_func (client * c, int argc, char **argv)
|
||||
else if (strcmp (p, "wid") == 0) {
|
||||
if (argc > i + 1) {
|
||||
i++;
|
||||
debug ("screen_set: wid=\"%s\"\n", argv[i]);
|
||||
debug (RPT_DEBUG, "screen_set: wid=\"%s\"", argv[i]);
|
||||
|
||||
// set the duration...
|
||||
number = atoi (argv[i]);
|
||||
@@ -675,13 +672,13 @@ screen_set_func (client * c, int argc, char **argv)
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -wid requires a parameter\n");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
// Handle the "hgt" parameter
|
||||
else if (strcmp (p, "hgt") == 0) {
|
||||
if (argc > i + 1) {
|
||||
i++;
|
||||
debug ("screen_set: hgt=\"%s\"\n", argv[i]);
|
||||
debug (RPT_DEBUG, "screen_set: hgt=\"%s\"", argv[i]);
|
||||
|
||||
// set the duration...
|
||||
number = atoi (argv[i]);
|
||||
@@ -696,43 +693,42 @@ screen_set_func (client * c, int argc, char **argv)
|
||||
else if (strcmp (p, "timeout") == 0) {
|
||||
if (argc > i + 1) {
|
||||
i++;
|
||||
syslog(LOG_NOTICE, "Setting timeout.");
|
||||
debug ("screen_set: timeout=\"%s\"\n", argv[i]);
|
||||
debug (RPT_DEBUG, "screen_set: timeout=\"%s\"", 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.");
|
||||
report(RPT_NOTICE, "Timeout set.");
|
||||
}
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -timeout requires a parameter\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Handle the backlight parameter
|
||||
else if (strcmp (argv[i], "backlight") == 0) {
|
||||
if (argc > i + 1) {
|
||||
i++;
|
||||
debug ("screen_set: backlight=\"%s\"\n", argv[i]);
|
||||
debug (RPT_DEBUG, "screen_set: backlight=\"%s\"", argv[i]);
|
||||
// set the backlight status based on what the client has set
|
||||
switch(c->backlight_state) {
|
||||
case BACKLIGHT_OPEN:
|
||||
if (strcmp ("on", argv[i]) == 0)
|
||||
s->backlight_state = BACKLIGHT_ON;
|
||||
|
||||
|
||||
if (strcmp ("off", argv[i]) == 0)
|
||||
s->backlight_state = BACKLIGHT_OFF;
|
||||
|
||||
|
||||
if (strcmp ("toggle", argv[i]) == 0) {
|
||||
if (s->backlight_state == BACKLIGHT_ON)
|
||||
s->backlight_state = BACKLIGHT_OFF;
|
||||
else if (s-backlight_state == BACKLIGHT_OFF)
|
||||
s->backlight_state = BACKLIGHT_ON;
|
||||
}
|
||||
|
||||
|
||||
if (strcmp ("blink", argv[i]) == 0)
|
||||
s->backlight_state |= BACKLIGHT_BLINK;
|
||||
|
||||
@@ -824,7 +820,7 @@ widget_add_func (client * c, int argc, char **argv)
|
||||
if (err == 0)
|
||||
sock_send_string(c->sock, "success\n");
|
||||
else {
|
||||
fprintf (stderr, "widget_add_func: Error adding widget\n");
|
||||
report(RPT_WARNING, "widget_add_func: Error adding widget");
|
||||
sock_send_string(c->sock, "huh? failed\n");
|
||||
}
|
||||
|
||||
@@ -866,7 +862,7 @@ widget_del_func (client * c, int argc, char **argv)
|
||||
sid = argv[1];
|
||||
wid = argv[2];
|
||||
|
||||
debug ("screen_del: Deleting widget %s.%s\n", sid, wid);
|
||||
debug (RPT_DEBUG, "screen_del: Deleting widget %s.%s", sid, wid);
|
||||
|
||||
s = screen_find (c, sid);
|
||||
if (!s) {
|
||||
@@ -877,7 +873,7 @@ widget_del_func (client * c, int argc, char **argv)
|
||||
if (err == 0)
|
||||
sock_send_string(c->sock, "success\n");
|
||||
else {
|
||||
fprintf (stderr, "widget_del_func: Error removing widget\n");
|
||||
report( RPT_WARNING, "widget_del_func: Error removing widget");
|
||||
sock_send_string(c->sock, "huh? failed\n");
|
||||
}
|
||||
|
||||
@@ -942,10 +938,9 @@ widget_set_func (client * c, int argc, char **argv)
|
||||
// Client Debugging...
|
||||
{
|
||||
int i;
|
||||
fprintf (stderr, "huh? Invalid widget id (%s)\n", wid);
|
||||
report( RPT_WARNING, "huh? Invalid widget id (%s)", wid);
|
||||
for (i = 0; i < argc; i++)
|
||||
fprintf (stderr, "%s ", argv[i]);
|
||||
fprintf (stderr, "\n");
|
||||
report( RPT_WARNING, " %.40s ", argv[i]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -969,10 +964,10 @@ widget_set_func (client * c, int argc, char **argv)
|
||||
free (w->text);
|
||||
w->text = strdup (argv[i + 2]);
|
||||
if (!w->text) {
|
||||
fprintf (stderr, "widget_set_func: Error allocating string\n");
|
||||
report( RPT_WARNING, "widget_set_func: Error allocating string");
|
||||
return -1;
|
||||
}
|
||||
debug ("Widget %s set to %s\n", wid, w->text);
|
||||
debug (RPT_DEBUG, "Widget %s set to %s", wid, w->text);
|
||||
sock_send_string(c->sock, "success\n");
|
||||
}
|
||||
}
|
||||
@@ -992,7 +987,7 @@ widget_set_func (client * c, int argc, char **argv)
|
||||
w->y = y;
|
||||
w->length = length;
|
||||
}
|
||||
debug ("Widget %s set to %i\n", wid, w->length);
|
||||
debug (RPT_DEBUG, "Widget %s set to %i", wid, w->length);
|
||||
sock_send_string(c->sock, "success\n");
|
||||
}
|
||||
break;
|
||||
@@ -1011,7 +1006,7 @@ widget_set_func (client * c, int argc, char **argv)
|
||||
w->y = y;
|
||||
w->length = length;
|
||||
}
|
||||
debug ("Widget %s set to %i\n", wid, w->length);
|
||||
debug (RPT_DEBUG, "Widget %s set to %i", wid, w->length);
|
||||
sock_send_string(c->sock, "success\n");
|
||||
}
|
||||
break;
|
||||
@@ -1040,10 +1035,10 @@ widget_set_func (client * c, int argc, char **argv)
|
||||
free (w->text);
|
||||
w->text = strdup (argv[i]);
|
||||
if (!w->text) {
|
||||
fprintf (stderr, "widget_set_func: Error allocating string\n");
|
||||
report( RPT_WARNING, "widget_set_func: Error allocating string");
|
||||
return -1;
|
||||
}
|
||||
debug ("Widget %s set to %s\n", wid, w->text);
|
||||
debug (RPT_DEBUG, "Widget %s set to %s", wid, w->text);
|
||||
sock_send_string(c->sock, "success\n");
|
||||
}
|
||||
break;
|
||||
@@ -1058,17 +1053,17 @@ widget_set_func (client * c, int argc, char **argv)
|
||||
sock_send_string (c->sock, "huh? Invalid coordinates\n");
|
||||
} else {
|
||||
left = atoi (argv[i]);
|
||||
//debug("left: %d\n",left);
|
||||
//debug("left: %d",left);
|
||||
top = atoi (argv[i + 1]);
|
||||
//debug("top: %d\n",top);
|
||||
//debug("top: %d",top);
|
||||
right = atoi (argv[i + 2]);
|
||||
//debug("right: %d\n",right);
|
||||
//debug("right: %d",right);
|
||||
bottom = atoi (argv[i + 3]);
|
||||
//debug("bottom: %d\n",bottom);
|
||||
//debug("bottom: %d",bottom);
|
||||
direction = (int) (argv[i + 4][0]);
|
||||
//debug("dir: %c\n",(char)direction);
|
||||
//debug("dir: %c",(char)direction);
|
||||
speed = atoi (argv[i + 5]);
|
||||
//debug("speed: %d\n",speed);
|
||||
//debug("speed: %d",speed);
|
||||
// Direction must be v or h
|
||||
if (((char) direction != 'h') && ((char) direction != 'v')) {
|
||||
sock_send_string (c->sock, "huh? Invalid direction\n");
|
||||
@@ -1084,10 +1079,10 @@ widget_set_func (client * c, int argc, char **argv)
|
||||
w->text = strdup (argv[i + 6]);
|
||||
if (!w->text) {
|
||||
sock_send_string(c->sock, "huh? out of memory\n");
|
||||
fprintf (stderr, "widget_set_func: Error allocating string\n");
|
||||
report( RPT_WARNING, "widget_set_func: Error allocating string");
|
||||
return -1;
|
||||
}
|
||||
debug ("Widget %s set to %s\n", wid, w->text);
|
||||
debug (RPT_DEBUG, "Widget %s set to %s", wid, w->text);
|
||||
sock_send_string(c->sock, "success\n");
|
||||
}
|
||||
}
|
||||
@@ -1106,21 +1101,21 @@ widget_set_func (client * c, int argc, char **argv)
|
||||
sock_send_string (c->sock, "huh? Invalid coordinates\n");
|
||||
} else {
|
||||
left = atoi (argv[i]);
|
||||
//debug("left: %d\n",left);
|
||||
//debug("left: %d",left);
|
||||
top = atoi (argv[i + 1]);
|
||||
//debug("top: %d\n",top);
|
||||
//debug("top: %d",top);
|
||||
right = atoi (argv[i + 2]);
|
||||
//debug("right: %d\n",right);
|
||||
//debug("right: %d",right);
|
||||
bottom = atoi (argv[i + 3]);
|
||||
//debug("bottom: %d\n",bottom);
|
||||
//debug("bottom: %d",bottom);
|
||||
width = atoi (argv[i + 4]);
|
||||
//debug("right: %d\n",right);
|
||||
//debug("right: %d",right);
|
||||
height = atoi (argv[i + 5]);
|
||||
//debug("bottom: %d\n",bottom);
|
||||
//debug("bottom: %d",bottom);
|
||||
direction = (int) (argv[i + 6][0]);
|
||||
//debug("dir: %c\n",(char)direction);
|
||||
//debug("dir: %c",(char)direction);
|
||||
speed = atoi (argv[i + 7]);
|
||||
//debug("speed: %d\n",speed);
|
||||
//debug("speed: %d",speed);
|
||||
// Direction must be v or h
|
||||
if (((char) direction != 'h') && ((char) direction != 'v')) {
|
||||
sock_send_string (c->sock, "huh? Invalid direction\n");
|
||||
@@ -1133,7 +1128,7 @@ widget_set_func (client * c, int argc, char **argv)
|
||||
w->hgt = height;
|
||||
w->length = direction;
|
||||
w->speed = speed;
|
||||
debug ("Widget %s set to (%i,%i)-(%i,%i) %ix%i\n", wid, left, top, right, bottom, width, height);
|
||||
debug (RPT_DEBUG, "Widget %s set to (%i,%i)-(%i,%i) %ix%i", wid, left, top, right, bottom, width, height);
|
||||
sock_send_string(c->sock, "success\n");
|
||||
}
|
||||
}
|
||||
@@ -1153,7 +1148,7 @@ widget_set_func (client * c, int argc, char **argv)
|
||||
w->x = x;
|
||||
w->y = y;
|
||||
}
|
||||
debug ("Widget %s set to %i\n", wid, w->y);
|
||||
debug (RPT_DEBUG, "Widget %s set to %i", wid, w->y);
|
||||
sock_send_string(c->sock, "success\n");
|
||||
}
|
||||
break;
|
||||
@@ -1294,9 +1289,9 @@ backlight_func (client * c, int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
debug ("backlight(%s)\n", argv[1]);
|
||||
debug (RPT_DEBUG, "backlight(%s)", argv[1]);
|
||||
|
||||
|
||||
|
||||
backlight = (backlight && 1); // only preserves ON/OFF bit
|
||||
|
||||
if (strcmp ("on", argv[1]) == 0) {
|
||||
@@ -1403,7 +1398,7 @@ output_func (client * c, int argc, char **argv)
|
||||
|
||||
// lcd_ptr->output (output_state);
|
||||
|
||||
syslog(LOG_NOTICE, "output states changed");
|
||||
report(RPT_NOTICE, "output states changed");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+28
-29
@@ -15,12 +15,11 @@
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include "sock.h"
|
||||
#include "clients.h"
|
||||
#include "client_data.h"
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
#include "render.h"
|
||||
|
||||
LinkedList *clients;
|
||||
@@ -29,11 +28,11 @@ LinkedList *clients;
|
||||
int
|
||||
client_init ()
|
||||
{
|
||||
debug ("client_init()\n");
|
||||
debug(RPT_INFO, "client_init()");
|
||||
|
||||
clients = LL_new ();
|
||||
if (!clients) {
|
||||
fprintf (stderr, "client_init: Unable to create client list\n");
|
||||
report( RPT_ERR, "client_init: Unable to create client list");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -45,29 +44,29 @@ client_shutdown ()
|
||||
{
|
||||
client *c;
|
||||
|
||||
debug ("client_shutdown()\n");
|
||||
debug (RPT_INFO, "client_shutdown()");
|
||||
|
||||
// Free all client structures...
|
||||
// Note that the regular list loop doesn't work here, because
|
||||
// client_destroy() calls LL_Remove()
|
||||
for (c = LL_Pop (clients); c; c = LL_Pop (clients)) {
|
||||
debug ("client_shutdown: ...\n");
|
||||
debug (RPT_DEBUG, "client_shutdown: ...");
|
||||
if (c) {
|
||||
debug ("client_shutdown: ... %i ...\n", c->sock);
|
||||
debug (RPT_DEBUG, "client_shutdown: ... %i ...", c->sock);
|
||||
if (client_destroy (c) != 0) {
|
||||
fprintf (stderr, "client_shutdown: Error freeing client\n");
|
||||
report (RPT_ERR, "client_shutdown: Error freeing client");
|
||||
} else {
|
||||
debug ("client_shutdown: Freed client...\n");
|
||||
debug (RPT_DEBUG, "client_shutdown: Freed client...");
|
||||
}
|
||||
} else {
|
||||
debug ("client_shutdown: No client!\n");
|
||||
debug (RPT_DEBUG, "client_shutdown: No client!");
|
||||
}
|
||||
}
|
||||
|
||||
// Then, free the list...
|
||||
LL_Destroy (clients);
|
||||
|
||||
debug ("client_shutdown: done\n");
|
||||
debug (RPT_DEBUG, "client_shutdown: done");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -81,12 +80,12 @@ client_create (int sock)
|
||||
{
|
||||
client *c;
|
||||
|
||||
debug ("client_create(%i)\n", sock);
|
||||
debug (RPT_DEBUG, "client_create(%i)", sock);
|
||||
|
||||
// Allocate new client...
|
||||
c = malloc (sizeof (client));
|
||||
if (!c) {
|
||||
fprintf (stderr, "client_create: error allocating new client\n");
|
||||
report (RPT_ERR, "client_create: error allocating new client");
|
||||
return NULL;
|
||||
}
|
||||
// Init struct members
|
||||
@@ -100,14 +99,14 @@ client_create (int sock)
|
||||
// Set up message list...
|
||||
c->messages = LL_new ();
|
||||
if (!c->messages) {
|
||||
fprintf (stderr, "client_create: error allocating message list\n");
|
||||
report (RPT_ERR, "client_create: error allocating message list");
|
||||
free (c);
|
||||
return NULL;
|
||||
}
|
||||
// TODO: allocate and init client data...
|
||||
c->data = malloc (sizeof (client_data));
|
||||
if (!c->data) {
|
||||
fprintf (stderr, "client_create: error allocating client data\n");
|
||||
report (RPT_ERR, "client_create: error allocating client data");
|
||||
free (c->messages);
|
||||
free (c);
|
||||
return NULL;
|
||||
@@ -127,16 +126,16 @@ client_destroy (client * c)
|
||||
|
||||
char *str;
|
||||
|
||||
debug ("client_destroy()\n");
|
||||
debug (RPT_INFO, "client_destroy()");
|
||||
|
||||
if (!c)
|
||||
return -1;
|
||||
|
||||
// Eat the rest of the incoming requests...
|
||||
debug ("client_destroy: get_messages\n");
|
||||
debug (RPT_DEBUG, "client_destroy: get_messages");
|
||||
while ((str = client_get_message (c))) {
|
||||
if (str) {
|
||||
debug ("client_destroy: kill message %s\n", str);
|
||||
debug (RPT_DEBUG, "client_destroy: kill message %s", str);
|
||||
free (str);
|
||||
}
|
||||
}
|
||||
@@ -145,7 +144,7 @@ client_destroy (client * c)
|
||||
if (c->sock) {
|
||||
// sock_send_string (c->sock, "bye\n");
|
||||
close(c->sock);
|
||||
syslog(LOG_NOTICE, "closed socket for #%d\n", c->sock);
|
||||
report(RPT_NOTICE, "closed socket for #%d", c->sock);
|
||||
}
|
||||
|
||||
err = LL_Destroy (c->messages);
|
||||
@@ -171,7 +170,7 @@ client_add_message (client * c, char *message)
|
||||
char delimiters[] = "\n\r\0";
|
||||
// int len;
|
||||
|
||||
//debug("client_add_message(%s)\n", message);
|
||||
debug(RPT_DEBUG, "client_add_message(%s)", message);
|
||||
|
||||
if (!c)
|
||||
return -1;
|
||||
@@ -184,17 +183,17 @@ client_add_message (client * c, char *message)
|
||||
// Copy the string to avoid overwriting the original...
|
||||
dup = strdup (message);
|
||||
if (!dup) {
|
||||
fprintf (stderr, "client_add_message: Error allocating new string\n");
|
||||
report(RPT_ERR, "client_add_message: Error allocating new string");
|
||||
return -1;
|
||||
}
|
||||
// Now split the string into lines and enqueue each one...
|
||||
for (str = strtok (dup, delimiters); str; str = strtok (NULL, delimiters)) {
|
||||
cp = strdup (str);
|
||||
debug ("client_add_message: %s\n", cp);
|
||||
debug (RPT_DEBUG, "client_add_message: %s", cp);
|
||||
err += LL_Enqueue (c->messages, (void *) cp);
|
||||
}
|
||||
|
||||
//debug("client_add_message(%s): %i errors\n", message, err);
|
||||
//debug(RPT_DEBUG, "client_add_message(%s): %i errors", message, err);
|
||||
free (dup); // Fixed memory leak...
|
||||
|
||||
// Err is the number of errors encountered...
|
||||
@@ -208,14 +207,14 @@ client_get_message (client * c)
|
||||
{
|
||||
char *str;
|
||||
|
||||
//debug("client_get_message()\n");
|
||||
debug(RPT_DEBUG, "client_get_message()");
|
||||
|
||||
if (!c)
|
||||
return NULL;
|
||||
|
||||
str = (char *) LL_Dequeue (c->messages);
|
||||
|
||||
//debug("client_get_message: \"%s\"\n", str);
|
||||
//debug(RPT_DEBUG, "client_get_message: \"%s\"", str);
|
||||
|
||||
return str;
|
||||
}
|
||||
@@ -241,19 +240,19 @@ client_find_sock (int sock)
|
||||
{
|
||||
client *c;
|
||||
|
||||
// debug("client_find_sock(%i)\n", sock);
|
||||
// debug(RPT_INFO, "client_find_sock(%i)", sock);
|
||||
|
||||
LL_Rewind (clients);
|
||||
do {
|
||||
c = (client *) LL_Get (clients);
|
||||
// debug("client_find_sock: ... %i ...\n", c->sock);
|
||||
// debug(RPT_DEBUG, "client_find_sock: ... %i ...", c->sock);
|
||||
if (c->sock == sock) {
|
||||
// debug("client_find_sock: ..! %i !..\n", c->sock);
|
||||
// debug(RPT_DEBUG, "client_find_sock: ..! %i !..", c->sock);
|
||||
return c;
|
||||
}
|
||||
} while (LL_Next (clients) == 0);
|
||||
|
||||
debug ("client_find_sock: failed\n");
|
||||
debug (RPT_ERR, "client_find_sock: failed");
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+14
-12
@@ -13,6 +13,8 @@
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "shared/report.h"
|
||||
|
||||
|
||||
typedef struct key {
|
||||
char * name;
|
||||
@@ -219,7 +221,7 @@ int config_has_key( char *sectionname, char *keyname )
|
||||
|
||||
void config_clear()
|
||||
{
|
||||
printf( "config_clear is unimplemented" );
|
||||
report( RPT_WARNING, "config_clear is unimplemented" );
|
||||
}
|
||||
|
||||
|
||||
@@ -386,7 +388,7 @@ int process_config( section ** current_section, char (*get_next_char)(), char mo
|
||||
case ST_SECTIONNAME:
|
||||
switch( ch ) {
|
||||
case '\n':
|
||||
fprintf( stderr, "Section name incorrectly closed on line %d of %s: %s\n", line_nr, source_descr, sectionname );
|
||||
report( RPT_WARNING, "Section name incorrectly closed on line %d of %s: %s", line_nr, source_descr, sectionname );
|
||||
state = ST_INITIAL;
|
||||
break;
|
||||
case '\r':
|
||||
@@ -394,7 +396,7 @@ int process_config( section ** current_section, char (*get_next_char)(), char mo
|
||||
case ' ':
|
||||
case '"':
|
||||
case '[':
|
||||
fprintf( stderr, "Section name contains invalid chars on line %d of %s: %s\n", line_nr, source_descr, sectionname );
|
||||
report( RPT_WARNING, "Section name contains invalid chars on line %d of %s: %s", line_nr, source_descr, sectionname );
|
||||
state = ST_INVALID_SECTIONNAME;
|
||||
break;
|
||||
case ']':
|
||||
@@ -404,14 +406,14 @@ int process_config( section ** current_section, char (*get_next_char)(), char mo
|
||||
state = ST_INITIAL;
|
||||
break;
|
||||
case 0:
|
||||
fprintf( stderr, "Section name incorrectly closed on line %d of %s: %s\n", line_nr, source_descr, sectionname );
|
||||
report( RPT_WARNING, "Section name incorrectly closed on line %d of %s: %s", line_nr, source_descr, sectionname );
|
||||
break;
|
||||
default:
|
||||
if( sectionname_pos<MAXSECTIONNAMELENGTH ) {
|
||||
sectionname[sectionname_pos++] = ch;
|
||||
sectionname[sectionname_pos] = 0;
|
||||
} else {
|
||||
fprintf( stderr, "Section name too long on line %d of %s: %s\n", line_nr, source_descr, sectionname );
|
||||
report( RPT_WARNING, "Section name too long on line %d of %s: %s", line_nr, source_descr, sectionname );
|
||||
state = ST_INVALID_SECTIONNAME;
|
||||
}
|
||||
}
|
||||
@@ -431,13 +433,13 @@ int process_config( section ** current_section, char (*get_next_char)(), char mo
|
||||
case '\r':
|
||||
case '\t':
|
||||
case ' ':
|
||||
fprintf( stderr, "Loose word found on line %d of %s: %s\n", line_nr, source_descr, keyname );
|
||||
report( RPT_WARNING, "Loose word found on line %d of %s: %s", line_nr, source_descr, keyname );
|
||||
state = ST_INITIAL;
|
||||
break;
|
||||
case '"':
|
||||
case '[':
|
||||
case ']':
|
||||
fprintf( stderr, "Key name contains invalid characters on line %d of %s: %s\n", line_nr, source_descr, keyname );
|
||||
report( RPT_WARNING, "Key name contains invalid characters on line %d of %s: %s", line_nr, source_descr, keyname );
|
||||
state = ST_INVALID_KEYNAME;
|
||||
break;
|
||||
case '=':
|
||||
@@ -447,7 +449,7 @@ int process_config( section ** current_section, char (*get_next_char)(), char mo
|
||||
break;
|
||||
default:
|
||||
if( keyname_pos>=MAXKEYNAMELENGTH ) {
|
||||
fprintf( stderr, "Key name too long on line %d of %s: %s\n", line_nr, source_descr, keyname );
|
||||
report( RPT_WARNING, "Key name too long on line %d of %s: %s", line_nr, source_descr, keyname );
|
||||
state = ST_INVALID_KEYNAME;
|
||||
} else {
|
||||
keyname[keyname_pos++] = ch;
|
||||
@@ -469,7 +471,7 @@ int process_config( section ** current_section, char (*get_next_char)(), char mo
|
||||
case '#':
|
||||
case ';':
|
||||
case '=':
|
||||
fprintf( stderr, "Value contains invalid characters on line %d of %s, at key: %s\n", line_nr, source_descr, keyname );
|
||||
report( RPT_WARNING, "Value contains invalid characters on line %d of %s, at key: %s", line_nr, source_descr, keyname );
|
||||
state = ST_INVALID_VALUE;
|
||||
break;
|
||||
case '"':
|
||||
@@ -482,7 +484,7 @@ int process_config( section ** current_section, char (*get_next_char)(), char mo
|
||||
case ' ':
|
||||
// Value complete !
|
||||
if( ! *current_section ) {
|
||||
fprintf( stderr, "Data before any section on line %d of %s with key: %s\n", line_nr, source_descr, keyname );
|
||||
report( RPT_WARNING, "Data before any section on line %d of %s with key: %s", line_nr, source_descr, keyname );
|
||||
}
|
||||
else {
|
||||
// Store the value
|
||||
@@ -496,7 +498,7 @@ int process_config( section ** current_section, char (*get_next_char)(), char mo
|
||||
value[value_pos++] = ch;
|
||||
value[value_pos] = 0;
|
||||
} else {
|
||||
fprintf( stderr, "Value key is too long on line %d of %s, at key: %s\n", line_nr, source_descr, keyname );
|
||||
report( RPT_WARNING, "Value key is too long on line %d of %s, at key: %s", line_nr, source_descr, keyname );
|
||||
state = ST_INVALID_KEYNAME;
|
||||
}
|
||||
}
|
||||
@@ -514,7 +516,7 @@ int process_config( section ** current_section, char (*get_next_char)(), char mo
|
||||
switch( ch ) {
|
||||
case 0:
|
||||
case '\n':
|
||||
fprintf( stderr, "String is incorrectly terminated on line %d of %s: %s\n", line_nr, source_descr, keyname );
|
||||
report( RPT_WARNING, "String is incorrectly terminated on line %d of %s: %s", line_nr, source_descr, keyname );
|
||||
state = ST_INITIAL;
|
||||
break;
|
||||
case '\\':
|
||||
|
||||
+7
-8
@@ -11,14 +11,13 @@
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <sys/errno.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "shared/LL.h"
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
#include "configfile.h"
|
||||
|
||||
#include "drivers/lcd.h"
|
||||
@@ -40,14 +39,14 @@ load_driver ( char * name, char * filename, char * args )
|
||||
void (*driver_init)();
|
||||
lcd_logical_driver * driver;
|
||||
|
||||
debug ("load_driver(%s,%s,%s)\n", name,filename,args);
|
||||
report( RPT_INFO, "load_driver(%s,%s,%s)", name, filename, args );
|
||||
|
||||
// First driver ?
|
||||
if( !loaded_drivers ) {
|
||||
// Create linked list
|
||||
loaded_drivers = LL_new ();
|
||||
if( !loaded_drivers ) {
|
||||
fprintf( stderr, "Error allocating driver list.\n" );
|
||||
report( RPT_ERR, "Error allocating driver list." );
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -56,7 +55,7 @@ load_driver ( char * name, char * filename, char * args )
|
||||
// Find the driver in the array of driver types
|
||||
if ((driver_init = (void *) lcd_find_init(name)) == NULL) {
|
||||
// Driver not found
|
||||
fprintf( stderr, "invalid driver: %s\n", name);
|
||||
report( RPT_ERR, "invalid driver: %s", name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -75,7 +74,7 @@ load_driver ( char * name, char * filename, char * args )
|
||||
|
||||
res = driver->init( driver, args );
|
||||
if( res < 0 ) {
|
||||
fprintf( stderr, "res<0\n" );
|
||||
report( RPT_ERR, "Driver load failed, return code < 0" );
|
||||
// driver load failed, don't add driver to list
|
||||
return -1;
|
||||
}
|
||||
@@ -97,10 +96,10 @@ unload_all_drivers ()
|
||||
{
|
||||
lcd_logical_driver * driver;
|
||||
|
||||
debug ("unload_all_driver()\n");
|
||||
report( RPT_INFO, "unload_all_driver()");
|
||||
|
||||
while( (driver = LL_Pop( loaded_drivers )) != NULL ) {
|
||||
debug ("driver->close %p\n", driver );
|
||||
debug( RPT_DEBUG, "driver->close %p", driver );
|
||||
driver->close();
|
||||
}
|
||||
|
||||
|
||||
+25
-36
@@ -5,10 +5,10 @@
|
||||
#include <fcntl.h>
|
||||
#include <string.h>
|
||||
#include <sys/errno.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include "lcd.h"
|
||||
#include "debug.h"
|
||||
#include "shared/report.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
////////////////////// For Debugging Output //////////////////////////////
|
||||
@@ -22,7 +22,7 @@ static lcd_logical_driver *debug_drv;
|
||||
int
|
||||
debug_init (struct lcd_logical_driver *driver, char *args)
|
||||
{
|
||||
syslog(LOG_DEBUG, "debug_init");
|
||||
report (RPT_INFO, "debug_init()");
|
||||
|
||||
debug_drv = driver;
|
||||
|
||||
@@ -58,10 +58,10 @@ debug_init (struct lcd_logical_driver *driver, char *args)
|
||||
void
|
||||
debug_close ()
|
||||
{
|
||||
syslog(LOG_DEBUG, "debug_close()");
|
||||
report (RPT_INFO, "debug_close()");
|
||||
|
||||
if (debug_drv->framebuf) {
|
||||
printf ("frame buffer: %010X", (int) debug_drv->framebuf);
|
||||
report (RPT_DEBUG, "frame buffer: %010X", (int) debug_drv->framebuf);
|
||||
free (debug_drv->framebuf);
|
||||
}
|
||||
|
||||
@@ -74,7 +74,7 @@ debug_close ()
|
||||
void
|
||||
debug_clear ()
|
||||
{
|
||||
syslog(LOG_DEBUG, "clear()");
|
||||
report (RPT_INFO, "clear()");
|
||||
|
||||
memset (debug_drv->framebuf, ' ', debug_drv->wid * debug_drv->hgt);
|
||||
|
||||
@@ -86,7 +86,7 @@ debug_clear ()
|
||||
void
|
||||
debug_flush ()
|
||||
{
|
||||
syslog(LOG_DEBUG, "flush()");
|
||||
report (RPT_INFO, "flush()");
|
||||
|
||||
debug_drv->draw_frame ();
|
||||
}
|
||||
@@ -100,10 +100,8 @@ debug_string (int x, int y, char string[])
|
||||
{
|
||||
|
||||
int i;
|
||||
char buf[64];
|
||||
|
||||
snprintf(buf, sizeof(buf), "string(%i,%i): %s", x, y, string);
|
||||
syslog (LOG_DEBUG, buf);
|
||||
report(RPT_INFO, "string(%i,%i,%.40s)", x, y, string);
|
||||
|
||||
y --; x --; // Convert 1-based coords to 0-based...
|
||||
|
||||
@@ -119,10 +117,7 @@ debug_string (int x, int y, char string[])
|
||||
void
|
||||
debug_chr (int x, int y, char c)
|
||||
{
|
||||
char buf[64];
|
||||
|
||||
snprintf(buf, sizeof(buf), "character(%i,%i): %c", x, y, c);
|
||||
syslog (LOG_DEBUG, buf);
|
||||
report (RPT_DEBUG, "char(%i,%i,%c)", x, y, c);
|
||||
|
||||
x--; y--;
|
||||
debug_drv->framebuf[(y * debug_drv->wid) + x] = c;
|
||||
@@ -131,50 +126,44 @@ debug_chr (int x, int y, char c)
|
||||
int
|
||||
debug_contrast (int contrast)
|
||||
{
|
||||
syslog(LOG_DEBUG, "contrast: %i", contrast);
|
||||
report (RPT_INFO, "contrast(%i)", contrast);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
debug_backlight (int on)
|
||||
{
|
||||
if (on)
|
||||
syslog(LOG_DEBUG, "backlight turned on");
|
||||
else
|
||||
syslog(LOG_DEBUG, "backlight turned off");
|
||||
report (RPT_INFO, "backlight(%i)", on);
|
||||
}
|
||||
|
||||
void
|
||||
debug_init_vbar ()
|
||||
{
|
||||
syslog(LOG_DEBUG, "Init vertical bars");
|
||||
report (LOG_INFO, "init_vbar()");
|
||||
}
|
||||
|
||||
void
|
||||
debug_init_hbar ()
|
||||
{
|
||||
syslog(LOG_DEBUG, "Init horizontal bars");
|
||||
report (RPT_INFO, "init_hbar()");
|
||||
}
|
||||
|
||||
void
|
||||
debug_init_num ()
|
||||
{
|
||||
syslog(LOG_DEBUG, "Big numbers");
|
||||
report (RPT_INFO, "init_bignum()");
|
||||
}
|
||||
|
||||
void
|
||||
debug_num (int x, int num)
|
||||
{
|
||||
char buf[64];
|
||||
|
||||
snprintf(buf, sizeof(buf), "big number(%i): %i", x, num);
|
||||
syslog (LOG_DEBUG, buf);
|
||||
report (RPT_INFO, "big number(%i,%i)", x, num);
|
||||
}
|
||||
|
||||
void
|
||||
debug_set_char (int n, char *dat)
|
||||
{
|
||||
syslog(LOG_DEBUG, "set character %i", n);
|
||||
report (RPT_INFO, "set_char(%i,data)", n);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////
|
||||
@@ -185,7 +174,7 @@ debug_vbar (int x, int len)
|
||||
{
|
||||
int y;
|
||||
|
||||
syslog (LOG_DEBUG, "vbar(%i): len = %i", x, len);
|
||||
report (RPT_INFO, "vbar(%i,%i)", x, len);
|
||||
|
||||
for (y = debug_drv->hgt; y > 0 && len > 0; y--) {
|
||||
debug_chr (x, y, '|');
|
||||
@@ -201,7 +190,7 @@ debug_vbar (int x, int len)
|
||||
void
|
||||
debug_hbar (int x, int y, int len)
|
||||
{
|
||||
syslog(LOG_DEBUG, "hbar(%i,%i): len = %i", x, y, len);
|
||||
report (RPT_INFO, "hbar(%i,%i,%i)", x, y, len);
|
||||
|
||||
for (; x < debug_drv->wid && len > 0; x++) {
|
||||
debug_chr (x, y, '-');
|
||||
@@ -217,13 +206,13 @@ debug_hbar (int x, int y, int len)
|
||||
void
|
||||
debug_icon (int which, char dest)
|
||||
{
|
||||
syslog (LOG_DEBUG, "char %i = icon %i", dest, which);
|
||||
report (RPT_INFO, "icon(%i,%i", which, dest);
|
||||
}
|
||||
|
||||
void
|
||||
debug_flush_box (int lft, int top, int rgt, int bot)
|
||||
{
|
||||
syslog (LOG_DEBUG, "flush_box(%i,%i) - (%i,%i)", lft, top, rgt, bot);
|
||||
report (RPT_INFO, "flush_box(%i,%i,%i,%i)", lft, top, rgt, bot);
|
||||
|
||||
debug_flush ();
|
||||
}
|
||||
@@ -235,25 +224,25 @@ debug_draw_frame (char *dat)
|
||||
|
||||
char out[LCD_MAX_WIDTH];
|
||||
|
||||
syslog (LOG_DEBUG, "draw_frame()");
|
||||
report (RPT_INFO, "draw_frame(data)");
|
||||
|
||||
if (!dat)
|
||||
return;
|
||||
|
||||
// printf("Frame (%ix%i): \n%s\n", debug_drv->wid, debug_drv->hgt, dat);
|
||||
// report (RPT_DEBUG, "Frame (%ix%i): %s", debug_drv->wid, debug_drv->hgt, dat);
|
||||
|
||||
for (i = 0; i < debug_drv->wid; i++) {
|
||||
out[i] = '-';
|
||||
}
|
||||
out[debug_drv->wid] = 0;
|
||||
//printf ("+%s+\n", out);
|
||||
//report (RPT_DEBUG, "+%s+", out);
|
||||
|
||||
for (i = 0; i < debug_drv->hgt; i++) {
|
||||
for (j = 0; j < debug_drv->wid; j++) {
|
||||
out[j] = dat[j + (i * debug_drv->wid)];
|
||||
}
|
||||
out[debug_drv->wid] = 0;
|
||||
//printf ("|%s|\n", out);
|
||||
//report (RPT_DEBUG, "|%s|", out);
|
||||
|
||||
}
|
||||
|
||||
@@ -261,13 +250,13 @@ debug_draw_frame (char *dat)
|
||||
out[i] = '-';
|
||||
}
|
||||
out[debug_drv->wid] = 0;
|
||||
//printf ("+%s+\n", out);
|
||||
//report (RPT_DEBUG, "+%s+", out);
|
||||
|
||||
}
|
||||
|
||||
char
|
||||
debug_getkey ()
|
||||
{
|
||||
syslog(LOG_DEBUG, "getkey");
|
||||
report (RPT_INFO, "getkey()");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
#endif
|
||||
|
||||
#include "shared/LL.h"
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
|
||||
#include "lcd.h"
|
||||
|
||||
|
||||
+36
-23
@@ -165,7 +165,9 @@
|
||||
#include "lpt-port.h"
|
||||
#include "lcd.h"
|
||||
#include "shared/str.h"
|
||||
#include <stdio.h>
|
||||
#include "shared/report.h"
|
||||
#include "configfile.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
@@ -274,6 +276,9 @@ sed1330_init( lcd_logical_driver * driver, char *args )
|
||||
|
||||
sed1330 = driver;
|
||||
|
||||
|
||||
debug( RPT_INFO, "SED1330: init(%p,%s)", driver, args );
|
||||
|
||||
// TODO: replace DriverName with driver->name when that field exists.
|
||||
#define DriverName "sed1330"
|
||||
|
||||
@@ -291,13 +296,13 @@ sed1330_init( lcd_logical_driver * driver, char *args )
|
||||
// READ THE CONFIG FILE
|
||||
|
||||
// Port
|
||||
port = driver->config_get_int( DriverName, "port", 0, 0x278 );
|
||||
port = config_get_int( DriverName, "port", 0, 0x278 );
|
||||
data->port = port;
|
||||
|
||||
// Type
|
||||
s = driver->config_get_string( DriverName, "type", 0, NULL );
|
||||
if( !s ) {
|
||||
printf( "SED1330: you need to specify the display type\n" );
|
||||
report( RPT_ERR, "SED1330: you need to specify the display type" );
|
||||
} else if( strcmp( s, "G321D" ) == 0 ) {
|
||||
data->type = TYPE_G321D;
|
||||
data->graph_width = 320;
|
||||
@@ -311,14 +316,17 @@ sed1330_init( lcd_logical_driver * driver, char *args )
|
||||
data->graph_width = 240;
|
||||
data->graph_height = 128;
|
||||
} else {
|
||||
printf( "SED1330: Unknown display type: %s\n", s );
|
||||
report( RPT_ERR, "SED1330: Unknown display type: %s", s );
|
||||
return -1;
|
||||
}
|
||||
|
||||
driver->wid = data->graph_width / CHARWIDTH;
|
||||
driver->hgt = data->graph_height / CHARHEIGHT;
|
||||
data->bytesperline = (data->graph_width - 1 ) / CHARWIDTH + 1;
|
||||
|
||||
report( RPT_INFO, "SED1330: Using LCD type: %s", s );
|
||||
report( RPT_INFO, "SED1330: Text size: %dx%d", driver->wid, driver->hgt );
|
||||
|
||||
|
||||
// Keymap
|
||||
for( i=0; i<MAXKEYS; i++ ) {
|
||||
char buf[8];
|
||||
@@ -327,6 +335,8 @@ sed1330_init( lcd_logical_driver * driver, char *args )
|
||||
if( s ) {
|
||||
data->keymap[i] = (char *) malloc( strlen(s)+1 );
|
||||
strcpy( data->keymap[i], s );
|
||||
report( RPT_INFO, "SED1330: Key %d: \"%s\"", i, s );
|
||||
|
||||
} else {
|
||||
data->keymap[i] = ""; // Pointing to an constant empty string
|
||||
}
|
||||
@@ -360,6 +370,7 @@ sed1330_init( lcd_logical_driver * driver, char *args )
|
||||
|
||||
|
||||
// Arrange for access to port
|
||||
debug( RPT_DEBUG, "SED1330: getting port access" );
|
||||
port_access(data->port);
|
||||
port_access(data->port+1);
|
||||
port_access(data->port+2);
|
||||
@@ -372,7 +383,7 @@ sed1330_init( lcd_logical_driver * driver, char *args )
|
||||
struct sched_param param;
|
||||
param.sched_priority=1;
|
||||
if (( sched_setscheduler(0, SCHED_RR, ¶m)) == -1) {
|
||||
fprintf (stderr, "HD44780_init: failed (%s)\n", strerror (errno));
|
||||
report( RPT_ERR, "HD44780_init: failed (%s)", strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -404,6 +415,7 @@ sed1330_init( lcd_logical_driver * driver, char *args )
|
||||
|
||||
// INITIALIZE THE LCD
|
||||
// End reset-state
|
||||
debug( RPT_DEBUG, "SED1330: initializing LCD" );
|
||||
port_out( port+2, (nWR) ^ OUTMASK ); // raise ^RD and ^WR
|
||||
port_out( port+2, (nRESET|nWR) ^ OUTMASK ); // lower RESET
|
||||
uPause( 200 );
|
||||
@@ -495,7 +507,7 @@ sed1330_command( char command, int datacount, char * data )
|
||||
int i;
|
||||
int port = private_data->port;
|
||||
|
||||
printf( "sed1330_command %x #data=%d\n", command, datacount );
|
||||
debug( RPT_INFO, "sed1330_command %x #data=%d", command, datacount );
|
||||
|
||||
port_out( port+2, (nRESET|nWR|A0) ^ OUTMASK ); // set A0 to indicate command
|
||||
port_out( port, command ); // set up data
|
||||
@@ -531,7 +543,7 @@ void sed1330_update_cursor()
|
||||
char disp_en;
|
||||
char fc; // named after CF register in SED1330
|
||||
|
||||
printf( "sed1330_update_cursor\n" );
|
||||
debug( RPT_INFO, "sed1330_update_cursor" );
|
||||
|
||||
cursor_pos = (data->cursor_y-1) * data->bytesperline + (data->cursor_x-1) + 256 * SCR1_H + SCR1_L;
|
||||
csrloc[0] = cursor_pos % 256;
|
||||
@@ -568,7 +580,7 @@ void sed1330_update_cursor()
|
||||
void
|
||||
sed1330_close()
|
||||
{
|
||||
printf( "sed1330_close\n" );
|
||||
debug( RPT_INFO, "sed1330_close" );
|
||||
|
||||
//sed1330_command( CMD_DISP_DIS, 0, NULL ); // display off
|
||||
//port_out( port+2, (nWR) ^ OUTMASK ); // give LCD reset signal
|
||||
@@ -586,7 +598,7 @@ sed1330_clear()
|
||||
{
|
||||
private_data * data = sed1330->private_data;
|
||||
|
||||
printf( "sed1330_clear\n" );
|
||||
debug( RPT_INFO, "sed1330_clear" );
|
||||
|
||||
memset( data->framebuf_text, ' ', data->bytesperline * sed1330->hgt);
|
||||
memset( data->framebuf_graph, 0, data->bytesperline * data->graph_height );
|
||||
@@ -603,7 +615,8 @@ sed1330_string( int x, int y, char *str )
|
||||
char * start;
|
||||
int len;
|
||||
|
||||
printf( "sed1330_string x=%d y=%d s=\"%s\"\n", x, y, str );
|
||||
debug( RPT_INFO, "sed1330_string x=%d y=%d s=\"%s\"", x, y, str );
|
||||
|
||||
if( y > sed1330->hgt ) {
|
||||
return; // outside framebuf_textfer
|
||||
}
|
||||
@@ -626,7 +639,7 @@ sed1330_chr( int x, int y, char c )
|
||||
{
|
||||
private_data * data = sed1330->private_data;
|
||||
|
||||
printf( "sed1330_chr x=%d y=%d c='%c'\n", x, y, c );
|
||||
debug( RPT_INFO, "sed1330_chr x=%d y=%d c='%c'", x, y, c );
|
||||
|
||||
if( y > sed1330->hgt || x > sed1330->wid ) {
|
||||
return; // outside framebuf_textfer
|
||||
@@ -645,7 +658,7 @@ sed1330_flush()
|
||||
unsigned int pos, start_pos, nr_equal, fblen, len, cursor_pos;
|
||||
char csrloc[2];
|
||||
|
||||
printf( "sed1330_flush\n" );
|
||||
debug( RPT_INFO, "sed1330_flush" );
|
||||
|
||||
sed1330_command( CMD_DISP_EN, 1, ((char[1]) {0x16}) ); // cursor off
|
||||
|
||||
@@ -703,7 +716,7 @@ void sed1330_cursor( int x, int y, char state )
|
||||
{
|
||||
private_data * data = sed1330->private_data;
|
||||
|
||||
printf( "sed1330_cursor x=%d y=%d state='%c'\n", x, y, state );
|
||||
debug( RPT_INFO, "sed1330_cursor x=%d y=%d state='%c'", x, y, state );
|
||||
|
||||
data->cursor_x = x;
|
||||
data->cursor_y = y;
|
||||
@@ -721,7 +734,7 @@ sed1330_backlight( int on )
|
||||
{
|
||||
//private_data * data = sed1330->private_data;
|
||||
|
||||
printf( "sed1330_backlight on='%c'\n", on );
|
||||
debug( RPT_INFO, "sed1330_backlight on='%c'", on );
|
||||
// unimplemented
|
||||
}
|
||||
|
||||
@@ -737,7 +750,7 @@ sed1330_rect ( int x1, int y1, int x2, int y2, char pattern )
|
||||
//private_data * data = sed1330->private_data;
|
||||
int x, y;
|
||||
|
||||
printf( "sed1330_rect x1=%d y1=%d x2=%d y2=%d pattern=%d\n", x1, y1, x2, y2, (int) pattern );
|
||||
debug( RPT_INFO, "sed1330_rect x1=%d y1=%d x2=%d y2=%d pattern=%d", x1, y1, x2, y2, (int) pattern );
|
||||
|
||||
// Swap coordinates if needed
|
||||
if( x1>x2 ) {
|
||||
@@ -771,7 +784,7 @@ sed1330_line ( int x1, int y1, int x2, int y2, char pattern )
|
||||
//private_data * data = sed1330->private_data;
|
||||
int x, y;
|
||||
|
||||
printf( "sed1330_rect x1=%d y1=%d x2=%d y2=%d pattern=%d\n", x1, y1, x2, y2, (int) pattern );
|
||||
debug( RPT_INFO, "sed1330_rect x1=%d y1=%d x2=%d y2=%d pattern=%d", x1, y1, x2, y2, (int) pattern );
|
||||
|
||||
// Swap coordinates if needed
|
||||
if( x1>x2 ) {
|
||||
@@ -830,7 +843,7 @@ sed1330_set_pixel( int x, int y )
|
||||
unsigned int bytepos;
|
||||
char bitmask;
|
||||
|
||||
//printf( "sed1330_set_pixel x=%d y=%d\n", x, y );
|
||||
//debug( RPT_INFO, "sed1330_set_pixel x=%d y=%d", x, y );
|
||||
|
||||
bytepos = y*data->bytesperline + x/PIXELSPERBYTE;
|
||||
bitmask = 0x80 >> (x % PIXELSPERBYTE);
|
||||
@@ -850,7 +863,7 @@ sed1330_clear_pixel( int x, int y )
|
||||
int bytepos;
|
||||
char bitmask;
|
||||
|
||||
//printf( "sed1330_clear_pixel x=%d y=%d\n", x, y );
|
||||
//debug( RPT_INFO, "sed1330_clear_pixel x=%d y=%d", x, y );
|
||||
|
||||
bytepos = y*data->bytesperline + x/PIXELSPERBYTE;
|
||||
bitmask = 0x80 >> (x % PIXELSPERBYTE);
|
||||
@@ -866,7 +879,7 @@ sed1330_vbar( int x, int len )
|
||||
{
|
||||
private_data * data = sed1330->private_data;
|
||||
|
||||
printf( "sed1330_hbar x=%d len=%d\n", x, len );
|
||||
debug( RPT_INFO, "sed1330_hbar x=%d len=%d", x, len );
|
||||
|
||||
sed1330_rect ( (x-1) * CHARWIDTH, data->graph_height-1, x * CHARWIDTH - 1, data->graph_height-1 - ((long) len * CHARHEIGHT / sed1330->cellhgt ), 1 );
|
||||
}
|
||||
@@ -881,7 +894,7 @@ sed1330_hbar( int x, int y, int len )
|
||||
{
|
||||
//private_data * data = sed1330->private_data;
|
||||
|
||||
printf( "sed1330_hbar x=%d y=%d len=%d\n", x, y, len );
|
||||
debug( RPT_INFO, "sed1330_hbar x=%d y=%d len=%d", x, y, len );
|
||||
|
||||
sed1330_rect ( (x-1) * CHARWIDTH, (y-1) * CHARHEIGHT, x * CHARWIDTH + len, y * CHARHEIGHT - 1, 1 );
|
||||
}
|
||||
@@ -895,7 +908,7 @@ sed1330_num( int x, int num )
|
||||
{
|
||||
//private_data * data = sed1330->private_data;
|
||||
|
||||
printf( "sed1330_bignum x=%d num=%d\n", x, num );
|
||||
debug( RPT_INFO, "sed1330_bignum x=%d num=%d", x, num );
|
||||
|
||||
|
||||
}
|
||||
@@ -918,7 +931,7 @@ sed1330_heartbeat( int type )
|
||||
{ 0xFF, 0xAF, 0x07, 0x07, 0x07, 0x8F, 0xDF, 0xFF, 0x00, 0x00 }
|
||||
};
|
||||
|
||||
printf( "sed1330_heartbeat type=%d\n", type );
|
||||
report( RPT_INFO, "sed1330_heartbeat type=%d", type );
|
||||
|
||||
data->framebuf_text[sed1330->wid-1] = ' ';
|
||||
whichIcon = (! ((timer + 4) & 5));
|
||||
|
||||
+6
-7
@@ -66,10 +66,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include "shared/sockets.h"
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
|
||||
#include "drivers/lcd.h"
|
||||
|
||||
@@ -105,7 +104,7 @@ handle_input ()
|
||||
if ((key = lcd_ptr->getkey ()) == 0)
|
||||
return 0;
|
||||
|
||||
//debug ("handle_input(%c)\n", (char) key);
|
||||
//debug (RPT_DEBUG, "handle_input(%c)", (char) key);
|
||||
|
||||
// Sequence:
|
||||
// Does the current screen want the key?
|
||||
@@ -162,8 +161,8 @@ handle_input ()
|
||||
int
|
||||
server_input (int key)
|
||||
{
|
||||
debug ("server_input(%c)\n", (char) key);
|
||||
syslog(LOG_DEBUG, "key %d pressed on device", key);
|
||||
debug (RPT_INFO, "server_input(%c)", (char) key);
|
||||
report(RPT_INFO, "key %d pressed on device", key);
|
||||
|
||||
switch ((char) key) {
|
||||
case PAUSE_KEY:
|
||||
@@ -181,11 +180,11 @@ server_input (int key)
|
||||
screenlist_next ();
|
||||
break;
|
||||
case MAIN_MENU_KEY:
|
||||
debug ("got the menu key!\n");
|
||||
debug (RPT_DEBUG, "got the menu key!");
|
||||
server_menu ();
|
||||
break;
|
||||
default:
|
||||
debug ("server_input: Unused key \"%c\" (%i)\n", (char) key, key);
|
||||
debug (RPT_DEBUG, "server_input: Unused key \"%c\" (%i)", (char) key, key);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
+181
-121
@@ -20,7 +20,6 @@
|
||||
#include <unistd.h>
|
||||
#include <pwd.h>
|
||||
#include <errno.h>
|
||||
#include <syslog.h>
|
||||
#include <math.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
@@ -29,7 +28,7 @@
|
||||
extern char *optarg;
|
||||
extern int optind, optopt, opterr;
|
||||
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
|
||||
#include "drivers.h"
|
||||
#include "sock.h"
|
||||
@@ -46,7 +45,7 @@ extern int optind, optopt, opterr;
|
||||
|
||||
#define MAX_TIMER 0x10000
|
||||
|
||||
#define DEFAULT_DEBUG_LEVEL 1
|
||||
//#define DEFAULT_DEBUG_LEVEL 1
|
||||
#define DEFAULT_LCD_PORT LCDPORT
|
||||
#define DEFAULT_BIND_ADDR "127.0.0.1"
|
||||
#define DEFAULT_CONFIGFILE "/etc/LCDd.conf"
|
||||
@@ -56,11 +55,14 @@ extern int optind, optopt, opterr;
|
||||
#define MAX_DRIVERS 8
|
||||
#define DEFAULT_DAEMON_MODE 1
|
||||
#define DEFAULT_ENABLE_SERVER_SCREEN 0
|
||||
#define DEFAULT_REPORTTOSYSLOG 0
|
||||
#define DEFAULT_REPORTLEVEL RPT_WARNING
|
||||
|
||||
|
||||
/* Store some standard defines into vars... */
|
||||
char *version = VERSION;
|
||||
char *protocol_version = PROTOCOL_VERSION;
|
||||
char *api_version = API_VERSION;
|
||||
char *build_date = __DATE__;
|
||||
|
||||
|
||||
@@ -75,15 +77,22 @@ char *build_date = __DATE__;
|
||||
|
||||
/**** Configuration variables ****/
|
||||
|
||||
// All are set to 'unset' values
|
||||
int debug_level = -1;
|
||||
int lcd_port = -1;
|
||||
char bind_addr[64] = "";
|
||||
char configfile[256] = "";
|
||||
char user[64] = "";
|
||||
// All variables are set to 'unset' values
|
||||
#define UNSET_INT -1
|
||||
#define UNSET_STR "\01"
|
||||
|
||||
int daemon_mode = -1;
|
||||
int enable_server_screen = -1;
|
||||
//int debug_level = UNSET_INT;
|
||||
int lcd_port = UNSET_INT;
|
||||
char bind_addr[64] = UNSET_STR;
|
||||
char configfile[256] = UNSET_STR;
|
||||
char user[64] = UNSET_STR;
|
||||
|
||||
int daemon_mode = UNSET_INT;
|
||||
int enable_server_screen = UNSET_INT;
|
||||
|
||||
static int reportLevel = UNSET_INT;
|
||||
static int reportToSyslog = UNSET_INT;
|
||||
static int serverStarted = 0;
|
||||
|
||||
// The drivers and their driver parameters
|
||||
char *drivernames[MAX_DRIVERS];
|
||||
@@ -130,7 +139,7 @@ int init_screens();
|
||||
void do_mainloop();
|
||||
void lcd_list_drivers();
|
||||
|
||||
#define ESSENTIAL(f) {int r; if( ( r=f )!=0 ) return r;}
|
||||
#define ESSENTIAL(f) {int r; if( ( r=(f) )<0 ) { report( RPT_CRIT,"Critical error, abort"); return r;}}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
@@ -168,12 +177,10 @@ main (int argc, char **argv)
|
||||
* in the variable declaration...
|
||||
*/
|
||||
|
||||
// Open syslog facility
|
||||
openlog("LCDd", LOG_PID, LOG_DAEMON);
|
||||
syslog(LOG_NOTICE, "server version %s starting up (protocol version %s)",
|
||||
version, protocol_version);
|
||||
syslog(LOG_NOTICE, "server built on %s",
|
||||
build_date);
|
||||
// Set the initial reporting parameters
|
||||
report(RPT_NOTICE, "LCDd version %s starting", version );
|
||||
report(RPT_INFO, "Built on %s, protocol version %s, API version %s",
|
||||
build_date, protocol_version, api_version );
|
||||
|
||||
clear_settings();
|
||||
|
||||
@@ -186,21 +193,26 @@ main (int argc, char **argv)
|
||||
// Set default values
|
||||
set_default_settings();
|
||||
|
||||
if (debug_level > 0)
|
||||
syslog(LOG_NOTICE, "debug level set to %d", debug_level);
|
||||
// Set reporting values
|
||||
ESSENTIAL( set_reporting( reportLevel, (reportToSyslog?RPT_DEST_SYSLOG:RPT_DEST_STDERR) ) );
|
||||
report( RPT_NOTICE, "Set report level to %d, output to %s", reportLevel, (reportToSyslog?"syslog":"stderr") );
|
||||
|
||||
// Startup the server
|
||||
ESSENTIAL( init_sockets() );
|
||||
ESSENTIAL( init_drivers() );
|
||||
ESSENTIAL( init_screens() );
|
||||
ESSENTIAL( drop_privs(user) );
|
||||
|
||||
// Store it for exit_program()
|
||||
serverStarted = 1;
|
||||
|
||||
#ifndef DEBUG
|
||||
// Now, go into daemon mode...
|
||||
if (daemon_mode) {
|
||||
syslog(LOG_NOTICE, "server forking to background");
|
||||
report(RPT_NOTICE, "Server forking to background");
|
||||
ESSENTIAL( daemonize() );
|
||||
} else {
|
||||
syslog(LOG_NOTICE, "server running in foreground");
|
||||
report(RPT_NOTICE, "Server running in foreground");
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -216,16 +228,19 @@ clear_settings ()
|
||||
{
|
||||
int i;
|
||||
|
||||
debug_level = -1;
|
||||
lcd_port = -1;
|
||||
bind_addr[0] = 0;
|
||||
configfile[0] = 0;
|
||||
user[0] = 0;
|
||||
daemon_mode = -1;
|
||||
enable_server_screen = -1;
|
||||
backlight = -1;
|
||||
//report( RPT_INFO, "clear_settings()" );
|
||||
|
||||
default_duration = -1;
|
||||
lcd_port = UNSET_INT;
|
||||
strcpy( bind_addr, UNSET_STR );
|
||||
strcpy( configfile, UNSET_STR );
|
||||
strcpy( user, UNSET_STR );
|
||||
daemon_mode = UNSET_INT;
|
||||
enable_server_screen = UNSET_INT;
|
||||
backlight = UNSET_INT;
|
||||
|
||||
default_duration = UNSET_INT;
|
||||
reportToSyslog = UNSET_INT;
|
||||
reportLevel = UNSET_INT;
|
||||
|
||||
for( i=0; i < num_drivers; i++ ) {
|
||||
free( drivernames[i] );
|
||||
@@ -244,10 +259,11 @@ int
|
||||
process_command_line (int argc, char **argv)
|
||||
{
|
||||
char c;
|
||||
char buf[64];
|
||||
|
||||
//report( RPT_INFO, "process_command_line()" );
|
||||
|
||||
// analyze options here..
|
||||
while ((c = getopt(argc, argv, "a:p:d:hfib:w:c:u:")) > 0) {
|
||||
while ((c = getopt(argc, argv, "a:p:d:hfib:w:c:u:sr:")) > 0) {
|
||||
// FIXME: Setting of c in this loop clobbers s!
|
||||
// s is set equivalent to c.
|
||||
switch(c) {
|
||||
@@ -260,10 +276,10 @@ process_command_line (int argc, char **argv)
|
||||
|
||||
strcpy( drivernames[num_drivers], optarg );
|
||||
strcpy( driverfilenames[num_drivers], optarg );
|
||||
strcpy( driverargs[num_drivers], "");
|
||||
strcpy( driverargs[num_drivers], "" );
|
||||
num_drivers ++;
|
||||
} else
|
||||
fprintf(stderr, "too many drivers!");
|
||||
report( RPT_ERR, "Too many drivers!" );
|
||||
break;
|
||||
case 'p':
|
||||
lcd_port = atoi(optarg);
|
||||
@@ -299,32 +315,36 @@ process_command_line (int argc, char **argv)
|
||||
backlight = BACKLIGHT_OPEN;
|
||||
}
|
||||
else if( strcmp( optarg, "" ) != 0 ) {
|
||||
fprintf( stderr, "backlight state should be on, off or open\n" );
|
||||
report( RPT_ERR, "Backlight state should be on, off or open" );
|
||||
HelpScreen();
|
||||
}
|
||||
break;
|
||||
case 'w':
|
||||
default_duration = atoi(optarg);
|
||||
if ( default_duration < 16 || default_duration > 10000 ) {
|
||||
snprintf(buf, sizeof(buf),
|
||||
"wait time should be between 16 and 10000 (in 1/8ths of second), not %s\n", optarg);
|
||||
fprintf(stderr, "%s", buf);
|
||||
default_duration = (int) (atof(optarg) * 1e6 / TIME_UNIT);
|
||||
if ( default_duration * TIME_UNIT < 2e6 ) {
|
||||
report( RPT_ERR, "Waittime should be at least 2 (seconds), not %.8s", optarg );
|
||||
HelpScreen ();
|
||||
};
|
||||
break;
|
||||
case 's':
|
||||
reportToSyslog = 1;
|
||||
break;
|
||||
case 'r':
|
||||
reportLevel = atoi(optarg);
|
||||
break;
|
||||
case '?':
|
||||
fprintf(stderr, "unknown option: '%c'\n", optopt);
|
||||
report( RPT_ERR, "Unknown option: '%c'", optopt );
|
||||
HelpScreen();
|
||||
break;
|
||||
case ':':
|
||||
fprintf(stderr, "missing option argument!");
|
||||
report( RPT_ERR, "Missing option argument!" );
|
||||
HelpScreen();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (optind < argc)
|
||||
fprintf(stderr, "non-option arguments!! BAD...");
|
||||
report( RPT_ERR, "Non-option arguments on the command line !");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -338,44 +358,46 @@ process_configfile ( char *configfile )
|
||||
char * s;
|
||||
//char buf[64];
|
||||
|
||||
//report( RPT_INFO, "process_configfile()" );
|
||||
|
||||
// Read server settings
|
||||
|
||||
config_read_file( configfile );
|
||||
|
||||
if( debug_level == -1 )
|
||||
debug_level = config_get_int( "server", "debug", 0, -1 );
|
||||
// if( debug_level == UNSET_INT )
|
||||
// debug_level = config_get_int( "server", "debug", 0, UNSET_INT );
|
||||
|
||||
if( lcd_port == -1 )
|
||||
lcd_port = config_get_int( "server", "port", 0, -1 );
|
||||
if( lcd_port == UNSET_INT )
|
||||
lcd_port = config_get_int( "server", "port", 0, UNSET_INT );
|
||||
|
||||
if( bind_addr[0] == 0 )
|
||||
strncpy( bind_addr, config_get_string( "server", "bind", 0, "" ), sizeof(bind_addr));
|
||||
if( strcmp( bind_addr, UNSET_STR ) == 0 )
|
||||
strncpy( bind_addr, config_get_string( "server", "bind", 0, UNSET_STR ), sizeof(bind_addr));
|
||||
|
||||
if( user[0] == 0 )
|
||||
strncpy( user, config_get_string( "server", "user", 0, "" ), sizeof(user));
|
||||
if( strcmp( user, UNSET_STR ) == 0 )
|
||||
strncpy( user, config_get_string( "server", "user", 0, UNSET_STR ), sizeof(user));
|
||||
|
||||
if( default_duration == -1 ) {
|
||||
default_duration = (config_get_float( "server", "waittime", 0, 0 ) * 1000000 / TIME_UNIT );
|
||||
if( default_duration == UNSET_INT ) {
|
||||
default_duration = (config_get_float( "server", "waittime", 0, 0 ) * 1e6 / TIME_UNIT );
|
||||
if( default_duration == 0 )
|
||||
default_duration = -1;
|
||||
else if( default_duration < 16 ) {
|
||||
fprintf( stderr, "waittime should be at least 2 (seconds)\n" );
|
||||
default_duration = UNSET_INT;
|
||||
else if( default_duration * TIME_UNIT < 2e6 ) {
|
||||
report( RPT_ERR, "Waittime should be at least 2 (seconds)" );
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
if( daemon_mode == -1 ) {
|
||||
if( daemon_mode == UNSET_INT ) {
|
||||
int fg;
|
||||
fg = config_get_bool( "server", "foreground", 0, -1 );
|
||||
if( fg != -1 )
|
||||
fg = config_get_bool( "server", "foreground", 0, UNSET_INT );
|
||||
if( fg != UNSET_INT )
|
||||
daemon_mode = !fg;
|
||||
}
|
||||
|
||||
if( enable_server_screen == -1 )
|
||||
enable_server_screen = config_get_bool( "server", "serverscreen", 0, -1 );
|
||||
if( enable_server_screen == UNSET_INT )
|
||||
enable_server_screen = config_get_bool( "server", "serverscreen", 0, UNSET_INT );
|
||||
|
||||
if( backlight == -1 ) {
|
||||
s = config_get_string( "server", "backlight", 0, "" );
|
||||
if( backlight == UNSET_INT ) {
|
||||
s = config_get_string( "server", "backlight", 0, UNSET_STR );
|
||||
if( strcmp( s, "on" ) == 0 ) {
|
||||
backlight = BACKLIGHT_ON;
|
||||
backlight_state = backlight;
|
||||
@@ -387,11 +409,22 @@ process_configfile ( char *configfile )
|
||||
else if( strcmp( s, "open" ) == 0 ) {
|
||||
backlight = BACKLIGHT_OPEN;
|
||||
}
|
||||
else if( strcmp( s, "" ) != 0 ) {
|
||||
fprintf( stderr, "backlight state should be on, off or open\n" );
|
||||
else if( strcmp( s, UNSET_STR ) != 0 ) {
|
||||
report( RPT_ERR, "Backlight state should be on, off or open" );
|
||||
}
|
||||
}
|
||||
|
||||
if( reportToSyslog == UNSET_INT ) {
|
||||
// Is the value set in the config file anyway ?
|
||||
if( strcmp( config_get_string( "server", "reportToSyslog", 0, "" ), "" ) != 0 ) {
|
||||
reportToSyslog = config_get_bool( "server", "reportToSyslog", 0, 0 );
|
||||
}
|
||||
}
|
||||
if( reportLevel == UNSET_INT ) {
|
||||
reportLevel = config_get_int( "server", "reportLevel", 0, UNSET_INT );
|
||||
}
|
||||
|
||||
|
||||
// Read drivers
|
||||
|
||||
// If drivers have been specified on the command line, then do not
|
||||
@@ -435,29 +468,37 @@ process_configfile ( char *configfile )
|
||||
void
|
||||
set_default_settings()
|
||||
{
|
||||
//report( RPT_INFO, "set_default_settings()" );
|
||||
|
||||
// Set defaults into unfilled variables....
|
||||
|
||||
if (debug_level == -1)
|
||||
debug_level = DEFAULT_DEBUG_LEVEL;
|
||||
if (lcd_port == -1)
|
||||
// if (debug_level == UNSET_INT)
|
||||
// debug_level = DEFAULT_DEBUG_LEVEL;
|
||||
if (lcd_port == UNSET_INT)
|
||||
lcd_port = DEFAULT_LCD_PORT;
|
||||
if (bind_addr[0] == 0)
|
||||
if (strcmp( bind_addr, UNSET_STR ) == 0)
|
||||
strncpy (bind_addr, DEFAULT_BIND_ADDR, sizeof(bind_addr));
|
||||
if (configfile[0] == 0)
|
||||
if (strcmp( configfile, UNSET_STR ) == 0)
|
||||
strncpy (configfile, DEFAULT_CONFIGFILE, sizeof(configfile));
|
||||
if (user[0] == 0)
|
||||
if (strcmp( user, UNSET_STR ) == 0)
|
||||
strncpy(user, DEFAULT_USER, sizeof(user));
|
||||
|
||||
if (daemon_mode == -1)
|
||||
if (daemon_mode == UNSET_INT)
|
||||
daemon_mode = DEFAULT_DAEMON_MODE;
|
||||
if (enable_server_screen == -1)
|
||||
if (enable_server_screen == UNSET_INT)
|
||||
enable_server_screen = DEFAULT_ENABLE_SERVER_SCREEN;
|
||||
|
||||
if (default_duration == -1)
|
||||
if (default_duration == UNSET_INT)
|
||||
default_duration = DEFAULT_SCREEN_DURATION;
|
||||
if (backlight == -1)
|
||||
if (backlight == UNSET_INT)
|
||||
backlight = BACKLIGHT_OPEN;
|
||||
|
||||
if (reportToSyslog == UNSET_INT )
|
||||
reportToSyslog = DEFAULT_REPORTTOSYSLOG;
|
||||
if( reportLevel == UNSET_INT )
|
||||
reportLevel = DEFAULT_REPORTLEVEL;
|
||||
|
||||
|
||||
// Use default driver
|
||||
if( num_drivers == 0 ) {
|
||||
drivernames[0] = malloc(strlen(DEFAULT_DRIVER)+1);
|
||||
@@ -477,10 +518,12 @@ daemonize()
|
||||
{
|
||||
int child;
|
||||
|
||||
report( RPT_INFO, "daemonize()" );
|
||||
|
||||
switch ((child = fork ()) ) {
|
||||
case -1:
|
||||
syslog(LOG_ERR, "could not fork");
|
||||
return 1;
|
||||
report(RPT_ERR, "Could not fork");
|
||||
return -1;
|
||||
case 0: // We are the child
|
||||
break;
|
||||
default: // We are the parent
|
||||
@@ -502,17 +545,18 @@ daemonize()
|
||||
int
|
||||
init_sockets ()
|
||||
{
|
||||
report( RPT_INFO, "init_sockets()" );
|
||||
|
||||
if (sock_create_server (&bind_addr, lcd_port) <= 0) {
|
||||
syslog(LOG_ERR, "error opening socket");
|
||||
return 1;
|
||||
report(RPT_ERR, "Error opening socket");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Now init a bunch of required stuff...
|
||||
|
||||
if (client_init () < 0) {
|
||||
syslog(LOG_ERR, "error initializing client list");
|
||||
return 1;
|
||||
report(RPT_ERR, "Error initializing client list");
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -522,10 +566,11 @@ int
|
||||
init_drivers()
|
||||
{
|
||||
int i, res;
|
||||
char buf[64];
|
||||
|
||||
int output_loaded = 0;
|
||||
|
||||
report( RPT_INFO, "init_drivers()" );
|
||||
|
||||
// FIXME: This sets s equal to a value related to i
|
||||
// (bitshifted left?) FIX FIX FIX ARGH....
|
||||
//
|
||||
@@ -550,8 +595,7 @@ init_drivers()
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
snprintf(buf, sizeof(buf), "Could not load driver %s\n", drivernames[i]);
|
||||
fprintf(stderr, buf);
|
||||
report( RPT_ERR, "Could not load driver %.40s", drivernames[i] );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -559,6 +603,7 @@ init_drivers()
|
||||
if ( output_loaded ) {
|
||||
return 0;
|
||||
} else {
|
||||
report( RPT_ERR, "There is no output driver" );
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -568,20 +613,16 @@ int drop_privs(char *user)
|
||||
{
|
||||
struct passwd *pwent;
|
||||
|
||||
report( RPT_INFO, "drop_privs()" );
|
||||
|
||||
if (getuid() == 0 || geteuid() == 0) {
|
||||
if ((pwent = getpwnam(user)) == NULL) {
|
||||
if (errno) {
|
||||
perror("LCDd: getpwnam");
|
||||
return 1;
|
||||
} else {
|
||||
fprintf(stderr, "user %s not a valid user!", user);
|
||||
return 1;
|
||||
}
|
||||
report( RPT_ERR, "User %.40s not a valid user!", user );
|
||||
return -1;
|
||||
} else {
|
||||
if (setuid(pwent->pw_uid) < 0) {
|
||||
fprintf(stderr, "unable to switch to user %s\n", user);
|
||||
perror("LCDd: setuid");
|
||||
return 1;
|
||||
report( RPT_ERR, "Unable to switch to user %.40s", user );
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -592,14 +633,16 @@ int drop_privs(char *user)
|
||||
int
|
||||
init_screens ()
|
||||
{
|
||||
report( RPT_INFO, "init_screens()" );
|
||||
|
||||
if (screenlist_init () < 0) {
|
||||
syslog(LOG_ERR, "error initializing screen list");
|
||||
return 1;
|
||||
report(RPT_ERR, "Error initializing screen list");
|
||||
return -1;
|
||||
}
|
||||
// Make sure the server screen shows up every once in a while..
|
||||
if (server_screen_init () < 0) {
|
||||
syslog(LOG_ERR, "error initializing server screens");
|
||||
return 1;
|
||||
report(RPT_ERR, "Error initializing server screens");
|
||||
return -1;
|
||||
} else if (!enable_server_screen) {
|
||||
server_screen->priority = 256;
|
||||
}
|
||||
@@ -612,7 +655,9 @@ do_mainloop ()
|
||||
{
|
||||
screen *s = NULL;
|
||||
char *message=NULL;
|
||||
|
||||
|
||||
report( RPT_INFO, "do_mainloop()" );
|
||||
|
||||
//char buf[64];
|
||||
|
||||
// FIXME: s should still be null from initialization.... what's happening here?!
|
||||
@@ -632,7 +677,7 @@ do_mainloop ()
|
||||
|
||||
// this is here because s is getting overwritten...
|
||||
//if (s != screenlist_current()) {
|
||||
// syslog(LOG_DEBUG, "internal error! s was found overwritten at main.c:637");
|
||||
// report(RPT_DEBUG, "internal error! s was found overwritten at main.c:637");
|
||||
// s = screenlist_current();
|
||||
//}
|
||||
//
|
||||
@@ -665,33 +710,33 @@ do_mainloop ()
|
||||
|
||||
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.
|
||||
//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");
|
||||
report(RPT_ERR, "Error allocating message string");
|
||||
else {
|
||||
snprintf(message, 256, "Screen->%s has timeout->%d", s->name, s->timeout);
|
||||
syslog(LOG_NOTICE, message);
|
||||
report(RPT_DEBUG, message);
|
||||
free(message);
|
||||
}
|
||||
if (s && s->timeout != -1) {
|
||||
|
||||
|
||||
--(s->timeout);
|
||||
if((message = malloc(256)) == NULL)
|
||||
syslog(LOG_NOTICE, "Error allocating message string");
|
||||
report(RPT_ERR, "Error allocating message string");
|
||||
else {
|
||||
snprintf(message, 256, "Timeout matches check, screen %s has timeout->%d", s->name, s->timeout);
|
||||
syslog(LOG_NOTICE, message);
|
||||
report(RPT_DEBUG, 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");
|
||||
report(RPT_ERR, "Error allocating message string");
|
||||
else {
|
||||
snprintf(message, 256, "Removing screen %s which has timeout->%d", s->name, s->timeout);
|
||||
syslog(LOG_NOTICE, message);
|
||||
report(RPT_DEBUG, message);
|
||||
free(message);
|
||||
}
|
||||
}
|
||||
@@ -707,28 +752,38 @@ exit_program (int val)
|
||||
{
|
||||
char buf[64];
|
||||
|
||||
report( RPT_INFO, "exit_program()" );
|
||||
|
||||
// TODO: These things shouldn't be so interdependent. The order
|
||||
// things are shut down in shouldn't matter...
|
||||
|
||||
strcpy(buf, "server shutting down on ");
|
||||
strcpy(buf, "Server shutting down on ");
|
||||
switch(val) {
|
||||
case 1: strcat(buf, "SIGHUP"); break;
|
||||
case 2: strcat(buf, "SIGINT"); break;
|
||||
case 15: strcat(buf, "SIGTERM"); break;
|
||||
default: snprintf(buf, sizeof(buf), "server shutting down on signal %d", val); break;
|
||||
default: snprintf(buf, sizeof(buf), "Server shutting down on signal %d", val); break;
|
||||
// Other values should not be seen, but just in case..
|
||||
}
|
||||
|
||||
syslog(LOG_NOTICE, buf); // send message to syslog
|
||||
report(RPT_NOTICE, buf); // report it
|
||||
|
||||
// Set emergency reporting and flush all messages if not done already.
|
||||
if( reportLevel == UNSET_INT )
|
||||
reportLevel = DEFAULT_REPORTLEVEL;
|
||||
if( reportToSyslog == UNSET_INT )
|
||||
reportLevel = DEFAULT_REPORTLEVEL;
|
||||
set_reporting( reportLevel, (reportToSyslog?RPT_DEST_SYSLOG:RPT_DEST_STDERR) );
|
||||
|
||||
goodbye_screen (); // display goodbye screen on LCD display
|
||||
unload_all_drivers (); // release driver memory and file descriptors
|
||||
|
||||
client_shutdown (); // shutdown clients (must come first)
|
||||
screenlist_shutdown (); // shutdown screens (must come after client_shutdown)
|
||||
sock_close_all (); // close all open sockets (must come after client_shutdown)
|
||||
// Shutdown things if server start was complete
|
||||
if( serverStarted ) {
|
||||
goodbye_screen (); // display goodbye screen on LCD display
|
||||
unload_all_drivers (); // release driver memory and file descriptors
|
||||
|
||||
client_shutdown (); // shutdown clients (must come first)
|
||||
screenlist_shutdown (); // shutdown screens (must come after client_shutdown)
|
||||
sock_close_all (); // close all open sockets (must come after client_shutdown)
|
||||
}
|
||||
|
||||
exit (0);
|
||||
}
|
||||
@@ -737,11 +792,14 @@ exit_program (int val)
|
||||
void
|
||||
HelpScreen ()
|
||||
{
|
||||
// Help screen is printed to stdout on purpose. No reason to have
|
||||
// this in syslog...
|
||||
report( RPT_INFO, "HelpScreen()" );
|
||||
|
||||
printf ("\nLCDd Server Daemon (part of lcdproc), %s\n", version);
|
||||
printf ("Copyright (c) 1999 Scott Scriven, William Ferrell, and misc contributors\n");
|
||||
printf ("This program is freely redistributable under the terms of the GNU Public License\n\n");
|
||||
printf ("Usage: LCDd [ -hfiw ] [ -c <config> ] [ -d <driver> ] [ -a <addr> ] \\\n\t[ -p <port> ] [ -u <user> ] [ -w <time> ]\n\n");
|
||||
printf ("Usage: LCDd [ -hfiws ] [ -c <config> ] [ -d <driver> ] [ -a <addr> ] \\\n\t[ -p <port> ] [ -u <user> ] [ -w <time> ] [ -r <level> ]\n\n");
|
||||
printf ("Available options are:\n");
|
||||
|
||||
printf ("\t-h\t\tDisplay this help screen\n");
|
||||
@@ -753,10 +811,12 @@ HelpScreen ()
|
||||
printf ("\t-f\t\tRun in the foreground\n");
|
||||
//printf ("\t-b\t--backlight <mode>\n\t\t\tSet backlight mode (on, off, open)\n");
|
||||
printf ("\t-i\t\tDisable showing of the main LCDproc server screen\n");
|
||||
printf ("\t-w <waittime>\tTime to pause at each screen (in 1/8s of a second)\n");
|
||||
printf ("\t-w <waittime>\tTime to pause at each screen (in seconds)\n");
|
||||
printf ("\t-a <addr>\tNetwork (IP) address to bind to\n");
|
||||
printf ("\t-p <port>\tNetwork port to listen for connections on\n");
|
||||
printf ("\t-u <user>\tUser to run as\n");
|
||||
printf ("\t-s\t\tOutput messages to syslog\n");
|
||||
printf ("\t-r <level>\tReport level (default=2)\n");
|
||||
|
||||
printf ("\nCurrently available drivers:\n");
|
||||
lcd_list_drivers();
|
||||
|
||||
+3
-3
@@ -7,14 +7,14 @@
|
||||
So far, all menus are static, and not dynamically generated. I'll
|
||||
have to find a way to fix this, since many menu items will be dynamic.
|
||||
(clients connected, screens available, etc...)
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
|
||||
#include "drivers/lcd.h"
|
||||
|
||||
@@ -292,7 +292,7 @@ Contrast_func (int input)
|
||||
void
|
||||
server_menu ()
|
||||
{
|
||||
debug ("server_menu()\n");
|
||||
debug (RPT_DEBUG, "server_menu()");
|
||||
|
||||
do_menu (main_menu);
|
||||
|
||||
|
||||
+13
-11
@@ -6,7 +6,7 @@
|
||||
|
||||
It works much like a command line. Only the first token is used to
|
||||
determine what function to call.
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
#include "shared/LL.h"
|
||||
#include "shared/sockets.h"
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
#include "clients.h"
|
||||
#include "client_functions.h"
|
||||
#include "parse.h"
|
||||
@@ -42,6 +42,8 @@ parse_all_client_messages ()
|
||||
int invalid = 0;
|
||||
int quoteindex;
|
||||
|
||||
debug( RPT_DEBUG, "parse_all_client_messages()" );
|
||||
|
||||
for (i = 0; i < MAX_ARGUMENTS; i++) {
|
||||
argv[i] = NULL;
|
||||
}
|
||||
@@ -50,17 +52,17 @@ parse_all_client_messages ()
|
||||
#define LINE_TERM_CHAR '\0'
|
||||
#define COMMENT_CHAR '#'
|
||||
|
||||
//debug("parse: Rewinding list...\n");
|
||||
//debug("parse: Rewinding list...");
|
||||
LL_Rewind (clients);
|
||||
do {
|
||||
// Get the next client...
|
||||
//debug("parse: Getting client...\n");
|
||||
//debug("parse: Getting client...");
|
||||
c = LL_Get (clients);
|
||||
if (c) {
|
||||
// And parse all its messages...
|
||||
//debug("parse: Getting messages...\n");
|
||||
//debug(RPT_DEBUG, "parse: Getting messages...");
|
||||
for (str = client_get_message (c); str; str = client_get_message (c)) {
|
||||
debug ("parse: ...%s\n", str);
|
||||
debug (RPT_DEBUG, "parse: ...%s", str);
|
||||
// Now, split up the string...
|
||||
argc = 0;
|
||||
i = 0;
|
||||
@@ -70,7 +72,7 @@ parse_all_client_messages ()
|
||||
continue; // found a comment line - skip it...
|
||||
}
|
||||
|
||||
//fprintf(stderr, "starting string scan...\n");
|
||||
debug (RPT_DEBUG, "starting string scan...");
|
||||
|
||||
do {
|
||||
// bypass initial white space...
|
||||
@@ -98,7 +100,7 @@ parse_all_client_messages ()
|
||||
// Handle quoted strings...
|
||||
if ((s = strchr(leftquote, *p)) != NULL) {
|
||||
quoteindex = s - leftquote;
|
||||
//fprintf(stderr, "found <%c> at index [%d] = <%c>\n", *p, quoteindex, leftquote[quoteindex]);
|
||||
//debug(RPT_DEBUG, "found <%c> at index [%d] = <%c>", *p, quoteindex, leftquote[quoteindex]);
|
||||
q = ++p; // past open quote...
|
||||
while ((rightquote[quoteindex] != *p) && (*p != LINE_TERM_CHAR)) {
|
||||
p++;
|
||||
@@ -130,11 +132,11 @@ parse_all_client_messages ()
|
||||
// Not end of line?
|
||||
if (*p) {
|
||||
*p = LINE_TERM_CHAR;
|
||||
//fprintf(stderr, "found new token: %s\n", q);
|
||||
//debug(RPT_DEBUG, "found new token: %s", q);
|
||||
argv[i++] = q;
|
||||
q = ++p;
|
||||
} else {
|
||||
//fprintf(stderr, "found new token: %s\n", q);
|
||||
//debug(RPT_DEBUG, "found new token: %s", q);
|
||||
argv[i++] = q;
|
||||
}
|
||||
// At the end of this statement,
|
||||
@@ -146,7 +148,7 @@ parse_all_client_messages ()
|
||||
argc++;
|
||||
} while (*p);
|
||||
|
||||
//fprintf(stderr, "exiting string scan...\n");
|
||||
//debug(RPT_DEBUG, "exiting string scan...");
|
||||
|
||||
argv[argc] = NULL;
|
||||
if (argc < 1)
|
||||
|
||||
+16
-16
@@ -10,7 +10,7 @@
|
||||
This will probably take a while to do. :(
|
||||
|
||||
THIS FILE IS MESSY! Anyone care to rewrite it nicely? Please?? :)
|
||||
|
||||
|
||||
NOTE: (from David Douthitt) Multiple screen sizes? Multiple simultaneous
|
||||
screens? Horrors of horrors... next thing you know it'll be making coffee...
|
||||
Better believe it'll take a while to do...
|
||||
@@ -20,7 +20,7 @@
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
#include "shared/LL.h"
|
||||
|
||||
#include "drivers/lcd.h"
|
||||
@@ -49,12 +49,12 @@ draw_screen (screen * s, int timer)
|
||||
static screen *old_s = NULL;
|
||||
int tmp = 0, tmp_state = 0;
|
||||
|
||||
//debug("Render...\n");
|
||||
//debug(RPT_DEBUG, "Render...");
|
||||
//return 0;
|
||||
|
||||
reset = 1;
|
||||
|
||||
//debug("draw_screen: %8x, %i\n", (int)s, timer);
|
||||
//debug(RPT_DEBUG, "draw_screen: %8x, %i", (int)s, timer);
|
||||
|
||||
if (!s)
|
||||
return -1;
|
||||
@@ -73,7 +73,7 @@ draw_screen (screen * s, int timer)
|
||||
// lcd_ptr->backlight_brightness, lcd_ptr->backlight_flash ...
|
||||
|
||||
// If the screen's backlight_state isn't set (default) then we
|
||||
// inherit the backlight state from the parent client. This allows
|
||||
// inherit the backlight state from the parent client. This allows
|
||||
// the client to override it's childrens settings.
|
||||
if (s->backlight_state == BACKLIGHT_NOTSET) {
|
||||
if (s->parent) tmp_state = s->parent->backlight_state;
|
||||
@@ -121,7 +121,7 @@ draw_screen (screen * s, int timer)
|
||||
// Draw a frame...
|
||||
draw_frame (s->widgets, 'v', 0, 0, lcd_ptr->wid, lcd_ptr->hgt, s->wid, s->hgt, (((s->duration / s->hgt) < 1) ? 1 : (s->duration / s->hgt)), timer);
|
||||
|
||||
//debug("draw_screen done\n");
|
||||
//debug(RPT_DEBUG, "draw_screen done");
|
||||
|
||||
if (heartbeat) {
|
||||
lcd_ptr->heartbeat(s->heartbeat);
|
||||
@@ -143,7 +143,7 @@ draw_screen (screen * s, int timer)
|
||||
// flush display out, frame and all...
|
||||
lcd_ptr->flush ();
|
||||
|
||||
//debug("draw_screen: %8x, %i\n", s, timer);
|
||||
//debug(RPT_DEBUG, "draw_screen: %8x, %i", s, timer);
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -213,12 +213,12 @@ draw_frame (LinkedList * list,
|
||||
} else if (HorizontalScrolling) {
|
||||
// TODO: Frames don't scroll horizontally yet!
|
||||
}
|
||||
//debug("draw_screen: %8x, %i\n", s, timer);
|
||||
//debug(RPT_DEBUG, "draw_screen: %8x, %i", s, timer);
|
||||
|
||||
if (!list)
|
||||
return -1;
|
||||
|
||||
//debug("draw_frame: %8x, %i\n", frame, timer);
|
||||
//debug(RPT_DEBUG, "draw_frame: %8x, %i", frame, timer);
|
||||
|
||||
#define PositiveX(a) ((a)->x > 0)
|
||||
#define PositiveY(a) ((a)->y > 0)
|
||||
@@ -334,7 +334,7 @@ draw_frame (LinkedList * list,
|
||||
break;
|
||||
if (w->right < w->left)
|
||||
break;
|
||||
//printf("rendering: %s %d\n",w->text,timer);
|
||||
//printf(RPT_DEBUG, "rendering: %s %d",w->text,timer);
|
||||
screen_width = w->right - w->left + 1;
|
||||
switch (w->length) { // actually, direction...
|
||||
// FIXED: Horz scrollers don't show the
|
||||
@@ -382,7 +382,7 @@ draw_frame (LinkedList * list,
|
||||
if (offset <= length) {
|
||||
strncpy (str, &((w->text)[offset]), screen_width);
|
||||
str[screen_width] = '\0';
|
||||
//printf("%s : %d\n",str,length-offset);
|
||||
//debug(RPT_DEBUG, "scroller %s : %d", str, length-offset);
|
||||
} else {
|
||||
str[0] = '\0';
|
||||
}
|
||||
@@ -416,15 +416,15 @@ draw_frame (LinkedList * list,
|
||||
int begin = 0;
|
||||
if (!screenlist_action)
|
||||
screenlist_action = RENDER_HOLD;
|
||||
//printf("length: %d sw: %d lines req: %d avail lines: %d effLines: %d \n",length,screen_width,lines_required,available_lines,effLines);
|
||||
//debug(RPT_DEBUG, "length: %d sw: %d lines req: %d avail lines: %d effLines: %d ",length,screen_width,lines_required,available_lines,effLines);
|
||||
if (w->speed > 0) {
|
||||
necessaryTimeUnits = effLines * w->speed;
|
||||
if (((timer / (effLines * w->speed)) % 2) == 0) {
|
||||
//printf("up ");
|
||||
//debug(RPT_DEBUG, "up ");
|
||||
begin = (timer % (effLines * w->speed))
|
||||
/ w->speed;
|
||||
} else {
|
||||
//printf("down ");
|
||||
//debug(RPT_DEBUG, "down ");
|
||||
begin = (((timer % (effLines * w->speed))
|
||||
- (effLines * w->speed) + 1) / w->speed)
|
||||
* -1;
|
||||
@@ -442,11 +442,11 @@ draw_frame (LinkedList * list,
|
||||
} else {
|
||||
begin = 0;
|
||||
}
|
||||
//printf("rendering begin: %d timer: %d effLines: %d\n",begin,timer,effLines);
|
||||
//debug(RPT_DEBUG, "rendering begin: %d timer: %d effLines: %d",begin,timer,effLines);
|
||||
for (i = begin; i < begin + available_lines; i++) {
|
||||
strncpy (str, &((w->text)[i * (screen_width)]), screen_width);
|
||||
str[screen_width] = '\0';
|
||||
//printf("rendering: '%s' of %s\n",
|
||||
//debug(RPT_DEBUG, "rendering: '%s' of %s",
|
||||
//str,w->text);
|
||||
lcd_ptr->string (w->left, w->top + (i - begin), str);
|
||||
}
|
||||
|
||||
+12
-12
@@ -2,7 +2,7 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
|
||||
#include "drivers/lcd.h"
|
||||
|
||||
@@ -24,7 +24,7 @@ screen_create ()
|
||||
|
||||
s = malloc (sizeof (screen));
|
||||
if (!s) {
|
||||
fprintf (stderr, "screen_create: Error allocating new screen\n");
|
||||
report(RPT_ERR, "screen_create: Error allocating new screen");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -38,13 +38,13 @@ screen_create ()
|
||||
s->keys = NULL;
|
||||
s->parent = NULL;
|
||||
s->widgets = NULL;
|
||||
s->timeout = default_timeout; //ignored unless greater than 0.
|
||||
s->timeout = default_timeout; //ignored unless greater than 0.
|
||||
s->backlight_state = BACKLIGHT_NOTSET; //Lets the screen do it's own
|
||||
//or do what the client says.
|
||||
|
||||
|
||||
s->widgets = LL_new ();
|
||||
if (!s->widgets) {
|
||||
fprintf (stderr, "screen_create: Error allocating widget list\n");
|
||||
report(RPT_ERR, "screen_create: Error allocating widget list");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -89,13 +89,13 @@ screen_find (client * c, char *id)
|
||||
if (!id)
|
||||
return NULL;
|
||||
|
||||
debug ("client_find_screen(%s)\n", id);
|
||||
debug (RPT_INFO, "client_find_screen(%s)", id);
|
||||
|
||||
LL_Rewind (c->data->screenlist);
|
||||
do {
|
||||
s = LL_Get (c->data->screenlist);
|
||||
if ((s) && (0 == strcmp (s->id, id))) {
|
||||
debug ("client_find_screen: Found %s\n", id);
|
||||
debug (RPT_DEBUG, "client_find_screen: Found %s", id);
|
||||
return s;
|
||||
}
|
||||
} while (LL_Next (c->data->screenlist) == 0);
|
||||
@@ -121,7 +121,7 @@ screen_add (client * c, char *id)
|
||||
|
||||
s = screen_create ();
|
||||
if (!s) {
|
||||
fprintf (stderr, "screen_add: Error creating screen\n");
|
||||
report (RPT_ERR, "screen_add: Error creating screen");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -129,7 +129,7 @@ screen_add (client * c, char *id)
|
||||
|
||||
s->id = strdup (id);
|
||||
if (!s->id) {
|
||||
fprintf (stderr, "screen_add: Error allocating name\n");
|
||||
report (RPT_ERR, "screen_add: Error allocating name");
|
||||
return -1;
|
||||
}
|
||||
// TODO: Check for errors here?
|
||||
@@ -137,7 +137,7 @@ screen_add (client * c, char *id)
|
||||
|
||||
// Now, add it to the screenlist...
|
||||
if (screenlist_add (s) < 0) {
|
||||
fprintf (stderr, "screen_add: Error queueing new screen\n");
|
||||
report (RPT_ERR, "screen_add: Error queueing new screen");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ screen_remove (client * c, char *id)
|
||||
// Make sure this screen *does* exist...
|
||||
s = screen_find (c, id);
|
||||
if (!s) {
|
||||
fprintf (stderr, "screen_remove: Error finding screen %s\n", id);
|
||||
report (RPT_ERR, "screen_remove: Error finding screen %s", id);
|
||||
return 1;
|
||||
}
|
||||
// TODO: Check for errors here?
|
||||
@@ -166,7 +166,7 @@ screen_remove (client * c, char *id)
|
||||
// Now, remove it from the screenlist...
|
||||
if (screenlist_remove_all (s) < 0) {
|
||||
// Not a serious error..
|
||||
fprintf (stderr, "screen_remove: Error dequeueing screen\n");
|
||||
report (RPT_ERR, "screen_remove: Error dequeueing screen");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
+27
-29
@@ -1,10 +1,9 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <syslog.h>
|
||||
|
||||
#include "shared/LL.h"
|
||||
#include "shared/sockets.h"
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
#include "screenlist.h"
|
||||
#include "screen.h"
|
||||
#include "clients.h"
|
||||
@@ -26,11 +25,11 @@ int compare_addresses (void *one, void *two);
|
||||
int
|
||||
screenlist_init ()
|
||||
{
|
||||
debug ("screenlist_init()\n");
|
||||
report (RPT_INFO, "screenlist_init()");
|
||||
|
||||
screenlist = LL_new ();
|
||||
if (!screenlist) {
|
||||
syslog(LOG_ERR, "screenlist_init: error allocating list");
|
||||
report(RPT_ERR, "screenlist_init: error allocating list");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -43,7 +42,7 @@ screenlist_init ()
|
||||
int
|
||||
screenlist_shutdown ()
|
||||
{
|
||||
debug ("screenlist_shutdown()\n");
|
||||
report (RPT_INFO, "screenlist_shutdown()");
|
||||
|
||||
LL_Destroy (screenlist);
|
||||
|
||||
@@ -53,7 +52,7 @@ screenlist_shutdown ()
|
||||
int
|
||||
screenlist_remove (screen * s)
|
||||
{
|
||||
debug ("screenlist_remove()\n");
|
||||
report (RPT_INFO, "screenlist_remove()");
|
||||
|
||||
if (!LL_Remove (screenlist, s))
|
||||
return -1;
|
||||
@@ -66,12 +65,12 @@ screenlist_remove_all (screen * s)
|
||||
{
|
||||
int i = 0;
|
||||
|
||||
debug ("screenlist_remove_all()\n");
|
||||
report (RPT_INFO, "screenlist_remove_all()");
|
||||
|
||||
while (LL_Remove (screenlist, s))
|
||||
i++;
|
||||
|
||||
debug ("screenlist_remove_all()... got %i\n", i);
|
||||
debug (RPT_DEBUG, "screenlist_remove_all()... got %i", i);
|
||||
|
||||
return i;
|
||||
}
|
||||
@@ -79,7 +78,7 @@ screenlist_remove_all (screen * s)
|
||||
LinkedList *
|
||||
screenlist_getlist ()
|
||||
{
|
||||
debug ("screenlist_getlist()\n");
|
||||
report (RPT_INFO, "screenlist_getlist()");
|
||||
|
||||
return screenlist;
|
||||
}
|
||||
@@ -92,24 +91,25 @@ screenlist_current ()
|
||||
static screen *old_s = NULL;
|
||||
client *c;
|
||||
|
||||
//debug("screenlist_current:\n");
|
||||
debug( RPT_INFO, "screenlist_current:");
|
||||
|
||||
//LL_dprint(screenlist);
|
||||
|
||||
s = (screen *) LL_GetFirst (screenlist);
|
||||
|
||||
// FIXME: Make sure the screen/client exists!
|
||||
if (s != old_s) {
|
||||
debug ("screenlist_current: new screen\n");
|
||||
//debug (RPT_DEBUG, "screenlist_current: new screen");
|
||||
timer = 0;
|
||||
|
||||
// Tell the client we're done with the current screen
|
||||
if (old_s) {
|
||||
//debug("screenlist_current: ignoring old screen\n");
|
||||
//debug(RPT_DEBUG, "screenlist_current: ignoring old screen");
|
||||
LL_Rewind (screenlist);
|
||||
if (old_s != LL_Find (screenlist, compare_addresses, old_s)) {
|
||||
debug ("screenlist: Didn't find screen 0x%8x!\n", (int) old_s);
|
||||
report (RPT_WARNING, "screenlist: Didn't find screen 0x%8x!", (int) old_s);
|
||||
} else {
|
||||
//debug("screenlist_current: ... sending ignore\n");
|
||||
//debug(RPT_DEBUG, "screenlist_current: ... sending ignore");
|
||||
c = old_s->parent;
|
||||
if (c) // Tell the client we're not listening any more...
|
||||
{
|
||||
@@ -119,11 +119,11 @@ screenlist_current ()
|
||||
{
|
||||
;
|
||||
}
|
||||
//debug("screenlist_current: ... sent ignore\n");
|
||||
//debug(RPT_DEBUG, "screenlist_current: ... sent ignore");
|
||||
}
|
||||
}
|
||||
if (s) {
|
||||
//debug("screenlist_current: listening to new screen\n");
|
||||
//debug(RPT_DEBUG, "screenlist_current: listening to new screen");
|
||||
c = s->parent;
|
||||
if (c) // Tell the client we're paying attention...
|
||||
{
|
||||
@@ -138,7 +138,7 @@ screenlist_current ()
|
||||
|
||||
old_s = s;
|
||||
|
||||
//debug("screenlist_current: return %8x\n", s);
|
||||
//debug(RPT_DEBUG, "screenlist_current: return %8x", s);
|
||||
|
||||
return s;
|
||||
}
|
||||
@@ -155,7 +155,7 @@ screenlist_next ()
|
||||
{
|
||||
screen *s;
|
||||
|
||||
//debug("Screenlist_next()\n");
|
||||
//debug(RPT_DEBUG, "Screenlist_next()");
|
||||
|
||||
s = screenlist_current ();
|
||||
|
||||
@@ -168,14 +168,14 @@ screenlist_next ()
|
||||
// Otherwise, reset it to regular operation
|
||||
screenlist_action = 0;
|
||||
|
||||
//debug("Screenlist_next: calling handler...\n");
|
||||
//debug(RPT_DEBUG, "Screenlist_next: calling handler...");
|
||||
|
||||
// Call the selected queuing function...
|
||||
// TODO: Different queueing modes...
|
||||
s = screenlist_next_priority ();
|
||||
//s = screenlist_next_roll();
|
||||
|
||||
//debug("Screenlist_next() done\n");
|
||||
//debug(RPT_DEBUG, "Screenlist_next() done");
|
||||
|
||||
return s;
|
||||
}
|
||||
@@ -207,7 +207,7 @@ screenlist_prev ()
|
||||
int
|
||||
screenlist_add_end (screen * screen)
|
||||
{
|
||||
debug ("screenlist_add_end()\n");
|
||||
debug (RPT_DEBUG, "screenlist_add_end()");
|
||||
|
||||
return LL_Push (screenlist, (void *) screen);
|
||||
}
|
||||
@@ -216,7 +216,7 @@ screenlist_add_end (screen * screen)
|
||||
screen *
|
||||
screenlist_next_roll ()
|
||||
{
|
||||
//debug("screenlist_next_roll()\n");
|
||||
//debug(RPT_DEBUG, "screenlist_next_roll()");
|
||||
|
||||
if (LL_UnRoll (screenlist) != 0)
|
||||
return NULL;
|
||||
@@ -229,7 +229,7 @@ screen *
|
||||
screenlist_next_priority ()
|
||||
{
|
||||
//screen *s, *t;
|
||||
//debug("screenlist_next_priority\n");
|
||||
//debug(RPT_DEBUG, "screenlist_next_priority");
|
||||
|
||||
if (LL_UnRoll (screenlist) != 0)
|
||||
return NULL;
|
||||
@@ -243,7 +243,7 @@ screenlist_next_priority ()
|
||||
screen *
|
||||
screenlist_prev_roll ()
|
||||
{
|
||||
//debug("screenlist_prev_roll()\n");
|
||||
//debug(RPT_DEBUG, "screenlist_prev_roll()");
|
||||
|
||||
if (LL_Roll (screenlist) != 0)
|
||||
return NULL;
|
||||
@@ -256,7 +256,7 @@ compare_priority (void *one, void *two)
|
||||
{
|
||||
screen *a, *b;
|
||||
|
||||
//debug("compare_priority: %8x %8x\n", one, two);
|
||||
//debug(RPT_DEBUG, "compare_priority: %8x %8x", one, two);
|
||||
|
||||
if (!one)
|
||||
return 0;
|
||||
@@ -266,7 +266,7 @@ compare_priority (void *one, void *two)
|
||||
a = (screen *) one;
|
||||
b = (screen *) two;
|
||||
|
||||
//debug("compare_priority: done?\n");
|
||||
//debug(RPT_DEBUG, "compare_priority: done?");
|
||||
|
||||
return (a->priority - b->priority);
|
||||
}
|
||||
@@ -274,8 +274,6 @@ compare_priority (void *one, void *two)
|
||||
int
|
||||
compare_addresses (void *one, void *two)
|
||||
{
|
||||
//printf("compare_addresses: 0x%x == 0x%x ???\n", one, two);
|
||||
//if(one == two) printf("Yes!\n");
|
||||
//else printf("No!\n");
|
||||
//printf(RPT_DEBUG, "compare_addresses: %p == %p ???", one, two);
|
||||
return (one != two);
|
||||
}
|
||||
|
||||
+12
-12
@@ -6,7 +6,7 @@
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
|
||||
#include "drivers/lcd.h"
|
||||
|
||||
@@ -36,12 +36,12 @@ server_screen_init ()
|
||||
{
|
||||
widget *w;
|
||||
|
||||
debug ("server_screen_init\n");
|
||||
debug (RPT_DEBUG, "server_screen_init");
|
||||
|
||||
server_screen = screen_create ();
|
||||
|
||||
if (!server_screen) {
|
||||
fprintf (stderr, "server_screen_init: Error allocating screen\n");
|
||||
report (RPT_ERR, "server_screen_init: Error allocating screen");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -50,43 +50,43 @@ server_screen_init ()
|
||||
server_screen->duration = 8; // 1 second, instead of 4...
|
||||
|
||||
if (widget_add (server_screen, "title", "title", NULL, 1) != 0) {
|
||||
fprintf (stderr, "server_screen_init: internal error: could not add title widget\n");
|
||||
report (RPT_ERR, "server_screen_init: internal error: could not add title widget");
|
||||
}
|
||||
if (widget_add (server_screen, "one", "string", NULL, 1) != 0) {
|
||||
fprintf (stderr, "server_screen_init: internal error: could not add title widget\n");
|
||||
report (RPT_ERR, "server_screen_init: internal error: could not add title widget");
|
||||
}
|
||||
if (widget_add (server_screen, "two", "string", NULL, 1) != 0) {
|
||||
fprintf (stderr, "server_screen_init: internal error: could not add title widget\n");
|
||||
report (RPT_ERR, "server_screen_init: internal error: could not add title widget");
|
||||
}
|
||||
if (widget_add (server_screen, "three", "string", NULL, 1) != 0) {
|
||||
fprintf (stderr, "server_screen_init: internal error: could not add title widget\n");
|
||||
report (RPT_ERR, "server_screen_init: internal error: could not add title widget");
|
||||
}
|
||||
|
||||
// Now, initialize all the widgets...
|
||||
if ((w = widget_find (server_screen, "title")) != NULL) {
|
||||
WidgetText(w,title);
|
||||
} else
|
||||
fprintf (stderr, "server_screen_init: Can't find title\n");
|
||||
report (RPT_ERR, "server_screen_init: Can't find title");
|
||||
|
||||
if ((w = widget_find (server_screen, "one")) != NULL)
|
||||
WidgetString(w,1,2,one)
|
||||
else
|
||||
fprintf (stderr, "server_screen_init: Can't find widget one\n");
|
||||
report (RPT_ERR, "server_screen_init: Can't find widget one");
|
||||
|
||||
if ((w = widget_find (server_screen, "two")) != NULL)
|
||||
WidgetString(w,1,3,two)
|
||||
else
|
||||
fprintf (stderr, "server_screen_init: Can't find widget two\n");
|
||||
report (RPT_ERR, "server_screen_init: Can't find widget two");
|
||||
|
||||
if ((w = widget_find (server_screen, "three")) != NULL)
|
||||
WidgetString(w,1,4,three)
|
||||
else
|
||||
fprintf (stderr, "server_screen_init: Can't find widget three\n");
|
||||
report (RPT_ERR, "server_screen_init: Can't find widget three");
|
||||
|
||||
// And enqueue the screen
|
||||
screenlist_add (server_screen);
|
||||
|
||||
debug ("server_screen_init done\n");
|
||||
debug (RPT_DEBUG, "server_screen_init done");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
+34
-40
@@ -18,8 +18,7 @@
|
||||
#include "shared/sockets.h"
|
||||
#include "sock.h"
|
||||
#include "clients.h"
|
||||
#include "shared/debug.h"
|
||||
#include "syslog.h"
|
||||
#include "shared/report.h"
|
||||
|
||||
extern char bind_addr[64];
|
||||
extern int lcd_port;
|
||||
@@ -45,36 +44,33 @@ sock_create_inet_socket (char * addr, unsigned int port)
|
||||
struct sockaddr_in name;
|
||||
int sock, sockopt=1;
|
||||
|
||||
debug ("sock_create_inet_socket(%i)\n", port);
|
||||
report (RPT_INFO, "sock_create_inet_socket(%i)", port);
|
||||
|
||||
/* Create the socket. */
|
||||
//debug("Creating Inet Socket\n");
|
||||
//debug(RPT_DEBUG, "Creating Inet Socket");
|
||||
sock = socket (PF_INET, SOCK_STREAM, 0);
|
||||
if (sock < 0) {
|
||||
perror ("Error creating socket");
|
||||
syslog(LOG_ALERT, "could not create socket");
|
||||
report(RPT_ERR, "Could not create socket");
|
||||
return -1;
|
||||
}
|
||||
/* Set the socket so we can re-use it*/
|
||||
if(setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&sockopt,sizeof(sockopt)) < 0) {
|
||||
perror("Error setting socket option SO_REUSEADDR");
|
||||
syslog(LOG_ALERT, "Error setting socket option SO_REUSEADDR");
|
||||
report(RPT_ERR, "Error setting socket option SO_REUSEADDR");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* Give the socket a name. */
|
||||
//debug("Binding Inet Socket\n");
|
||||
//debug(RPT_DEBUG, "Binding Inet Socket");
|
||||
memset (&name, 0, sizeof (name));
|
||||
name.sin_family = AF_INET;
|
||||
name.sin_port = htons (port);
|
||||
inet_aton(addr, &name.sin_addr);
|
||||
|
||||
if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0) {
|
||||
perror ("Error binding socket");
|
||||
syslog(LOG_ALERT, "could not bind to port %d", port);
|
||||
report(RPT_ERR, "Could not bind to port %d", port);
|
||||
return -1;
|
||||
} else {
|
||||
syslog(LOG_NOTICE, "listening for queries on port %d", port);
|
||||
report(RPT_NOTICE, "listening for queries on port %d", port);
|
||||
}
|
||||
|
||||
return sock;
|
||||
@@ -87,18 +83,17 @@ sock_create_server (char *bind_addr, int lcd_port)
|
||||
{
|
||||
int sock;
|
||||
|
||||
debug ("sock_create_server()\n");
|
||||
report (RPT_INFO, "sock_create_server()");
|
||||
|
||||
/* Create the socket and set it up to accept connections. */
|
||||
sock = sock_create_inet_socket (bind_addr, lcd_port);
|
||||
if (sock < 0) {
|
||||
perror ("sock_create_server: Error creating socket");
|
||||
report (RPT_ERR, "sock_create_server: Error creating socket");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (listen (sock, 1) < 0) {
|
||||
perror ("sock_create_server: Listen error");
|
||||
syslog(LOG_ALERT, "error in attempting to listen to port");
|
||||
report(RPT_ERR, "error in attempting to listen to port");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -112,14 +107,14 @@ sock_create_server (char *bind_addr, int lcd_port)
|
||||
{
|
||||
int val, len, sock;
|
||||
sock = new;
|
||||
|
||||
|
||||
len = sizeof(int);
|
||||
getsockopt(sock, SOL_SOCKET, SO_SNDBUF, &val, &len);
|
||||
printf("SEND buffer: %i bytes\n", val);
|
||||
debug(RPT_DEBUG, "SEND buffer: %i bytes", val);
|
||||
|
||||
len = sizeof(int);
|
||||
getsockopt(sock, SOL_SOCKET, SO_RCVBUF, &val, &len);
|
||||
printf("RECV buffer: %i bytes\n", val);
|
||||
debug(RPT_DEBUG, "RECV buffer: %i bytes", val);
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -138,7 +133,7 @@ sock_poll_clients ()
|
||||
struct timeval t;
|
||||
client *c;
|
||||
|
||||
//debug("sock_poll_clients()\n");
|
||||
debug(RPT_INFO, "sock_poll_clients()");
|
||||
|
||||
t.tv_sec = 0;
|
||||
t.tv_usec = 0;
|
||||
@@ -147,7 +142,7 @@ sock_poll_clients ()
|
||||
read_fd_set = active_fd_set;
|
||||
|
||||
if (select (FD_SETSIZE, &read_fd_set, NULL, NULL, &t) < 0) {
|
||||
perror ("sock_poll_clients: Select error");
|
||||
report (RPT_ERR, "sock_poll_clients: Select error");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -160,12 +155,10 @@ sock_poll_clients ()
|
||||
size = sizeof (clientname);
|
||||
new = accept (orig_sock, (struct sockaddr *) &clientname, &size);
|
||||
if (new < 0) {
|
||||
perror ("sock_poll_clients: Accept error");
|
||||
syslog(LOG_WARNING, "error in accepting client");
|
||||
report (RPT_ERR, "sock_poll_clients: Accept error");
|
||||
return -1;
|
||||
}
|
||||
debug ("sock_poll_clients: connect from host %s, port %hd.\n", inet_ntoa (clientname.sin_addr), ntohs (clientname.sin_port));
|
||||
syslog(LOG_NOTICE, "connect from host %s:%hd on #%d",
|
||||
report (RPT_INFO, "sock_poll_clients: Connect from host %s:%hd on #%d",
|
||||
inet_ntoa (clientname.sin_addr), ntohs (clientname.sin_port), new);
|
||||
FD_SET (new, &active_fd_set);
|
||||
|
||||
@@ -173,16 +166,16 @@ sock_poll_clients ()
|
||||
|
||||
// TODO: Create new "client" here... (done?)
|
||||
if (client_create (new) == NULL) {
|
||||
fprintf (stderr, "sock_poll_clients: error creating client %i\n", i);
|
||||
report( RPT_ERR, "sock_poll_clients: error creating client %i", i);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
/* Data arriving on an already-connected socket. */
|
||||
err = 0;
|
||||
do {
|
||||
debug ("sock_poll_clients: reading...\n");
|
||||
debug (RPT_DEBUG, "sock_poll_clients: reading...");
|
||||
err = read_from_client (i);
|
||||
debug ("sock_poll_clients: ...done\n");
|
||||
debug (RPT_DEBUG, "sock_poll_clients: ...done");
|
||||
if (err < 0) {
|
||||
// TODO: Destroy a "client" here... (done?)
|
||||
c = client_find_sock (i);
|
||||
@@ -191,10 +184,9 @@ sock_poll_clients ()
|
||||
client_destroy (c);
|
||||
close (i);
|
||||
FD_CLR (i, &active_fd_set);
|
||||
debug ("sock_poll_clients: Closed connection %i\n", i);
|
||||
syslog(LOG_NOTICE, "closed connection #%i", i);
|
||||
report (RPT_INFO, "sock_poll_clients: Closed connection %i", i);
|
||||
} else
|
||||
fprintf (stderr, "sock_poll_clients: Can't find client %i\n", i);
|
||||
report (RPT_ERR, "sock_poll_clients: Can't find client %i", i);
|
||||
}
|
||||
} while (err > 0);
|
||||
|
||||
@@ -211,16 +203,18 @@ read_from_client (int filedes)
|
||||
int nbytes, i;
|
||||
client *c;
|
||||
|
||||
report(RPT_DEBUG, "read_from_client()" );
|
||||
|
||||
//nbytes = read (filedes, buffer, MAXMSG);
|
||||
//debug("read_from_client(%i): reading...\n", filedes);
|
||||
//debug(RPT_DEBUG, "read_from_client(%i): reading...", filedes);
|
||||
//nbytes = sock_recv (filedes, buffer, MAXMSG);
|
||||
//debug("read_from_client(%i): ...done\n", filedes);
|
||||
//debug ("read_from_client(%i): %i bytes\n", filedes, nbytes);
|
||||
//debug(RPT_DEBUG, "read_from_client(%i): ...done", filedes);
|
||||
//debug (RPT_DEBUG, "read_from_client(%i): %i bytes", filedes, nbytes);
|
||||
|
||||
errno = 0;
|
||||
if ((nbytes = sock_recv (filedes, buffer, MAXMSG)) < 0) {
|
||||
if (errno != EAGAIN)
|
||||
fprintf (stderr, "read_from_client: (fd %d) %s\n", filedes, strerror(errno));
|
||||
report (RPT_DEBUG, "read_from_client: (fd %d) %s", filedes, strerror(errno));
|
||||
return 0;
|
||||
} else if (nbytes == 0) // EOF
|
||||
return -1;
|
||||
@@ -240,9 +234,9 @@ read_from_client (int filedes)
|
||||
if (c) {
|
||||
client_add_message (c, buffer);
|
||||
} else
|
||||
fprintf (stderr, "read_from_client: Can't find client %i\n", filedes);
|
||||
report (RPT_DEBUG, "read_from_client: Can't find client %i", filedes);
|
||||
|
||||
debug ("read_from_client: got message: `%s'\n", buffer);
|
||||
debug (RPT_DEBUG, "read_from_client: got message: `%s'", buffer);
|
||||
return nbytes;
|
||||
}
|
||||
return nbytes;
|
||||
@@ -256,7 +250,7 @@ sock_close_all ()
|
||||
{
|
||||
int fd;
|
||||
|
||||
debug ("sock_close_all()\n");
|
||||
report (RPT_INFO, "sock_close_all()");
|
||||
|
||||
for (fd = 0; fd < FD_SETSIZE; fd++) {
|
||||
// TODO: Destroy a "client" here...? Nope.
|
||||
@@ -274,7 +268,7 @@ sock_close_all ()
|
||||
//sock_send_string (fd, "bye\n");
|
||||
close (fd);
|
||||
FD_CLR (fd, &active_fd_set);
|
||||
debug ("sock_close_all: Closed connection %i\n", fd);
|
||||
debug (RPT_DEBUG, "sock_close_all: Closed connection %i", fd);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+26
-26
@@ -3,7 +3,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "shared/sockets.h"
|
||||
#include "shared/debug.h"
|
||||
#include "shared/report.h"
|
||||
|
||||
#include "screen.h"
|
||||
#include "widget.h"
|
||||
@@ -30,11 +30,11 @@ widget_create ()
|
||||
{
|
||||
widget *w;
|
||||
|
||||
debug ("widget_create()\n");
|
||||
report (RPT_INFO, "widget_create()");
|
||||
|
||||
w = malloc (sizeof (widget));
|
||||
if (!w) {
|
||||
fprintf (stderr, "widget_create: Error allocating widget\n");
|
||||
report (RPT_DEBUG, "widget_create: Error allocating widget");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@@ -65,14 +65,14 @@ widget_destroy (widget * w)
|
||||
if (!w)
|
||||
return -1;
|
||||
|
||||
debug ("widget_destroy(%s)\n", w->id);
|
||||
debug (RPT_INFO, "widget_destroy(%s)", w->id);
|
||||
|
||||
if (w->id)
|
||||
free (w->id);
|
||||
//debug("widget_destroy: id...\n");
|
||||
//debug(RPT_DEBUG, "widget_destroy: id...");
|
||||
if (w->text)
|
||||
free (w->text);
|
||||
//debug("widget_destroy: text...\n");
|
||||
//debug(RPT_DEBUG, "widget_destroy: text...");
|
||||
|
||||
// TODO: Free kids!
|
||||
if (w->kids) {
|
||||
@@ -89,7 +89,7 @@ widget_destroy (widget * w)
|
||||
}
|
||||
|
||||
free (w);
|
||||
//debug("widget_destroy: widget...\n");
|
||||
//debug(RPT_DEBUG, "widget_destroy: widget...");
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -104,7 +104,7 @@ widget_find (screen * s, char *id)
|
||||
if (!id)
|
||||
return NULL;
|
||||
|
||||
debug ("widget_find(%s)\n", id);
|
||||
debug (RPT_DEBUG, "widget_find(%s)", id);
|
||||
|
||||
return widget_finder (s->widgets, id);
|
||||
}
|
||||
@@ -119,26 +119,26 @@ widget_finder (LinkedList * list, char *id)
|
||||
if (!id)
|
||||
return NULL;
|
||||
|
||||
debug ("widget_finder(%s)\n", id);
|
||||
debug (RPT_DEBUG, "widget_finder(%s)", id);
|
||||
|
||||
LL_Rewind (list);
|
||||
do {
|
||||
//debug("widget_finder: Iteration\n");
|
||||
//debug(RPT_DEBUG, "widget_finder: Iteration");
|
||||
w = LL_Get (list);
|
||||
if (w) {
|
||||
//debug("widget_finder: ...\n");
|
||||
//debug(RPT_DEBUG, "widget_finder: ...");
|
||||
if (0 == strcmp (w->id, id)) {
|
||||
debug ("widget_finder: Found %s\n", id);
|
||||
debug (RPT_DEBUG, "widget_finder: Found %s", id);
|
||||
return w;
|
||||
}
|
||||
// Search kids recursively
|
||||
//debug("widget_finder: ...\n");
|
||||
//debug(RPT_DEBUG, "widget_finder: ...");
|
||||
if (w->type == WID_FRAME) {
|
||||
err = widget_finder (w->kids, id);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
//debug("widget_finder: ...\n");
|
||||
//debug(RPT_DEBUG, "widget_finder: ...");
|
||||
}
|
||||
|
||||
} while (LL_Next (list) == 0);
|
||||
@@ -155,7 +155,7 @@ widget_add (screen * s, char *id, char *type, char *in, int sock)
|
||||
widget *w, *parent;
|
||||
LinkedList *list;
|
||||
|
||||
debug ("widget_add(%s, %s, %s)\n", id, type, in);
|
||||
report (RPT_INFO, "widget_add(%s, %s, %s)", id, type, in);
|
||||
|
||||
if (!s)
|
||||
return -1;
|
||||
@@ -187,7 +187,7 @@ widget_add (screen * s, char *id, char *type, char *in, int sock)
|
||||
if (parent->type == WID_FRAME) {
|
||||
list = parent->kids;
|
||||
if (!list)
|
||||
fprintf (stderr, "widget_add: Parent has no kids\n");
|
||||
report (RPT_DEBUG, "widget_add: Parent has no kids");
|
||||
} else {
|
||||
// no frame to use as parent
|
||||
sock_send_string (sock, "huh? Not a frame\n");
|
||||
@@ -211,18 +211,18 @@ widget_add (screen * s, char *id, char *type, char *in, int sock)
|
||||
return 2;
|
||||
}
|
||||
|
||||
debug ("widget_add: making widget\n");
|
||||
debug (RPT_DEBUG, "widget_add: making widget");
|
||||
|
||||
// Now, make it...
|
||||
w = widget_create ();
|
||||
if (!w) {
|
||||
fprintf (stderr, "widget_add: Error creating widget\n");
|
||||
report (RPT_ERR, "widget_add: Error creating widget");
|
||||
return -1;
|
||||
}
|
||||
|
||||
w->id = strdup (id);
|
||||
if (!w->id) {
|
||||
fprintf (stderr, "widget_add: Error allocating id\n");
|
||||
report (RPT_ERR, "widget_add: Error allocating id");
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -233,7 +233,7 @@ widget_add (screen * s, char *id, char *type, char *in, int sock)
|
||||
if (!w->kids) {
|
||||
w->kids = LL_new ();
|
||||
if (!w->kids) {
|
||||
fprintf (stderr, "widget_add: error allocating kids for frame\n");
|
||||
report (RPT_ERR, "widget_add: error allocating kids for frame");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -251,7 +251,7 @@ widget_remove (screen * s, char *id, int sock)
|
||||
widget *w;
|
||||
LinkedList *list;
|
||||
|
||||
debug ("widget_remove(%s)\n", id);
|
||||
report (RPT_INFO, "widget_remove(%s)", id);
|
||||
|
||||
if (!s)
|
||||
return -1;
|
||||
@@ -268,7 +268,7 @@ widget_remove (screen * s, char *id, int sock)
|
||||
w = widget_find (s, id);
|
||||
if (!w) {
|
||||
sock_send_string (sock, "huh? You don't have a widget with that id#\n");
|
||||
debug ("widget_remove: Error finding widget %s\n", id);
|
||||
report (RPT_ERR, "widget_remove: Error finding widget %s", id);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -276,7 +276,7 @@ widget_remove (screen * s, char *id, int sock)
|
||||
// TODO: Make this work with frames...
|
||||
// LL_Remove(list, (void *)w);
|
||||
|
||||
|
||||
|
||||
// TODO: Check for errors here?
|
||||
// widget_destroy(w);
|
||||
|
||||
@@ -291,7 +291,7 @@ widget_remover (LinkedList * list, widget * w)
|
||||
widget *foo, *bar;
|
||||
int err;
|
||||
|
||||
debug ("widget_remover\n");
|
||||
debug (RPT_DEBUG, "widget_remover");
|
||||
|
||||
if (!list)
|
||||
return 0;
|
||||
@@ -309,7 +309,7 @@ widget_remover (LinkedList * list, widget * w)
|
||||
// If removing a frame, kill all its kids, too...
|
||||
if (foo == w) {
|
||||
if (!foo->kids) {
|
||||
fprintf (stderr, "widget_remover: frame has no kids\n");
|
||||
debug (RPT_DEBUG, "widget_remover: frame has no kids");
|
||||
} else // Kill the kids...
|
||||
{
|
||||
LL_Rewind (foo->kids);
|
||||
@@ -326,7 +326,7 @@ widget_remover (LinkedList * list, widget * w)
|
||||
} else // Otherwise, search the frame recursively...
|
||||
{
|
||||
if (!foo->kids) {
|
||||
fprintf (stderr, "widget_remover: frame has no kids\n");
|
||||
debug (RPT_DEBUG, "widget_remover: frame has no kids");
|
||||
} else
|
||||
err = widget_remover (foo->kids, w);
|
||||
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
noinst_LIBRARIES = libLCDstuff.a
|
||||
libLCDstuff_a_SOURCES = LL.c LL.h sockets.c sockets.h str.c str.h debug.h
|
||||
libLCDstuff_a_SOURCES = LL.c LL.h sockets.c sockets.h str.c str.h debug.h report.c report.h
|
||||
|
||||
+12
-12
@@ -12,7 +12,7 @@
|
||||
#include <arpa/inet.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#include "debug.h"
|
||||
#include "report.h"
|
||||
#include "sockets.h"
|
||||
|
||||
/**************************************************
|
||||
@@ -36,7 +36,7 @@ sock_init_sockaddr (sockaddr_in * name, const char *hostname, unsigned short int
|
||||
name->sin_port = htons (port);
|
||||
hostinfo = gethostbyname (hostname);
|
||||
if (hostinfo == NULL) {
|
||||
fprintf (stderr, "sock_init_sockaddr: Unknown host %s.\n", hostname);
|
||||
report (RPT_ERR, "sock_init_sockaddr: Unknown host %s.", hostname);
|
||||
return -1;
|
||||
}
|
||||
name->sin_addr = *(struct in_addr *) hostinfo->h_addr;
|
||||
@@ -53,19 +53,19 @@ sock_connect (char *host, unsigned short int port)
|
||||
int sock;
|
||||
int err = 0;
|
||||
|
||||
debug ("sock_connect: Creating socket\n");
|
||||
report (RPT_DEBUG, "sock_connect: Creating socket");
|
||||
sock = socket (PF_INET, SOCK_STREAM, 0);
|
||||
if (sock < 0) {
|
||||
perror ("sock_connect: Error creating socket");
|
||||
report (RPT_ERR, "sock_connect: Error creating socket");
|
||||
return sock;
|
||||
}
|
||||
debug ("sock_connect: Created socket (%i)\n", sock);
|
||||
debug (RPT_DEBUG, "sock_connect: Created socket (%i)", sock);
|
||||
|
||||
sock_init_sockaddr (&servername, host, port);
|
||||
|
||||
err = connect (sock, (struct sockaddr *) &servername, sizeof (servername));
|
||||
if (err < 0) {
|
||||
perror ("sock_connect: connect failed");
|
||||
report (RPT_ERR, "sock_connect: connect failed");
|
||||
shutdown (sock, 2);
|
||||
return 0; // Normal exit if server doesn't exist...
|
||||
}
|
||||
@@ -104,8 +104,8 @@ sock_send_string (int fd, char *string)
|
||||
int sent = write (fd, string + offset, len - offset);
|
||||
if (sent == -1) {
|
||||
if (errno != EAGAIN) {
|
||||
perror ("sock_send_string: socket write error");
|
||||
printf ("Message was: %s\n", string);
|
||||
report (RPT_ERR, "sock_send_string: socket write error");
|
||||
report (RPT_DEBUG, "Message was: %s", string);
|
||||
//shutdown(fd, 2);
|
||||
return sent;
|
||||
}
|
||||
@@ -145,7 +145,7 @@ sock_recv_string (int fd, char *dest, size_t maxlen)
|
||||
}
|
||||
return 0;
|
||||
} else {
|
||||
perror ("sock_recv_string: socket read error");
|
||||
report (RPT_ERR, "sock_recv_string: socket read error");
|
||||
return err;
|
||||
}
|
||||
} else if (err == 0) {
|
||||
@@ -188,7 +188,7 @@ sock_send (int fd, void *src, size_t size)
|
||||
int sent = write (fd, ((char *) src) + offset, size - offset);
|
||||
if (sent == -1) {
|
||||
if (errno != EAGAIN) {
|
||||
perror ("sock_send: socket write error");
|
||||
report (RPT_ERR, "sock_send: socket write error");
|
||||
//shutdown(fd, 2);
|
||||
return sent;
|
||||
}
|
||||
@@ -217,11 +217,11 @@ sock_recv (int fd, void *dest, size_t maxlen)
|
||||
|
||||
err = read (fd, dest, maxlen);
|
||||
if (err < 0) {
|
||||
//fprintf (stderr,"sock_recv: socket read error\n");
|
||||
//report (RPT_DEBUG,"sock_recv: socket read error");
|
||||
//shutdown(fd, 2);
|
||||
return err;
|
||||
}
|
||||
//debug("sock_recv: Got message \"%s\"\n", (char *)dest);
|
||||
//debug(RPT_DEBUG, "sock_recv: Got message \"%s\"", (char *)dest);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user