Added LWIP_HTTPD_CUSTOM_FILES to open files that are not included in fsdata.c
This commit is contained in:
parent
35b0b78242
commit
3e59a70f02
|
@ -62,6 +62,11 @@ struct fs_table {
|
|||
/* Allocate file system memory */
|
||||
struct fs_table fs_memory[LWIP_MAX_OPEN_FILES];
|
||||
|
||||
#if LWIP_HTTPD_CUSTOM_FILES
|
||||
int fs_open_custom(struct fs_file *file, const char *name);
|
||||
void fs_close_custom(struct fs_file *file);
|
||||
#endif /* LWIP_HTTPD_CUSTOM_FILES */
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static struct fs_file *
|
||||
fs_malloc(void)
|
||||
|
@ -102,6 +107,14 @@ fs_open(const char *name)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
#if LWIP_HTTPD_CUSTOM_FILES
|
||||
if(fs_open_custom(file, name)) {
|
||||
file->is_custom_file = 1;
|
||||
return file;
|
||||
}
|
||||
file->is_custom_file = 0;
|
||||
#endif /* LWIP_HTTPD_CUSTOM_FILES */
|
||||
|
||||
for(f = FS_ROOT; f != NULL; f = f->next) {
|
||||
if (!strcmp(name, (char *)f->name)) {
|
||||
file->data = (const char *)f->data;
|
||||
|
@ -124,6 +137,9 @@ fs_open(const char *name)
|
|||
void
|
||||
fs_close(struct fs_file *file)
|
||||
{
|
||||
if (file->is_custom_file) {
|
||||
fs_close_custom(file);
|
||||
}
|
||||
fs_free(file);
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
|
|
@ -34,11 +34,22 @@
|
|||
|
||||
#include "lwip/opt.h"
|
||||
|
||||
/** Set this to 1 and provide the functions:
|
||||
* - "int fs_open_custom(struct fs_file *file, const char *name)"
|
||||
* Called first for every opened file to allow opening files
|
||||
* that are not included in fsdata(_custom).c
|
||||
* - "void fs_close_custom(struct fs_file *file)"
|
||||
* Called to free resources allocated by fs_open_custom().
|
||||
*/
|
||||
#ifndef LWIP_HTTPD_CUSTOM_FILES
|
||||
#define LWIP_HTTPD_CUSTOM_FILES 0
|
||||
#endif
|
||||
|
||||
/** HTTPD_PRECALCULATED_CHECKSUM==1: include precompiled checksums for
|
||||
* predefined (MSS-sized) chunks of the files to prevent having to calculate
|
||||
* the checksums at runtime. */
|
||||
#ifndef HTTPD_PRECALCULATED_CHECKSUM
|
||||
#define HTTPD_PRECALCULATED_CHECKSUM 0
|
||||
#define HTTPD_PRECALCULATED_CHECKSUM 0
|
||||
#endif
|
||||
|
||||
#if HTTPD_PRECALCULATED_CHECKSUM
|
||||
|
@ -59,6 +70,9 @@ struct fs_file {
|
|||
u16_t chksum_count;
|
||||
#endif /* HTTPD_PRECALCULATED_CHECKSUM */
|
||||
u8_t http_header_included;
|
||||
#if LWIP_HTTPD_CUSTOM_FILES
|
||||
u8_t is_custom_file;
|
||||
#endif /* LWIP_HTTPD_CUSTOM_FILES */
|
||||
};
|
||||
|
||||
struct fs_file *fs_open(const char *name);
|
||||
|
|
Loading…
Reference in New Issue