uIP 1.0 based webserver for LPC1114 + ENC28J60

Dependencies:   mbed TMP102

Committer:
ban4jp
Date:
Sat Jun 14 16:02:21 2014 +0000
Revision:
0:685224d2f66d
initial commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ban4jp 0:685224d2f66d 1 /*
ban4jp 0:685224d2f66d 2 * Copyright (c) 2001, Swedish Institute of Computer Science.
ban4jp 0:685224d2f66d 3 * All rights reserved.
ban4jp 0:685224d2f66d 4 *
ban4jp 0:685224d2f66d 5 * Redistribution and use in source and binary forms, with or without
ban4jp 0:685224d2f66d 6 * modification, are permitted provided that the following conditions
ban4jp 0:685224d2f66d 7 * are met:
ban4jp 0:685224d2f66d 8 * 1. Redistributions of source code must retain the above copyright
ban4jp 0:685224d2f66d 9 * notice, this list of conditions and the following disclaimer.
ban4jp 0:685224d2f66d 10 * 2. Redistributions in binary form must reproduce the above copyright
ban4jp 0:685224d2f66d 11 * notice, this list of conditions and the following disclaimer in the
ban4jp 0:685224d2f66d 12 * documentation and/or other materials provided with the distribution.
ban4jp 0:685224d2f66d 13 * 3. Neither the name of the Institute nor the names of its contributors
ban4jp 0:685224d2f66d 14 * may be used to endorse or promote products derived from this software
ban4jp 0:685224d2f66d 15 * without specific prior written permission.
ban4jp 0:685224d2f66d 16 *
ban4jp 0:685224d2f66d 17 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
ban4jp 0:685224d2f66d 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
ban4jp 0:685224d2f66d 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ban4jp 0:685224d2f66d 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
ban4jp 0:685224d2f66d 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
ban4jp 0:685224d2f66d 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
ban4jp 0:685224d2f66d 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
ban4jp 0:685224d2f66d 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
ban4jp 0:685224d2f66d 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
ban4jp 0:685224d2f66d 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
ban4jp 0:685224d2f66d 27 * SUCH DAMAGE.
ban4jp 0:685224d2f66d 28 *
ban4jp 0:685224d2f66d 29 * This file is part of the lwIP TCP/IP stack.
ban4jp 0:685224d2f66d 30 *
ban4jp 0:685224d2f66d 31 * Author: Adam Dunkels <adam@sics.se>
ban4jp 0:685224d2f66d 32 *
ban4jp 0:685224d2f66d 33 * $Id: httpd-fs.c,v 1.1 2006/06/07 09:13:08 adam Exp $
ban4jp 0:685224d2f66d 34 */
ban4jp 0:685224d2f66d 35
ban4jp 0:685224d2f66d 36 #include "httpd.h"
ban4jp 0:685224d2f66d 37 #include "httpd-fs.h"
ban4jp 0:685224d2f66d 38 #include "httpd-fsdata.h"
ban4jp 0:685224d2f66d 39
ban4jp 0:685224d2f66d 40 #ifndef NULL
ban4jp 0:685224d2f66d 41 #define NULL 0
ban4jp 0:685224d2f66d 42 #endif /* NULL */
ban4jp 0:685224d2f66d 43
ban4jp 0:685224d2f66d 44 #include "httpd-fsdata.c.h"
ban4jp 0:685224d2f66d 45
ban4jp 0:685224d2f66d 46 #if HTTPD_FS_STATISTICS
ban4jp 0:685224d2f66d 47 static u16_t count[HTTPD_FS_NUMFILES];
ban4jp 0:685224d2f66d 48 #endif /* HTTPD_FS_STATISTICS */
ban4jp 0:685224d2f66d 49
ban4jp 0:685224d2f66d 50 /*-----------------------------------------------------------------------------------*/
ban4jp 0:685224d2f66d 51 static u8_t
ban4jp 0:685224d2f66d 52 httpd_fs_strcmp(const char *str1, const char *str2)
ban4jp 0:685224d2f66d 53 {
ban4jp 0:685224d2f66d 54 u8_t i;
ban4jp 0:685224d2f66d 55 i = 0;
ban4jp 0:685224d2f66d 56 loop:
ban4jp 0:685224d2f66d 57
ban4jp 0:685224d2f66d 58 if(str2[i] == 0 ||
ban4jp 0:685224d2f66d 59 str1[i] == '\r' ||
ban4jp 0:685224d2f66d 60 str1[i] == '\n') {
ban4jp 0:685224d2f66d 61 return 0;
ban4jp 0:685224d2f66d 62 }
ban4jp 0:685224d2f66d 63
ban4jp 0:685224d2f66d 64 if(str1[i] != str2[i]) {
ban4jp 0:685224d2f66d 65 return 1;
ban4jp 0:685224d2f66d 66 }
ban4jp 0:685224d2f66d 67
ban4jp 0:685224d2f66d 68
ban4jp 0:685224d2f66d 69 ++i;
ban4jp 0:685224d2f66d 70 goto loop;
ban4jp 0:685224d2f66d 71 }
ban4jp 0:685224d2f66d 72 /*-----------------------------------------------------------------------------------*/
ban4jp 0:685224d2f66d 73 int
ban4jp 0:685224d2f66d 74 httpd_fs_open(const char *name, struct httpd_fs_file *file)
ban4jp 0:685224d2f66d 75 {
ban4jp 0:685224d2f66d 76 #if HTTPD_FS_STATISTICS
ban4jp 0:685224d2f66d 77 u16_t i = 0;
ban4jp 0:685224d2f66d 78 #endif /* HTTPD_FS_STATISTICS */
ban4jp 0:685224d2f66d 79 struct httpd_fsdata_file_noconst *f;
ban4jp 0:685224d2f66d 80
ban4jp 0:685224d2f66d 81 for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
ban4jp 0:685224d2f66d 82 f != NULL;
ban4jp 0:685224d2f66d 83 f = (struct httpd_fsdata_file_noconst *)f->next) {
ban4jp 0:685224d2f66d 84
ban4jp 0:685224d2f66d 85 if(httpd_fs_strcmp(name, f->name) == 0) {
ban4jp 0:685224d2f66d 86 file->data = f->data;
ban4jp 0:685224d2f66d 87 file->len = f->len;
ban4jp 0:685224d2f66d 88 #if HTTPD_FS_STATISTICS
ban4jp 0:685224d2f66d 89 ++count[i];
ban4jp 0:685224d2f66d 90 #endif /* HTTPD_FS_STATISTICS */
ban4jp 0:685224d2f66d 91 return 1;
ban4jp 0:685224d2f66d 92 }
ban4jp 0:685224d2f66d 93 #if HTTPD_FS_STATISTICS
ban4jp 0:685224d2f66d 94 ++i;
ban4jp 0:685224d2f66d 95 #endif /* HTTPD_FS_STATISTICS */
ban4jp 0:685224d2f66d 96
ban4jp 0:685224d2f66d 97 }
ban4jp 0:685224d2f66d 98 return 0;
ban4jp 0:685224d2f66d 99 }
ban4jp 0:685224d2f66d 100 /*-----------------------------------------------------------------------------------*/
ban4jp 0:685224d2f66d 101 void
ban4jp 0:685224d2f66d 102 httpd_fs_init(void)
ban4jp 0:685224d2f66d 103 {
ban4jp 0:685224d2f66d 104 #if HTTPD_FS_STATISTICS
ban4jp 0:685224d2f66d 105 u16_t i;
ban4jp 0:685224d2f66d 106 for(i = 0; i < HTTPD_FS_NUMFILES; i++) {
ban4jp 0:685224d2f66d 107 count[i] = 0;
ban4jp 0:685224d2f66d 108 }
ban4jp 0:685224d2f66d 109 #endif /* HTTPD_FS_STATISTICS */
ban4jp 0:685224d2f66d 110 }
ban4jp 0:685224d2f66d 111 /*-----------------------------------------------------------------------------------*/
ban4jp 0:685224d2f66d 112 #if HTTPD_FS_STATISTICS
ban4jp 0:685224d2f66d 113 u16_t httpd_fs_count
ban4jp 0:685224d2f66d 114 (char *name)
ban4jp 0:685224d2f66d 115 {
ban4jp 0:685224d2f66d 116 struct httpd_fsdata_file_noconst *f;
ban4jp 0:685224d2f66d 117 u16_t i;
ban4jp 0:685224d2f66d 118
ban4jp 0:685224d2f66d 119 i = 0;
ban4jp 0:685224d2f66d 120 for(f = (struct httpd_fsdata_file_noconst *)HTTPD_FS_ROOT;
ban4jp 0:685224d2f66d 121 f != NULL;
ban4jp 0:685224d2f66d 122 f = (struct httpd_fsdata_file_noconst *)f->next) {
ban4jp 0:685224d2f66d 123
ban4jp 0:685224d2f66d 124 if(httpd_fs_strcmp(name, f->name) == 0) {
ban4jp 0:685224d2f66d 125 return count[i];
ban4jp 0:685224d2f66d 126 }
ban4jp 0:685224d2f66d 127 ++i;
ban4jp 0:685224d2f66d 128 }
ban4jp 0:685224d2f66d 129 return 0;
ban4jp 0:685224d2f66d 130 }
ban4jp 0:685224d2f66d 131 #endif /* HTTPD_FS_STATISTICS */
ban4jp 0:685224d2f66d 132 /*-----------------------------------------------------------------------------------*/