From d9420312e469983a6babad898e02b6ed4a468150 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Wed, 27 Aug 2008 15:59:22 +0200 Subject: [PATCH] src/utils_cmd_listval.[ch]: Use the new parsing mechanism here, too. --- src/unixsock.c | 2 +- src/utils_cmd_listval.c | 29 +++++++++++++++++++++++------ src/utils_cmd_listval.h | 2 +- 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/unixsock.c b/src/unixsock.c index 6a8628a5..02f329f6 100644 --- a/src/unixsock.c +++ b/src/unixsock.c @@ -247,7 +247,7 @@ static void *us_handle_client (void *arg) } else if (strcasecmp (fields[0], "listval") == 0) { - handle_listval (fhout, fields, fields_num); + handle_listval (fhout, buffer); } else if (strcasecmp (fields[0], "putnotif") == 0) { diff --git a/src/utils_cmd_listval.c b/src/utils_cmd_listval.c index 6f03e757..bca83a99 100644 --- a/src/utils_cmd_listval.c +++ b/src/utils_cmd_listval.c @@ -25,6 +25,7 @@ #include "utils_cmd_listval.h" #include "utils_cache.h" +#include "utils_parse_option.h" #define print_to_socket(fh, ...) \ if (fprintf (fh, __VA_ARGS__) < 0) { \ @@ -34,20 +35,36 @@ return -1; \ } -int handle_listval (FILE *fh, char **fields, int fields_num) +int handle_listval (FILE *fh, char *buffer) { + char *command; char **names = NULL; time_t *times = NULL; size_t number = 0; size_t i; int status; - if (fields_num != 1) + DEBUG ("utils_cmd_listval: handle_listval (fh = %p, buffer = %s);", + (void *) fh, buffer); + + command = NULL; + status = parse_string (&buffer, &command); + if (status != 0) + { + print_to_socket (fh, "-1 Cannot parse command.\n"); + return (-1); + } + assert (command != NULL); + + if (strcasecmp ("LISTVAL", command) != 0) + { + print_to_socket (fh, "-1 Unexpected command: `%s'.\n", command); + return (-1); + } + + if (*buffer != 0) { - DEBUG ("command listval: us_handle_listval: Wrong number of fields: %i", - fields_num); - print_to_socket (fh, "-1 Wrong number of fields: Got %i, expected 1.\n", - fields_num); + print_to_socket (fh, "-1 Garbage after end of command: %s\n", buffer); return (-1); } diff --git a/src/utils_cmd_listval.h b/src/utils_cmd_listval.h index c9187962..73146e78 100644 --- a/src/utils_cmd_listval.h +++ b/src/utils_cmd_listval.h @@ -22,7 +22,7 @@ #ifndef UTILS_CMD_LISTVAL_H #define UTILS_CMD_LISTVAL_H 1 -int handle_listval (FILE *fh, char **fields, int fields_num); +int handle_listval (FILE *fh, char *buffer); #endif /* UTILS_CMD_LISTVAL_H */ -- 2.30.2