From 8f5ff3ddcf0ab11b0ec6fc9215144154fb0519f9 Mon Sep 17 00:00:00 2001 From: Zachary T Welch Date: Tue, 24 Nov 2009 10:58:32 -0800 Subject: [PATCH] httpd: use register_commands() Updates httpd_start() to use register_commands() for 'readform' and 'writeform' commands. Adds server/httpd.h to export the new signatures for this function (and httpd_stop), which allows removing the obsoleted declarations inside openocd.c. --- src/openocd.c | 7 ++----- src/server/Makefile.am | 1 + src/server/httpd.c | 35 ++++++++++++++++++++--------------- src/server/httpd.h | 28 ++++++++++++++++++++++++++++ 4 files changed, 51 insertions(+), 20 deletions(-) create mode 100644 src/server/httpd.h diff --git a/src/openocd.c b/src/openocd.c index 63289e44..e38c84ec 100644 --- a/src/openocd.c +++ b/src/openocd.c @@ -41,6 +41,7 @@ #include "telnet_server.h" #include "gdb_server.h" #include "tcl_server.h" +#include "httpd.h" #ifdef HAVE_STRINGS_H #include @@ -216,10 +217,6 @@ struct command_context *setup_command_handler(void) return cmd_ctx; } -int httpd_start(void); -void httpd_stop(void); - - #if !BUILD_HTTPD && !BUILD_ECOSBOARD /* implementations of OpenOCD that uses multithreading needs to know when * OpenOCD is sleeping. No-op in vanilla OpenOCD @@ -269,7 +266,7 @@ int openocd_main(int argc, char *argv[]) return EXIT_FAILURE; #if BUILD_HTTPD - if (httpd_start() != ERROR_OK) + if (httpd_start(cmd_ctx) != ERROR_OK) return EXIT_FAILURE; #endif diff --git a/src/server/Makefile.am b/src/server/Makefile.am index bb7d5ef3..95fb519b 100644 --- a/src/server/Makefile.am +++ b/src/server/Makefile.am @@ -14,6 +14,7 @@ libserver_la_SOURCES = server.c telnet_server.c gdb_server.c if HTTPD libserver_la_SOURCES += httpd.c endif +noinst_HEADERS += httpd.h libserver_la_CFLAGS = if IS_MINGW diff --git a/src/server/httpd.c b/src/server/httpd.c index 1c5e6d2b..8c1d3dba 100644 --- a/src/server/httpd.c +++ b/src/server/httpd.c @@ -460,7 +460,25 @@ static int ahc_echo(void * cls, struct MHD_Connection * connection, static struct MHD_Daemon * d; -int httpd_start(void) +static const struct command_registration httpd_command_handlers[] = { + { + .name = "formfetch", + .jim_handler = &httpd_Jim_Command_formfetch, + .mode = COMMAND_EXEC, + .usage = "", + .help = "Reads a posted form value.", + }, + { + .name = "writeform", + .jim_handler = &httpd_Jim_Command_writeform, + .mode = COMMAND_EXEC, + .usage = " ", + .help = "Writes a form value to a file.", + }, + COMMAND_REGISTRATION_DONE +}; + +int httpd_start(struct command_context *cmd_ctx) { pthread_mutexattr_t attr; pthread_mutexattr_init(&attr); @@ -475,20 +493,7 @@ int httpd_start(void) if (d == NULL) return ERROR_FAIL; - Jim_CreateCommand(interp, - "formfetch", - httpd_Jim_Command_formfetch, - NULL, - NULL); - - Jim_CreateCommand(interp, - "writeform", - httpd_Jim_Command_writeform, - NULL, - NULL); - - - return ERROR_OK; + return register_commands(cmd_ctx, NULL, httpd_command_handlers); } void httpd_stop(void) diff --git a/src/server/httpd.h b/src/server/httpd.h new file mode 100644 index 00000000..0502deb1 --- /dev/null +++ b/src/server/httpd.h @@ -0,0 +1,28 @@ +/*************************************************************************** + * Copyright (C) 2009 Zachary T Welch * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + ***************************************************************************/ + +#ifndef OPENOCD_SERVER_HTTPD_H +#define OPENOCD_SERVER_HTTPD_H + +struct command_context; + +int httpd_start(struct command_context *cmd_ctx); +void httpd_stop(void); + +#endif // OPENOCD_SERVER_HTTPD_H -- 2.39.5