- new socket function sock_send_error() and
sock_printf_error(): factored out the 'huh?-stuff, added error report log) - use sock_printf() and sock_printf_error() if necessary (no need to use sprintf())
This commit is contained in:
@@ -66,7 +66,7 @@ hello_func (Client * c, int argc, char **argv)
|
||||
/* TODO: Give *real* info about the server/lcd...*/
|
||||
|
||||
if (argc > 1) {
|
||||
sock_send_string (c->sock, "huh? extra parameters ignored\n");
|
||||
sock_send_error(c->sock, "extra parameters ignored\n");
|
||||
}
|
||||
|
||||
debug(RPT_INFO, "Hello!");
|
||||
@@ -96,7 +96,7 @@ int
|
||||
client_set_func (Client * c, int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
char str[16], buf[80];
|
||||
char str[16];
|
||||
|
||||
memset(str, '\0', sizeof(str));
|
||||
if (!c->ack)
|
||||
@@ -105,13 +105,13 @@ client_set_func (Client * c, int argc, char **argv)
|
||||
if (argc != 3) {
|
||||
switch (argc) {
|
||||
case 1:
|
||||
sock_send_string (c->sock, "huh? usage: client_set -name <name>\n");
|
||||
sock_send_error(c->sock, "usage: client_set -name <name>\n");
|
||||
break;
|
||||
case 2:
|
||||
sock_send_string (c->sock, "huh? Not enough parameters\n");
|
||||
sock_send_error(c->sock, "Not enough parameters\n");
|
||||
break;
|
||||
default:
|
||||
sock_send_string (c->sock, "huh? Too many parameters\n");
|
||||
sock_send_error(c->sock, "Too many parameters\n");
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@@ -130,13 +130,12 @@ client_set_func (Client * c, int argc, char **argv)
|
||||
if (strcmp (p, "name") == 0) {
|
||||
i++;
|
||||
if (argv[i] == '\0') {
|
||||
snprintf (buf, sizeof(buf), "huh? internal error: no parameter #%d\n", i);
|
||||
sock_send_string (c->sock, buf);
|
||||
sock_printf_error(c->sock, "internal error: no parameter #%d\n", i);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (strlen(argv[i]) > sizeof(str) -1) {
|
||||
sock_send_string (c->sock, "huh? name too long\n");
|
||||
sock_send_error(c->sock, "name too long\n");
|
||||
} else {
|
||||
strncpy(str, argv[i], sizeof(str) - 1);
|
||||
|
||||
@@ -147,15 +146,14 @@ client_set_func (Client * c, int argc, char **argv)
|
||||
free (c->name);
|
||||
|
||||
if ((c->name = strdup (str)) == NULL) {
|
||||
sock_send_string(c->sock, "huh? error allocating memory!\n");
|
||||
sock_send_error(c->sock, "error allocating memory!\n");
|
||||
} else {
|
||||
sock_send_string(c->sock, "success\n");
|
||||
i++; /* bypass argument (name string)*/
|
||||
}
|
||||
}
|
||||
} else {
|
||||
snprintf (buf, sizeof(buf), "huh? invalid parameter (%s)\n", p);
|
||||
sock_send_string (c->sock, buf);
|
||||
sock_printf_error(c->sock, "invalid parameter (%s)\n", p);
|
||||
}
|
||||
} while (++i < argc);
|
||||
|
||||
@@ -174,7 +172,6 @@ client_add_key_func (Client * c, int argc, char **argv)
|
||||
{
|
||||
int exclusively = 0;
|
||||
int argnr;
|
||||
char errmsg[BUFLEN];
|
||||
|
||||
if (!c->ack)
|
||||
return 1;
|
||||
@@ -182,7 +179,7 @@ client_add_key_func (Client * c, int argc, char **argv)
|
||||
if (argc < 2) {
|
||||
switch (argc) {
|
||||
case 1:
|
||||
sock_send_string (c->sock, "huh? Usage: client_add_key [-exclusively|-shared] {<key>}+\n");
|
||||
sock_send_error(c->sock, "Usage: client_add_key [-exclusively|-shared] {<key>}+\n");
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@@ -197,17 +194,13 @@ client_add_key_func (Client * c, int argc, char **argv)
|
||||
exclusively = 1;
|
||||
}
|
||||
else {
|
||||
snprintf( errmsg, BUFLEN-1, "huh? Invalid option: %s\n", argv[argnr] );
|
||||
errmsg[BUFLEN-1] = 0;
|
||||
sock_send_string( c->sock, errmsg );
|
||||
sock_printf_error(c->sock, "Invalid option: %s\n", argv[argnr]);
|
||||
}
|
||||
argnr ++;
|
||||
}
|
||||
for ( ; argnr < argc; argnr++ ) {
|
||||
if( input_reserve_key( argv[argnr], exclusively, c ) < 0 ) {
|
||||
snprintf( errmsg, BUFLEN-1, "huh? Could not reserve key \"%s\"\n", argv[argnr] );
|
||||
errmsg[BUFLEN-1] = 0;
|
||||
sock_send_string( c->sock, errmsg );
|
||||
sock_printf_error(c->sock, "Could not reserve key \"%s\"\n", argv[argnr]);
|
||||
}
|
||||
}
|
||||
sock_send_string(c->sock, "success\n");
|
||||
@@ -230,7 +223,7 @@ client_del_key_func (Client * c, int argc, char **argv)
|
||||
return 1;
|
||||
|
||||
if (argc < 2) {
|
||||
sock_send_string (c->sock, "huh? Usage: client_del_key {<key>}+\n");
|
||||
sock_send_error(c->sock, "Usage: client_del_key {<key>}+\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -256,10 +249,10 @@ backlight_func (Client * c, int argc, char **argv)
|
||||
if (argc != 2) {
|
||||
switch (argc) {
|
||||
case 1:
|
||||
sock_send_string (c->sock, "huh? usage: backlight <on|off|toggle|blink|flash>\n");
|
||||
sock_send_error(c->sock, "usage: backlight <on|off|toggle|blink|flash>\n");
|
||||
break;
|
||||
default:
|
||||
sock_send_string (c->sock, "huh? Too many parameters...\n");
|
||||
sock_send_error(c->sock, "Too many parameters...\n");
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@@ -306,7 +299,7 @@ info_func (Client * c, int argc, char **argv)
|
||||
char str[1024];
|
||||
|
||||
if (argc > 1) {
|
||||
sock_send_string (c->sock, "huh? Extra arguments ignored...\n");
|
||||
sock_send_error(c->sock, "Extra arguments ignored...\n");
|
||||
}
|
||||
|
||||
memset(str, '\0', sizeof(str));
|
||||
|
||||
@@ -50,10 +50,10 @@ screen_add_func (Client * c, int argc, char **argv)
|
||||
if (argc != 2) {
|
||||
switch (argc) {
|
||||
case 1:
|
||||
sock_send_string (c->sock, "huh? Usage: screen_add <screenid>\n");
|
||||
sock_send_error(c->sock, "Usage: screen_add <screenid>\n");
|
||||
break;
|
||||
default:
|
||||
sock_send_string (c->sock, "huh? Too many parameters...\n");
|
||||
sock_send_error(c->sock, "Too many parameters...\n");
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@@ -63,14 +63,13 @@ screen_add_func (Client * c, int argc, char **argv)
|
||||
|
||||
s = client_find_screen (c, argv[1]);
|
||||
if (s) {
|
||||
sock_send_string(c->sock, "huh? Screen already exists\n");
|
||||
sock_send_error(c->sock, "Screen already exists\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
s = screen_create (argv[1], c);
|
||||
if (!s) {
|
||||
report(RPT_ERR, "screen_add_func: Error creating screen");
|
||||
sock_send_string (c->sock, "huh? failed to create screen\n");
|
||||
sock_send_error(c->sock, "failed to create screen\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -79,8 +78,7 @@ screen_add_func (Client * c, int argc, char **argv)
|
||||
if (err == 0) {
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
report(RPT_WARNING, "screen_add_func: Error adding screen");
|
||||
sock_send_string (c->sock, "huh? Failed to add screen\n");
|
||||
sock_send_error(c->sock, "failed to add screen\n");
|
||||
}
|
||||
report(RPT_INFO, "Client on socket %d added added screen \"%s\"", c->sock, s->id);
|
||||
return 0;
|
||||
@@ -102,9 +100,9 @@ screen_del_func (Client * c, int argc, char **argv)
|
||||
|
||||
if (argc != 2) {
|
||||
if (argc == 1)
|
||||
sock_send_string (c->sock, "huh? Usage: screen_del <screenid>\n");
|
||||
sock_send_error(c->sock, "Usage: screen_del <screenid>\n");
|
||||
else
|
||||
sock_send_string (c->sock, "huh? Too many parameters...\n");
|
||||
sock_send_error(c->sock, "Too many parameters...\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -112,7 +110,7 @@ screen_del_func (Client * c, int argc, char **argv)
|
||||
|
||||
s = client_find_screen (c, argv[1]);
|
||||
if (!s) {
|
||||
sock_send_string(c->sock, "huh? Unknown screen id\n");
|
||||
sock_send_error(c->sock, "Unknown screen id\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -120,10 +118,9 @@ screen_del_func (Client * c, int argc, char **argv)
|
||||
if ( err == 0 )
|
||||
sock_send_string(c->sock, "success\n");
|
||||
else if (err < 0) {
|
||||
report(RPT_WARNING, "screen_del_func: Error removing screen");
|
||||
sock_send_string(c->sock, "huh? Failed to remove screen\n");
|
||||
sock_send_error(c->sock, "failed to remove screen\n");
|
||||
} else
|
||||
sock_send_string (c->sock, "huh? Unknown screen id\n");
|
||||
sock_send_error(c->sock, "Unknown screen id\n");
|
||||
|
||||
report(RPT_INFO, "Client on socket %d removed screen \"%s\"", c->sock, s->id);
|
||||
|
||||
@@ -152,17 +149,19 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
return 1;
|
||||
|
||||
if (argc == 1) {
|
||||
sock_send_string (c->sock, "huh? Usage: screen_set <id> [ -priority <int> ] [ -name <name> ] [ -duration <int> ] [ -wid <width> ] [ -hgt <height> ] [ -heartbeat <type> ]\n");
|
||||
sock_send_error(c->sock, "Usage: screen_set <id> [ -priority <int> ]"
|
||||
" [ -name <name> ] [ -duration <int> ] [ -wid <width> ]"
|
||||
" [ -hgt <height> ] [ -heartbeat <type> ]\n");
|
||||
return 0;
|
||||
} else if (argc == 2) {
|
||||
sock_send_string (c->sock, "huh? What do you want to set?\n");
|
||||
sock_send_error(c->sock, "What do you want to set?\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
id = argv[1];
|
||||
s = client_find_screen (c, id);
|
||||
if (!s) {
|
||||
sock_send_string (c->sock, "huh? Unknown screen id\n");
|
||||
sock_send_error(c->sock, "Unknown screen id\n");
|
||||
return 0;
|
||||
}
|
||||
/* Handle the rest of the parameters*/
|
||||
@@ -190,7 +189,7 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
s->name = strdup (argv[i]);
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -name requires a parameter\n");
|
||||
sock_send_error(c->sock, "-name requires a parameter\n");
|
||||
}
|
||||
}
|
||||
/* Handle the "priority" parameter*/
|
||||
@@ -217,10 +216,10 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
s->priority = number;
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
sock_send_string(c->sock, "huh? invalid argument at -priority\n");
|
||||
sock_send_error(c->sock, "invalid argument at -priority\n");
|
||||
}
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -priority requires a parameter\n");
|
||||
sock_send_error(c->sock, "-priority requires a parameter\n");
|
||||
}
|
||||
}
|
||||
/* Handle the "duration" parameter*/
|
||||
@@ -235,7 +234,7 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
s->duration = number;
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -duration requires a parameter\n");
|
||||
sock_send_error(c->sock, "-duration requires a parameter\n");
|
||||
}
|
||||
}
|
||||
/* Handle the "heartbeat" parameter*/
|
||||
@@ -253,7 +252,7 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
s->heartbeat = HEARTBEAT_OPEN;
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -heartbeat requires a parameter\n");
|
||||
sock_send_error(c->sock, "-heartbeat requires a parameter\n");
|
||||
}
|
||||
}
|
||||
/* Handle the "wid" parameter*/
|
||||
@@ -268,7 +267,7 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
s->width = number;
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -wid requires a parameter\n");
|
||||
sock_send_error(c->sock, "-wid requires a parameter\n");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -284,7 +283,7 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
s->height = number;
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -hgt requires a parameter\n");
|
||||
sock_send_error(c->sock, "-hgt requires a parameter\n");
|
||||
}
|
||||
}
|
||||
/* Handle the "timeout" parameter*/
|
||||
@@ -303,7 +302,7 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
}
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -timeout requires a parameter\n");
|
||||
sock_send_error(c->sock, "-timeout requires a parameter\n");
|
||||
}
|
||||
}
|
||||
/* Handle the "backlight" parameter*/
|
||||
@@ -340,7 +339,7 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
}
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -backlight requires a parameter\n");
|
||||
sock_send_error(c->sock, "-backlight requires a parameter\n");
|
||||
}
|
||||
}
|
||||
/* Handle the "cursor" parameter */
|
||||
@@ -360,7 +359,7 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
s->cursor = CURSOR_BLOCK;
|
||||
sock_send_string(c->sock, "success\n");
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -cursor requires a parameter\n");
|
||||
sock_send_error(c->sock, "-cursor requires a parameter\n");
|
||||
}
|
||||
}
|
||||
/* Handle the "cursor_x" parameter */
|
||||
@@ -376,10 +375,10 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
sock_send_string(c->sock, "success\n");
|
||||
}
|
||||
else {
|
||||
sock_send_string(c->sock, "huh? Cursor position outside screen\n");
|
||||
sock_send_error(c->sock, "Cursor position outside screen\n");
|
||||
}
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -cursor_x requires a parameter\n");
|
||||
sock_send_error(c->sock, "-cursor_x requires a parameter\n");
|
||||
}
|
||||
}
|
||||
/* Handle the "cursor_y" parameter */
|
||||
@@ -395,14 +394,14 @@ screen_set_func (Client * c, int argc, char **argv)
|
||||
sock_send_string(c->sock, "success\n");
|
||||
}
|
||||
else {
|
||||
sock_send_string(c->sock, "huh? Cursor position outside screen\n");
|
||||
sock_send_error(c->sock, "Cursor position outside screen\n");
|
||||
}
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? -cursor_y requires a parameter\n");
|
||||
sock_send_error(c->sock, "-cursor_y requires a parameter\n");
|
||||
}
|
||||
}
|
||||
|
||||
else sock_send_string (c->sock, "huh? invalid parameter\n");
|
||||
else sock_send_error(c->sock, "invalid parameter\n");
|
||||
}/* done checking argv*/
|
||||
return 0;
|
||||
}
|
||||
@@ -427,13 +426,13 @@ screen_add_key_func (Client * c, int argc, char **argv)
|
||||
if (argc != 3) {
|
||||
switch (argc) {
|
||||
case 1:
|
||||
sock_send_string (c->sock, "huh? Usage: screen_add_key <screenid> <keylist>\n");
|
||||
sock_send_error(c->sock, "Usage: screen_add_key <screenid> <keylist>\n");
|
||||
break;
|
||||
case 2:
|
||||
sock_send_string (c->sock, "huh? You must specify a key list\n");
|
||||
sock_send_error(c->sock, "You must specify a key list\n");
|
||||
break;
|
||||
default:
|
||||
sock_send_string (c->sock, "huh? Too many parameters...\n");
|
||||
sock_send_error(c->sock, "Too many parameters...\n");
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@@ -446,7 +445,7 @@ screen_add_key_func (Client * c, int argc, char **argv)
|
||||
/* Find the screen*/
|
||||
s = client_find_screen (c, id);
|
||||
if (!s) {
|
||||
sock_send_string (c->sock, "huh? Unknown screen id\n");
|
||||
sock_send_error(c->sock, "Unknown screen id\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -469,14 +468,13 @@ screen_add_key_func (Client * c, int argc, char **argv)
|
||||
free (s->keys);
|
||||
s->keys = new_keys;
|
||||
} else {
|
||||
report (RPT_WARNING, "screen_add_key: Allocation error");
|
||||
sock_send_string(c->sock, "huh? Could not add new keys\n");
|
||||
sock_send_error(c->sock, "Could not add new keys\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (!s->keys) {
|
||||
sock_send_string(c->sock, "huh? failed\n");
|
||||
sock_send_error(c->sock, "failed\n");
|
||||
} else
|
||||
sock_send_string(c->sock, "success\n");
|
||||
|
||||
@@ -503,13 +501,13 @@ screen_del_key_func (Client * c, int argc, char **argv)
|
||||
if (argc != 3) {
|
||||
switch (argc) {
|
||||
case 1:
|
||||
sock_send_string (c->sock, "huh? Usage: screen_del_key <screenid> <keylist>\n");
|
||||
sock_send_error(c->sock, "Usage: screen_del_key <screenid> <keylist>\n");
|
||||
break;
|
||||
case 2:
|
||||
sock_send_string (c->sock, "huh? You must specify a key list\n");
|
||||
sock_send_error(c->sock, "You must specify a key list\n");
|
||||
break;
|
||||
default:
|
||||
sock_send_string (c->sock, "huh? Too many parameters\n");
|
||||
sock_send_error(c->sock, "Too many parameters\n");
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@@ -523,7 +521,7 @@ screen_del_key_func (Client * c, int argc, char **argv)
|
||||
s = client_find_screen (c, id);
|
||||
|
||||
if (!s) {
|
||||
sock_send_string (c->sock, "huh? Unknown screen id\n");
|
||||
sock_send_error(c->sock, "Unknown screen id\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -48,9 +48,9 @@ output_func (Client * c, int argc, char **argv)
|
||||
|
||||
if (argc != 2) {
|
||||
if (argc == 1)
|
||||
sock_send_string (c->sock, "huh? usage: output <on|off|num> -- num may be decimal, hex, or octal\n");
|
||||
sock_send_error(c->sock, "usage: output <on|off|num> -- num may be decimal, hex, or octal\n");
|
||||
else
|
||||
sock_send_string (c->sock, "huh? Too many parameters...\n");
|
||||
sock_send_error(c->sock, "Too many parameters...\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -88,18 +88,18 @@ output_func (Client * c, int argc, char **argv)
|
||||
if (errno) {
|
||||
int space;
|
||||
|
||||
strcat(str, "huh? number argument: ");
|
||||
strcat(str, "number argument: ");
|
||||
space = sizeof(str) - 3 - strlen(str);
|
||||
|
||||
strncat(str, strerror(errno), space);
|
||||
strcat(str, "\n");
|
||||
|
||||
sock_send_string (c->sock, str);
|
||||
sock_send_error(c->sock, str);
|
||||
return 0;
|
||||
} else if (*p != '\0' && *endptr == '\0') {
|
||||
output_state = out;
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? invalid parameter...\n");
|
||||
sock_send_error(c->sock, "invalid parameter...\n");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -135,9 +135,9 @@ sleep_func (Client * c, int argc, char **argv)
|
||||
|
||||
if (argc != 2) {
|
||||
if (argc == 1)
|
||||
sock_send_string (c->sock, "huh? usage: sleep <secs>\n");
|
||||
sock_send_error(c->sock, "usage: sleep <secs>\n");
|
||||
else
|
||||
sock_send_string (c->sock, "huh? Too many parameters...\n");
|
||||
sock_send_error(c->sock, "Too many parameters...\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -162,20 +162,20 @@ sleep_func (Client * c, int argc, char **argv)
|
||||
if (errno) {
|
||||
int space;
|
||||
|
||||
strcat(str, "huh? number argument: ");
|
||||
strcat(str, "number argument: ");
|
||||
space = sizeof(str) - 3 - strlen(str);
|
||||
|
||||
strncat(str, strerror(errno), space);
|
||||
strcat(str, "\n");
|
||||
|
||||
sock_send_string (c->sock, str);
|
||||
sock_send_error(c->sock, str);
|
||||
return 0;
|
||||
} else if (*p != '\0' && *endptr == '\0') {
|
||||
secs = out;
|
||||
out = out > MAX_SECS ? MAX_SECS : out;
|
||||
out = out < MIN_SECS ? MIN_SECS : out;
|
||||
} else {
|
||||
sock_send_string (c->sock, "huh? invalid parameter...\n");
|
||||
sock_send_error(c->sock, "invalid parameter...\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@ sleep_func (Client * c, int argc, char **argv)
|
||||
* while ((secs = sleep(secs)) > 0)
|
||||
*/ ;
|
||||
|
||||
sock_send_string (c->sock, "huh? ignored (not fully implemented)\n");
|
||||
sock_send_error(c->sock, "ignored (not fully implemented)\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ widget_add_func (Client * c, int argc, char **argv)
|
||||
return 1;
|
||||
|
||||
if ((argc < 4) || (argc > 6)) {
|
||||
sock_send_string (c->sock, "huh? Usage: widget_add <screenid> <widgetid> <widgettype> [ -in <id> ]\n");
|
||||
sock_send_error(c->sock, "Usage: widget_add <screenid> <widgetid> <widgettype> [ -in <id> ]\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -64,14 +64,14 @@ widget_add_func (Client * c, int argc, char **argv)
|
||||
|
||||
s = client_find_screen (c, sid);
|
||||
if (!s) {
|
||||
sock_send_string (c->sock, "huh? Invalid screen id\n");
|
||||
sock_send_error(c->sock, "Invalid screen id\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Find widget type */
|
||||
wtype = widget_typename_to_type (argv[3]);
|
||||
if (wtype == WID_NONE) {
|
||||
sock_send_string (c->sock, "huh? Invalid widget type\n");
|
||||
sock_send_error(c->sock, "Invalid widget type\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ widget_add_func (Client * c, int argc, char **argv)
|
||||
Widget * frame;
|
||||
|
||||
if (argc < 6) {
|
||||
sock_send_string (c->sock, "huh? Specify a frame to place widget in\n");
|
||||
sock_send_error(c->sock, "Specify a frame to place widget in\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -98,8 +98,7 @@ widget_add_func (Client * c, int argc, char **argv)
|
||||
*/
|
||||
frame = screen_find_widget(s, argv[5]);
|
||||
if (!frame) {
|
||||
report(RPT_WARNING, "widget_add_func: Error finding frame ");
|
||||
sock_send_string(c->sock, "huh? Failed\n");
|
||||
sock_send_error(c->sock, "Error finding frame\n");
|
||||
return 0;
|
||||
}
|
||||
s = frame->frame_screen;
|
||||
@@ -109,8 +108,7 @@ widget_add_func (Client * c, int argc, char **argv)
|
||||
/* Create the widget */
|
||||
w = widget_create (wid, wtype, s);
|
||||
if (!w) {
|
||||
report(RPT_WARNING, "widget_add_func: Error adding widget");
|
||||
sock_send_string(c->sock, "huh? Failed\n");
|
||||
sock_send_error(c->sock, "Error adding widget\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -119,8 +117,7 @@ widget_add_func (Client * c, int argc, char **argv)
|
||||
if (err == 0)
|
||||
sock_send_string(c->sock, "success\n");
|
||||
else {
|
||||
report(RPT_WARNING, "widget_add_func: Error adding widget");
|
||||
sock_send_string(c->sock, "huh? Failed\n");
|
||||
sock_send_error(c->sock, "Error adding widget\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -147,13 +144,13 @@ widget_del_func (Client * c, int argc, char **argv)
|
||||
if (argc != 3) {
|
||||
switch (argc) {
|
||||
case 1:
|
||||
sock_send_string (c->sock, "huh? Usage: widget_del <screenid> <widgetid>\n");
|
||||
sock_send_error(c->sock, "Usage: widget_del <screenid> <widgetid>\n");
|
||||
break;
|
||||
case 2:
|
||||
sock_send_string (c->sock, "huh? Specify a widget #id\n");
|
||||
sock_send_error(c->sock, "Specify a widget #id\n");
|
||||
break;
|
||||
default:
|
||||
sock_send_string (c->sock, "huh? Too many parameters...\n");
|
||||
sock_send_error(c->sock, "Too many parameters...\n");
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@@ -166,13 +163,13 @@ widget_del_func (Client * c, int argc, char **argv)
|
||||
|
||||
s = client_find_screen (c, sid);
|
||||
if (!s) {
|
||||
sock_send_string (c->sock, "huh? Invalid screen id\n");
|
||||
sock_send_error(c->sock, "Invalid screen id\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
w = screen_find_widget (s, wid);
|
||||
if (!w) {
|
||||
sock_send_string (c->sock, "huh? Invalid widget id\n");
|
||||
sock_send_error(c->sock, "Invalid widget id\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -180,8 +177,7 @@ widget_del_func (Client * c, int argc, char **argv)
|
||||
if (err == 0)
|
||||
sock_send_string(c->sock, "success\n");
|
||||
else {
|
||||
report( RPT_WARNING, "widget_del_func: Error removing widget");
|
||||
sock_send_string(c->sock, "huh? Failed\n");
|
||||
sock_send_error(c->sock, "Error removing widget\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -220,7 +216,7 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
*/
|
||||
|
||||
if (argc < 4) {
|
||||
sock_send_string (c->sock, "huh? Usage: widget_set <screenid> <widgetid> <widget-SPECIFIC-data>\n");
|
||||
sock_send_error(c->sock, "Usage: widget_set <screenid> <widgetid> <widget-SPECIFIC-data>\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -228,18 +224,18 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
sid = argv[1];
|
||||
s = client_find_screen (c, sid);
|
||||
if (!s) {
|
||||
sock_send_string (c->sock, "huh? Unknown screen id\n");
|
||||
sock_send_error(c->sock, "Unknown screen id\n");
|
||||
return 0;
|
||||
}
|
||||
/* Find widget */
|
||||
wid = argv[2];
|
||||
w = screen_find_widget (s, wid);
|
||||
if (!w) {
|
||||
sock_send_string (c->sock, "huh? Unknown widget id\n");
|
||||
sock_send_error(c->sock, "Unknown widget id\n");
|
||||
/* Client Debugging...*/
|
||||
{
|
||||
int i;
|
||||
report( RPT_WARNING, "huh? Unknown widget id (%s)", argv[2]);
|
||||
report( RPT_WARNING, "Unknown widget id (%s)", argv[2]);
|
||||
for (i = 0; i < argc; i++)
|
||||
report( RPT_WARNING, " %.40s ", argv[i]);
|
||||
}
|
||||
@@ -249,11 +245,11 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
switch (w->type) {
|
||||
case WID_STRING: /* String takes "x y text"*/
|
||||
if (argc != i + 3)
|
||||
sock_send_string (c->sock, "huh? Wrong number of arguments\n");
|
||||
sock_send_error(c->sock, "Wrong number of arguments\n");
|
||||
else {
|
||||
if ((!isdigit ((unsigned int) argv[i][0])) ||
|
||||
(!isdigit ((unsigned int) argv[i + 1][0]))) {
|
||||
sock_send_string (c->sock, "huh? Invalid coordinates\n");
|
||||
sock_send_error(c->sock, "Invalid coordinates\n");
|
||||
} else /* Set all the data...*/
|
||||
{
|
||||
x = atoi (argv[i]);
|
||||
@@ -275,11 +271,11 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
break;
|
||||
case WID_HBAR: /* Hbar takes "x y length"*/
|
||||
if (argc != i + 3)
|
||||
sock_send_string (c->sock, "huh? Wrong number of arguments\n");
|
||||
sock_send_error(c->sock, "Wrong number of arguments\n");
|
||||
else {
|
||||
if ((!isdigit ((unsigned int) argv[i][0])) ||
|
||||
(!isdigit ((unsigned int) argv[i + 1][0]))) {
|
||||
sock_send_string (c->sock, "huh? Invalid coordinates\n");
|
||||
sock_send_error(c->sock, "Invalid coordinates\n");
|
||||
} else {
|
||||
x = atoi (argv[i]);
|
||||
y = atoi (argv[i + 1]);
|
||||
@@ -294,11 +290,11 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
break;
|
||||
case WID_VBAR: /* Vbar takes "x y length"*/
|
||||
if (argc != i + 3)
|
||||
sock_send_string (c->sock, "huh? Wrong number of arguments\n");
|
||||
sock_send_error(c->sock, "Wrong number of arguments\n");
|
||||
else {
|
||||
if ((!isdigit ((unsigned int) argv[i][0])) ||
|
||||
(!isdigit ((unsigned int) argv[i + 1][0]))) {
|
||||
sock_send_string (c->sock, "huh? Invalid coordinates\n");
|
||||
sock_send_error(c->sock, "Invalid coordinates\n");
|
||||
} else {
|
||||
x = atoi (argv[i]);
|
||||
y = atoi (argv[i + 1]);
|
||||
@@ -313,18 +309,18 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
break;
|
||||
case WID_ICON: /* Icon takes "x y icon"*/
|
||||
if (argc != i + 3)
|
||||
sock_send_string (c->sock, "huh? Wrong number of arguments\n");
|
||||
sock_send_error(c->sock, "Wrong number of arguments\n");
|
||||
else {
|
||||
if ((!isdigit ((unsigned int) argv[i][0])) ||
|
||||
(!isdigit ((unsigned int) argv[i + 1][0]))) {
|
||||
sock_send_string (c->sock, "huh? Invalid coordinates\n");
|
||||
sock_send_error(c->sock, "Invalid coordinates\n");
|
||||
} else {
|
||||
int icon;
|
||||
x = atoi (argv[i]);
|
||||
y = atoi (argv[i + 1]);
|
||||
icon = widget_iconname_to_icon (argv[i + 2]);
|
||||
if (icon == -1) {
|
||||
sock_send_string (c->sock, "huh? Invalid icon name\n");
|
||||
sock_send_error(c->sock, "Invalid icon name\n");
|
||||
} else {
|
||||
w->x = x;
|
||||
w->y = y;
|
||||
@@ -336,7 +332,7 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
break;
|
||||
case WID_TITLE: /* title takes "text"*/
|
||||
if (argc != i + 1)
|
||||
sock_send_string (c->sock, "huh? Wrong number of arguments\n");
|
||||
sock_send_error(c->sock, "Wrong number of arguments\n");
|
||||
else {
|
||||
if (w->text)
|
||||
free (w->text);
|
||||
@@ -353,13 +349,13 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
break;
|
||||
case WID_SCROLLER: /* Scroller takes "left top right bottom direction speed text"*/
|
||||
if (argc != i + 7) {
|
||||
sock_send_string (c->sock, "huh? Wrong number of arguments\n");
|
||||
sock_send_error(c->sock, "Wrong number of arguments\n");
|
||||
} else {
|
||||
if ((!isdigit ((unsigned int) argv[i][0])) ||
|
||||
(!isdigit ((unsigned int) argv[i + 1][0])) ||
|
||||
(!isdigit ((unsigned int) argv[i + 2][0])) ||
|
||||
(!isdigit ((unsigned int) argv[i + 3][0]))) {
|
||||
sock_send_string (c->sock, "huh? Invalid coordinates\n");
|
||||
sock_send_error(c->sock, "Invalid coordinates\n");
|
||||
} else {
|
||||
left = atoi (argv[i]);
|
||||
/*debug("left: %d",left);*/
|
||||
@@ -376,7 +372,7 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
/* Direction must be m, v or h*/
|
||||
if (((char) direction != 'h') && ((char) direction != 'v') &&
|
||||
((char) direction != 'm')) {
|
||||
sock_send_string (c->sock, "huh? Invalid direction\n");
|
||||
sock_send_error(c->sock, "Invalid direction\n");
|
||||
} else {
|
||||
w->left = left;
|
||||
w->top = top;
|
||||
@@ -388,8 +384,7 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
free (w->text);
|
||||
w->text = strdup (argv[i + 6]);
|
||||
if (!w->text) {
|
||||
sock_send_string(c->sock, "huh? Failed\n");
|
||||
report( RPT_WARNING, "widget_set_func: Allocation error");
|
||||
sock_send_error(c->sock, "Allocation error\n");
|
||||
return -1;
|
||||
}
|
||||
debug (RPT_DEBUG, "Widget %s set to %s", wid, w->text);
|
||||
@@ -400,7 +395,7 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
break;
|
||||
case WID_FRAME: /* Frame takes "left top right bottom wid hgt direction speed"*/
|
||||
if (argc != i + 8) {
|
||||
sock_send_string (c->sock, "huh? Wrong number of arguments\n");
|
||||
sock_send_error(c->sock, "Wrong number of arguments\n");
|
||||
} else {
|
||||
if ((!isdigit ((unsigned int) argv[i][0])) ||
|
||||
(!isdigit ((unsigned int) argv[i + 1][0])) ||
|
||||
@@ -408,7 +403,7 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
(!isdigit ((unsigned int) argv[i + 3][0])) ||
|
||||
(!isdigit ((unsigned int) argv[i + 4][0])) ||
|
||||
(!isdigit ((unsigned int) argv[i + 5][0]))) {
|
||||
sock_send_string (c->sock, "huh? Invalid coordinates\n");
|
||||
sock_send_error(c->sock, "Invalid coordinates\n");
|
||||
} else {
|
||||
left = atoi (argv[i]);
|
||||
/*debug("left: %d",left);*/
|
||||
@@ -428,7 +423,7 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
/*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");
|
||||
sock_send_error(c->sock, "Invalid direction\n");
|
||||
} else {
|
||||
w->left = left;
|
||||
w->top = top;
|
||||
@@ -446,12 +441,12 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
break;
|
||||
case WID_NUM: /* Num takes "x num"*/
|
||||
if (argc != i + 2)
|
||||
sock_send_string (c->sock, "huh? Wrong number of arguments\n");
|
||||
sock_send_error(c->sock, "Wrong number of arguments\n");
|
||||
else {
|
||||
if (!isdigit ((unsigned int) argv[i][0])) {
|
||||
sock_send_string (c->sock, "huh? Invalid coordinates\n");
|
||||
sock_send_error(c->sock, "Invalid coordinates\n");
|
||||
} else if (!isdigit ((unsigned int) argv[i + 1][0])) {
|
||||
sock_send_string (c->sock, "huh? Invalid number\n");
|
||||
sock_send_error(c->sock, "Invalid number\n");
|
||||
} else {
|
||||
x = atoi (argv[i]);
|
||||
y = atoi (argv[i + 1]);
|
||||
@@ -464,7 +459,7 @@ widget_set_func (Client * c, int argc, char **argv)
|
||||
break;
|
||||
case WID_NONE:
|
||||
default:
|
||||
sock_send_string (c->sock, "huh? Widget has no type\n");
|
||||
sock_send_error(c->sock, "Widget has no type\n");
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
+4
-9
@@ -53,7 +53,6 @@ static int parse_message (const char *str, Client *c)
|
||||
typedef enum { ST_INITIAL, ST_WHITESPACE, ST_ARGUMENT, ST_FINAL } State;
|
||||
State state = ST_INITIAL;
|
||||
|
||||
char errmsg[256];
|
||||
int error = 0;
|
||||
char quote = '\0'; /* The quote used to open a quote string */
|
||||
int pos = 0;
|
||||
@@ -83,7 +82,7 @@ static int parse_message (const char *str, Client *c)
|
||||
arg_space = malloc(strlen(str)+1);
|
||||
if (arg_space == NULL) {
|
||||
report (RPT_ERR, "%s: Could not allocate memory", __FUNCTION__);
|
||||
sock_send_string(c->sock, "huh? error allocating memory!\n");
|
||||
sock_send_error(c->sock, "error allocating memory!\n");
|
||||
}
|
||||
|
||||
argv[0] = arg_space;
|
||||
@@ -163,9 +162,7 @@ static int parse_message (const char *str, Client *c)
|
||||
error = 1;
|
||||
|
||||
if (error) {
|
||||
report( RPT_WARNING, "Could not parse command from client on socket %d: %.40s", c->sock, str );
|
||||
snprintf (errmsg, sizeof(errmsg), "huh? Could not parse command\n");
|
||||
sock_send_string (c->sock, errmsg);
|
||||
sock_send_error(c->sock, "Could not parse command\n");
|
||||
free( arg_space );
|
||||
return 0;
|
||||
}
|
||||
@@ -183,14 +180,12 @@ static int parse_message (const char *str, Client *c)
|
||||
if (function != NULL) {
|
||||
error = function (c, argc, argv);
|
||||
if (error) {
|
||||
snprintf (errmsg, sizeof(errmsg), "huh? Function returned error \"%.40s\"\n", argv[0]);
|
||||
sock_send_string (c->sock, errmsg);
|
||||
sock_printf_error(c->sock, "Function returned error \"%.40s\"\n", argv[0]);
|
||||
report( RPT_WARNING, "Command function returned an error after command from client on socket %d: %.40s", c->sock, str );
|
||||
}
|
||||
}
|
||||
else {
|
||||
snprintf (errmsg, sizeof(errmsg), "huh? Invalid command \"%.40s\"\n", argv[0]);
|
||||
sock_send_string (c->sock, errmsg);
|
||||
sock_printf_error(c->sock, "Invalid command \"%.40s\"\n", argv[0]);
|
||||
report( RPT_WARNING, "Invalid command from client on socket %d: %.40s", c->sock, str );
|
||||
}
|
||||
|
||||
|
||||
+1
-3
@@ -409,9 +409,7 @@ sock_read_from_client(struct ClientSocketMap* clientSocketMap)
|
||||
return -1;
|
||||
} else if (nbytes > (MAXMSG - (MAXMSG / 8))) /* Very noisy client...*/
|
||||
{
|
||||
sock_send_string(clientSocketMap->socket, "huh? Too much data received... quiet down!\n");
|
||||
report(RPT_WARNING, "%s: Too much data received on socket %d",
|
||||
__FUNCTION__, clientSocketMap->socket);
|
||||
sock_send_error(clientSocketMap->socket, "Too much data received... quiet down!\n");
|
||||
return -1;
|
||||
} else /* Data Read*/
|
||||
{
|
||||
|
||||
@@ -292,3 +292,47 @@ sock_geterror(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
/** prints error to logfile and sends it to the client.
|
||||
* @param fd socket
|
||||
* @param message the message to send (without the "huh? ") */
|
||||
int sock_send_error(int fd, char* message)
|
||||
{
|
||||
// simple: performance penalty isn't worth more work...
|
||||
return sock_printf_error(fd, message);
|
||||
}
|
||||
|
||||
/** prints printf-like formatted output to logfile and sends it to the
|
||||
* client.
|
||||
* @param fd socket
|
||||
* @param message the message to send (without the "huh? ") */
|
||||
int
|
||||
sock_printf_error(int fd, const char *format, .../*args*/ )
|
||||
{
|
||||
char buf[MAXMSG];
|
||||
static const int huhsize = sizeof("huh? ") - 1;
|
||||
char *p = buf + huhsize;
|
||||
|
||||
va_list ap;
|
||||
int size = 0;
|
||||
|
||||
va_start(ap, format);
|
||||
size = vsnprintf(buf, sizeof(buf), format, ap);
|
||||
va_end(ap);
|
||||
|
||||
if (size < 0) {
|
||||
report(RPT_ERR, "sock_printf_error: vsnprintf failed");
|
||||
return -1;
|
||||
}
|
||||
if (size > sizeof(buf))
|
||||
report(RPT_WARNING, "sock_printf_error: vsnprintf truncated message");
|
||||
|
||||
/* prepend the "huh? " */
|
||||
if (size > sizeof(buf) - huhsize)
|
||||
size = sizeof(buf) - huhsize;
|
||||
|
||||
memmove(p, buf, size);
|
||||
memcpy(buf, "huh? ", huhsize);
|
||||
|
||||
report(RPT_ERR, "error: %s", buf);
|
||||
return sock_send_string(fd, buf);
|
||||
}
|
||||
|
||||
@@ -36,6 +36,8 @@ int sock_recv (int fd, void *dest, size_t maxlen);
|
||||
|
||||
/* Return error message string for the socket function */
|
||||
char *sock_geterror(void);
|
||||
int sock_send_error(int fd, char* message);
|
||||
int sock_printf_error(int fd, const char *format, .../*args*/);
|
||||
|
||||
// Er, ignore the rest of this file. I'll clean it up sometime...
|
||||
|
||||
|
||||
Reference in New Issue
Block a user