Author: jerry
Date: 2004-08-16 15:25:57 +0000 (Mon, 16 Aug 2004)
New Revision: 1833
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/&rev=1833&nolog=1
Log:
patch from James Peach to get swat to look for index.html by default when given a 
trailing directory/
Modified:
   branches/SAMBA_3_0/source/web/cgi.c

Changeset:
Modified: branches/SAMBA_3_0/source/web/cgi.c
===================================================================
--- branches/SAMBA_3_0/source/web/cgi.c 2004-08-16 12:07:00 UTC (rev 1832)
+++ branches/SAMBA_3_0/source/web/cgi.c 2004-08-16 15:25:57 UTC (rev 1833)
@@ -421,18 +421,38 @@
                }
        }
 
-       if (!file_exist(file, &st)) {
+       if (sys_stat(file, &st) != 0) 
+       {
                cgi_setup_error("404 File Not Found","",
                                "The requested file was not found");
        }
 
-       fd = web_open(file,O_RDONLY,0);
+       if (S_ISDIR(st.st_mode))
+       {
+               snprintf(buf, sizeof(buf), "%s/index.html", file);
+               if (!file_exist(buf, &st) || !S_ISREG(st.st_mode))
+               {
+                       cgi_setup_error("404 File Not Found","",
+                                       "The requested file was not found");
+               }
+       }
+       else if (S_ISREG(st.st_mode))
+       {
+               snprintf(buf, sizeof(buf), "%s", file);
+       }
+       else
+       {
+               cgi_setup_error("404 File Not Found","",
+                               "The requested file was not found");
+       }
+
+       fd = web_open(buf,O_RDONLY,0);
        if (fd == -1) {
                cgi_setup_error("404 File Not Found","",
                                "The requested file was not found");
        }
        printf("HTTP/1.0 200 OK\r\n");
-       if ((p=strrchr_m(file,'.'))) {
+       if ((p=strrchr_m(buf, '.'))) {
                if (strcmp(p,".gif")==0) {
                        printf("Content-Type: image/gif\r\n");
                } else if (strcmp(p,".jpg")==0) {
@@ -554,7 +574,7 @@
 
        string_sub(url, "/swat/", "", 0);
 
-       if (url[0] != '/' && strstr(url,"..")==0 && file_exist(url, NULL)) {
+       if (url[0] != '/' && strstr(url,"..")==0) {
                cgi_download(url);
        }
 

Reply via email to