$NetBSD: patch-CacheDirs,v 1.2 1999/05/09 21:12:33 tron Exp $ *** /dev/null Tue Feb 6 11:05:04 1996 --- README-CACHEDIRS Tue Feb 6 13:03:37 1996 *************** *** 0 **** --- 1,12 ---- + Patch to translate directory names in the cache from e.g. + /www-cache/http/www.some.where.org/ + to + /www-cache/http/org/where/some/www/ + + Note that this can lead to unexpected problems, when you have two URLs + like and . + [This does happen, e.g. many sites out there have "some.where.org" and + "www.some.where.org" point to the same machine.] + + -- + -- 19950915, Gertjan van Oosten, gertjan@West.NL, West Consulting B.V. *** WWW/Daemon/Implementation/HTCache.c.orig Fri Aug 12 12:36:11 1994 --- Daemon/Implementation/HTCache.c Fri Sep 15 16:25:33 1995 *************** *** 5,16 **** --- 5,19 ---- ** AUTHORS: ** AL Ari Luotonen luotonen@dxcern.cern.ch ** FM Fote Macrides macrides@sci.wfeb.edu + ** GJ Gertjan van Oosten gertjan@West.NL ** ** HISTORY: ** 31 Jan 94 AL Written from scratch on a *very* beautiful ** Sunday afternoon -- seems like the spring ** is already coming, yippee! ** 8 Jul 94 FM Insulate free() from _free structure element. + ** 15 Sep 95 GJ Translate host names in cache to (reversed) + ** directories. ** ** BUGS: ** *************** *** 243,248 **** --- 246,252 ---- { char * access = NULL; char * host = NULL; + char * revhost = NULL; char * path = NULL; char * cfn = NULL; BOOL welcome = NO; *************** *** 274,291 **** *cur = TOLOWER(*cur); cur++; } } cfn = (char*)malloc(strlen(cc.cache_root) + strlen(access) + ! (host ? strlen(host) : 0) + (path ? strlen(path) : 0) + (welcome ? strlen(WELCOME_FILE) : 0) + 3); if (!cfn) outofmem(__FILE__, "cache_file_name"); ! sprintf(cfn, "%s/%s/%s%s%s", cc.cache_root, access, host, path, (welcome ? WELCOME_FILE : "")); ! FREE(access); FREE(host); FREE(path); /* ** This checks that the last component is not too long. --- 278,310 ---- *cur = TOLOWER(*cur); cur++; } + /* + ** Now transform host name from "www.some.where.org" + ** to "org/where/some/www". + ** [For nameless hosts, you'd want the IP address + ** translated from "10.127.7.254" to "10/127/7/254", + ** but that is left as an exercise.] + */ + revhost = malloc(strlen(host)+1); + revhost[0] = '\0'; + while (cur = strrchr(host, '.')) { + strcat(revhost, cur+1); + strcat(revhost, "/"); + *cur = '\0'; + } + strcat(revhost, host); } cfn = (char*)malloc(strlen(cc.cache_root) + strlen(access) + ! (revhost ? strlen(revhost) : 0) + (path ? strlen(path) : 0) + (welcome ? strlen(WELCOME_FILE) : 0) + 3); if (!cfn) outofmem(__FILE__, "cache_file_name"); ! sprintf(cfn, "%s/%s/%s%s%s", cc.cache_root, access, revhost, path, (welcome ? WELCOME_FILE : "")); ! FREE(access); FREE(host); FREE(revhost); FREE(path); /* ** This checks that the last component is not too long.