Fork of Smoothie to port to mbed non-LPC targets.

Dependencies:   mbed

Fork of Smoothie by Stéphane Cachat

Committer:
Michael J. Spencer
Date:
Fri Feb 28 18:52:52 2014 -0800
Revision:
2:1df0b61d3b5a
Update to latest Smoothie.

Who changed what in which revision?

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