diff options
| author | Jeffrey Armstrong <jeffrey.armstrong@approximatrix.com> | 2016-08-25 15:14:24 -0400 |
|---|---|---|
| committer | Jeffrey Armstrong <jeffrey.armstrong@approximatrix.com> | 2016-08-25 15:14:24 -0400 |
| commit | 84de937689bcb35ea3ddae55d9c74dc23463f79c (patch) | |
| tree | cddc948933f9e0ee0a3f1b4caeaea5eb93bfcc98 /httpd/httpd-fs.c | |
| download | uIP-FOSSIL-84de937689bcb35ea3ddae55d9c74dc23463f79c.tar.gz uIP-FOSSIL-84de937689bcb35ea3ddae55d9c74dc23463f79c.zip | |
Initial commit of original code
Diffstat (limited to 'httpd/httpd-fs.c')
| -rw-r--r-- | httpd/httpd-fs.c | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/httpd/httpd-fs.c b/httpd/httpd-fs.c new file mode 100644 index 0000000..18d5729 --- /dev/null +++ b/httpd/httpd-fs.c @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2009 Jeffrey Armstrong + * 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 uIP TCP/IP stack - MS-DOS FOSSIL port. + * + * Author: Jeffrey Armstrong <jeff@rainbow-100.com> + * + */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <dos.h> + +#include "httpd-fs.h" + +void change_to_backslash(char *name) +{ +int counter; + for(counter=0;counter<strlen(name);counter++) { + if(name[counter]=='/') name[counter] = '\\'; + } +} + +void safe_name(char *name) +{ +#ifdef WATCOM +char *newtext; + newtext = (char *)malloc((strlen(name)+1)*sizeof(char)); + memcpy(newtext,name,(strlen(name)+1)*sizeof(char)); + if(_islfn(name)) + _lfntosfn(newtext,name); + free(newtext); +#endif +} + +int httpd_fs_open(char *name, struct httpd_fs_file *file) +{ +FILE *fp; +int ret; +char *original; + + /* Any leading slashes must be stripped */ + original = NULL; + if(name[0] == '/' || name[0] == '\\') { + original = name; + name++; + } + + change_to_backslash(name); + safe_name(name); + fp = fopen(name,"rb"); + if(fp != NULL) { + + fseek(fp, 0, SEEK_END); + file->len = ftell(fp); + fseek(fp, 0, SEEK_SET); + file->fp = fp; + + ret = 1; + } else + ret = -1; + + if(original != NULL) + name = original; + + return ret; +} + +void httpd_fs_init(void) +{ + return; +} |
