/*
* Copyright (c) 2001-2003 Swedish Institute of Computer Science.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
* SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGE.
*
* This file is part of the lwIP TCP/IP stack.
*
* Author: Adam Dunkels <adam@sics.se>
*
*/#include"lwip/opt.h"#include"lwip/def.h"#include"fs.h"#include"fsdata.h"#include<string.h>/** Set this to 1 to include "fsdata_custom.c" instead of "fsdata.c" for the
* file system (to prevent changing the file included in CVS) */#ifndef HTTPD_USE_CUSTOM_FSDATA#define HTTPD_USE_CUSTOM_FSDATA 0#endif#if HTTPD_USE_CUSTOM_FSDATA#include"fsdata_custom.c"#else /* HTTPD_USE_CUSTOM_FSDATA */#include"fsdata.c"#endif /* HTTPD_USE_CUSTOM_FSDATA *//*-----------------------------------------------------------------------------------*/#if LWIP_HTTPD_CUSTOM_FILESintfs_open_custom(structfs_file*file,constchar*name);voidfs_close_custom(structfs_file*file);#if LWIP_HTTPD_FS_ASYNC_READu8_tfs_canread_custom(structfs_file*file);u8_tfs_wait_read_custom(structfs_file*file,fs_wait_cbcallback_fn,void*callback_arg);#endif /* LWIP_HTTPD_FS_ASYNC_READ */#endif /* LWIP_HTTPD_CUSTOM_FILES *//*-----------------------------------------------------------------------------------*/err_tfs_open(structfs_file*file,constchar*name){conststructfsdata_file*f;if((file==NULL)||(name==NULL)){returnERR_ARG;}#if LWIP_HTTPD_CUSTOM_FILESif(fs_open_custom(file,name)){file->is_custom_file=1;returnERR_OK;}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=(constchar*)f->data;file->len=f->len;file->index=f->len;file->pextension=NULL;file->http_header_included=f->http_header_included;#if HTTPD_PRECALCULATED_CHECKSUMfile->chksum_count=f->chksum_count;file->chksum=f->chksum;#endif /* HTTPD_PRECALCULATED_CHECKSUM */#if LWIP_HTTPD_FILE_STATEfile->state=fs_state_init(file,name);#endif /* #if LWIP_HTTPD_FILE_STATE */returnERR_OK;}}/* file not found */returnERR_VAL;}/*-----------------------------------------------------------------------------------*/voidfs_close(structfs_file*file){#if LWIP_HTTPD_CUSTOM_FILESif(file->is_custom_file){fs_close_custom(file);}#endif /* LWIP_HTTPD_CUSTOM_FILES */#if LWIP_HTTPD_FILE_STATEfs_state_free(file,file->state);#endif /* #if LWIP_HTTPD_FILE_STATE */LWIP_UNUSED_ARG(file);}/*-----------------------------------------------------------------------------------*/#if LWIP_HTTPD_DYNAMIC_FILE_READ#if LWIP_HTTPD_F