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