Add documentation for new interface_list command to user guide.
[fw/openocd] / src / server / httpd.c
index 4b876d30065656b23174589279a5c35c649fc1ee..8ab5cb8feddff437b0febb164d6c70f5430849f2 100644 (file)
 #include "config.h"
 #endif
 
-#include "replacements.h"
-
-#include "server.h"
-
-#include "log.h"
 #include "telnet_server.h"
 #include "target.h"
 
-#include <command.h>
-#include <string.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#include <signal.h>
-
-#include <sys/types.h>
-#include <sys/select.h>
-#include <sys/socket.h>
 #include <microhttpd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
+#include <pthread.h>
+#include <signal.h>
 
 #define PAGE_NOT_FOUND "<html><head><title>File not found</title></head><body>File not found</body></html>"
 
+int loadFile(const char *name, void **data, size_t *len);
+
 static const char *appendf(const char *prev, const char *format, ...)
 {
        va_list ap;
@@ -134,23 +118,19 @@ static int httpd_Jim_Command_writeform(Jim_Interp *interp, int argc,
 
        data = Jim_GetString(Jim_GetResult(interp), &actual);
 
-       FILE *f;
-       f = fopen(file, "wb");
-       if (f != NULL)
+       FILE *f = fopen(file, "wb");
+       if (NULL == f)
        {
-               int ok;
-               ok = fwrite(data, 1, actual, f) == actual;
-               fclose(f);
-
-               if (!ok)
-               {
-                       Jim_SetResultString(interp, "Could not write to file", -1);
-                       return JIM_ERR;
-               }
+               Jim_SetResultString(interp, "Could not create file", -1);
+               return JIM_ERR;
        }
-       else
+
+       int result = fwrite(data, 1, actual, f);
+       fclose(f);
+
+       if (result != actual)
        {
-               Jim_SetResultString(interp, "Could not create file", -1);
+               Jim_SetResultString(interp, "Could not write to file", -1);
                return JIM_ERR;
        }
        return JIM_OK;
@@ -243,7 +223,7 @@ static void append_key(struct httpd_request *r, const char *key,
 /* append data to each key */
 static int iterate_post(void *con_cls, enum MHD_ValueKind kind,
                const char *key, const char *filename, const char *content_type,
-               const char *transfer_encoding, const char *data, size_t off,
+               const char *transfer_encoding, const char *data, uint64_t off,
                size_t size)
 {
        struct httpd_request *r = (struct httpd_request*) con_cls;
@@ -313,7 +293,7 @@ int handle_request(struct MHD_Connection * connection, const char * url)
        else
        {
                void *data;
-               int len;
+               size_t len;
 
                int retval = loadFile(url, &data, &len);
                if (retval != ERROR_OK)
@@ -327,7 +307,7 @@ int handle_request(struct MHD_Connection * connection, const char * url)
                        return ret;
                }
 
-               LOG_DEBUG("Serving %s length=%d", url, len);
+               LOG_DEBUG("Serving %s length=%u", url, len);
                /* serve file directly */
                response = MHD_create_response_from_data(len, data, MHD_YES, MHD_NO);
                MHD_add_response_header(response, "Content-Type", "image/png");
@@ -381,7 +361,7 @@ static int ahc_echo(void * cls, struct MHD_Connection * connection,
                if (r->post)
                {
                        r->postprocessor = MHD_create_post_processor(connection, 2048
-                                       * 1024, iterate_post, r);
+                                       * 1024, &iterate_post, r);
                }
 
                return MHD_YES;
@@ -413,7 +393,7 @@ static int ahc_echo(void * cls, struct MHD_Connection * connection,
         * being subverted to evil purposes
         */
 
-       const char *httpd_dir=PKGLIBDIR "/httpd";
+       const char *httpd_dir = PKGDATADIR "/httpd";
 
        if (*url=='/')
        {