Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Althttpd now prefers /home over /index.html if it exists. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
87856f6c5497532661ccd96b49155f36 |
User & Date: | drh 2019-04-18 16:39:58.604 |
Context
2019-04-19
| ||
23:40 | Clarify the documentation on PRAGMA cache_size to explain that the cache size will go up or down in proportion to a change in page size. (check-in: 184e897473 user: drh tags: trunk) | |
2019-04-18
| ||
16:39 | Althttpd now prefers /home over /index.html if it exists. (check-in: 87856f6c54 user: drh tags: trunk) | |
16:34 | Change althttpd.c to search for /home after /index.html if not filename is given. (check-in: efdc1b8e66 user: drh tags: trunk) | |
Changes
Changes to misc/althttpd.c.
︙ | ︙ | |||
1247 1248 1249 1250 1251 1252 1253 | */ static int SendFile( const char *zFile, /* Name of the file to send */ int lenFile, /* Length of the zFile name in bytes */ struct stat *pStat /* Result of a stat() against zFile */ ){ const char *zContentType; | < | 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 | */ static int SendFile( const char *zFile, /* Name of the file to send */ int lenFile, /* Length of the zFile name in bytes */ struct stat *pStat /* Result of a stat() against zFile */ ){ const char *zContentType; time_t t; FILE *in; char zETag[100]; zContentType = GetMimeType(zFile, lenFile); if( zTmpNam ) unlink(zTmpNam); sprintf(zETag, "m%xs%x", (int)pStat->st_mtime, (int)pStat->st_size); |
︙ | ︙ | |||
1541 1542 1543 1544 1545 1546 1547 | ** is 0. ** ** If the connection should be closed, this routine calls exit() and ** thus never returns. If this routine does return it means that another ** HTTP request may appear on the wire. */ void ProcessOneRequest(int forceClose){ | | | 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 | ** is 0. ** ** If the connection should be closed, this routine calls exit() and ** thus never returns. If this routine does return it means that another ** HTTP request may appear on the wire. */ void ProcessOneRequest(int forceClose){ int i, j, j0; char *z; /* Used to parse up a string */ struct stat statbuf; /* Information about the file to be retrieved */ FILE *in; /* For reading from CGI scripts */ #ifdef LOG_HEADER FILE *hdrLog = 0; /* Log file for complete header content */ #endif char zLine[1000]; /* A buffer for input lines or forming names */ |
︙ | ︙ | |||
1880 1881 1882 1883 1884 1885 1886 | char zBuf[1000]; Malfunction(360, /* LOG: chdir() failed */ "cannot chdir to [%s] from [%s]", zHome, getcwd(zBuf,999)); } /* Locate the file in the filesystem. We might have to append | > | | | 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 | char zBuf[1000]; Malfunction(360, /* LOG: chdir() failed */ "cannot chdir to [%s] from [%s]", zHome, getcwd(zBuf,999)); } /* Locate the file in the filesystem. We might have to append ** a name like "/home" or "/index.html" or "/index.cgi" in order ** to find it. Any excess path information is put into the ** zPathInfo variable. */ j = j0 = (int)strlen(zLine); i = 0; while( zScript[i] ){ while( zScript[i] && (i==0 || zScript[i]!='/') ){ zLine[j] = zScript[i]; i++; j++; |
︙ | ︙ | |||
1916 1917 1918 1919 1920 1921 1922 | if( access(zLine,R_OK) ){ NotFound(390); /* LOG: File not readable */ } zRealScript = StrDup(&zLine[j0]); break; } if( zScript[i]==0 || zScript[i+1]==0 ){ | | | | 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 | if( access(zLine,R_OK) ){ NotFound(390); /* LOG: File not readable */ } zRealScript = StrDup(&zLine[j0]); break; } if( zScript[i]==0 || zScript[i+1]==0 ){ static const char *azIndex[] = { "/home", "/index.html", "index.cgi" }; int k = j>0 && zLine[j-1]=='/' ? j-1 : j; unsigned int jj; for(jj=0; jj<sizeof(azIndex)/sizeof(azIndex[0]); jj++){ strcpy(&zLine[k],azIndex[jj]); if( stat(zLine,&statbuf)!=0 ) continue; if( !S_ISREG(statbuf.st_mode) ) continue; if( access(zLine,R_OK) ) continue; break; } |
︙ | ︙ |