From: wessels <> Date: Sat, 2 Nov 1996 04:24:58 +0000 (+0000) Subject: Make swap log pathname configurable X-Git-Tag: SQUID_3_0_PRE1~5545 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5ad764e27d272e0afd4354151c3e1f6ec5decbf9;p=thirdparty%2Fsquid.git Make swap log pathname configurable --- diff --git a/src/acl.cc b/src/acl.cc index b173017c5c..36968cabc0 100644 --- a/src/acl.cc +++ b/src/acl.cc @@ -1,5 +1,5 @@ /* - * $Id: acl.cc,v 1.54 1996/10/24 23:31:11 wessels Exp $ + * $Id: acl.cc,v 1.55 1996/11/01 21:24:58 wessels Exp $ * * DEBUG: section 28 Access Control * AUTHOR: Duane Wessels @@ -208,9 +208,9 @@ aclParseMethodList(void) static int decode_addr(char *asc, struct in_addr *addr, struct in_addr *mask) { - u_num32 a; - int a1, a2, a3, a4; - struct hostent *hp; + u_num32 a = 0; + int a1=0, a2=0, a3=0, a4=0; + struct hostent *hp = NULL; switch (sscanf(asc, "%d.%d.%d.%d", &a1, &a2, &a3, &a4)) { case 4: /* a dotted quad */ diff --git a/src/cache_cf.cc b/src/cache_cf.cc index bbbb9c8300..64841a1023 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,5 +1,5 @@ /* - * $Id: cache_cf.cc,v 1.121 1996/10/30 06:02:49 wessels Exp $ + * $Id: cache_cf.cc,v 1.122 1996/11/01 21:25:00 wessels Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -137,6 +137,7 @@ struct SquidConfig Config; #define DefaultCacheLogFile DEFAULT_CACHE_LOG #define DefaultAccessLogFile DEFAULT_ACCESS_LOG #define DefaultStoreLogFile DEFAULT_STORE_LOG +#define DefaultSwapLogFile (char *)NULL /* default swappath(0) */ #if USE_PROXY_AUTH #define DefaultProxyAuthFile (char *)NULL /* default NONE */ #define DefaultProxyAuthIgnoreDomain (char *)NULL /* default NONE */ @@ -215,14 +216,12 @@ static void wordlistAdd _PARAMS((wordlist **, char *)); static void configDoConfigure _PARAMS((void)); static void configSetFactoryDefaults _PARAMS((void)); -static void parseAccessLogLine _PARAMS((void)); static void parseAddressLine _PARAMS((struct in_addr *)); static void parseAnnounceToLine _PARAMS((void)); static void parseAppendDomainLine _PARAMS((void)); static void parseCacheAnnounceLine _PARAMS((void)); static void parseCacheHostLine _PARAMS((void)); static void parseDebugOptionsLine _PARAMS((void)); -static void parseDnsProgramLine _PARAMS((void)); static void parseEffectiveUserLine _PARAMS((void)); static void parseErrHtmlLine _PARAMS((void)); static void parseFtpOptionsLine _PARAMS((void)); @@ -238,18 +237,17 @@ static void parseIcpPortLine _PARAMS((void)); static void parseLocalDomainFile _PARAMS((char *fname)); static void parseLocalDomainLine _PARAMS((void)); static void parseMcastGroupLine _PARAMS((void)); -static void parseLogLine _PARAMS((void)); static void parseMemLine _PARAMS((void)); static void parseMgrLine _PARAMS((void)); static void parsePidFilenameLine _PARAMS((void)); static void parseKilobytes _PARAMS((int *)); -static void parseStoreLogLine _PARAMS((void)); static void parseSwapLine _PARAMS((void)); static void parseRefreshPattern _PARAMS((int icase)); static void parseVisibleHostnameLine _PARAMS((void)); static void parseWAISRelayLine _PARAMS((void)); static void parseMinutesLine _PARAMS((int *)); static void ip_acl_destroy _PARAMS((ip_acl **)); +static void parsePathname _PARAMS((char **)); static void self_destruct(void) @@ -640,7 +638,6 @@ static void parseProxyAuthLine(void) { char *token; - token = strtok(NULL, w_space); if (token == NULL) self_destruct(); @@ -658,7 +655,6 @@ parseHttpdAccelLine(void) char *token; LOCAL_ARRAY(char, buf, BUFSIZ); int i; - token = strtok(NULL, w_space); if (token == NULL) self_destruct(); @@ -676,14 +672,12 @@ static void parseEffectiveUserLine(void) { char *token; - token = strtok(NULL, w_space); if (token == NULL) self_destruct(); safe_free(Config.effectiveUser); safe_free(Config.effectiveGroup); Config.effectiveUser = xstrdup(token); - token = strtok(NULL, w_space); if (token == NULL) return; /* group is optional */ @@ -691,36 +685,14 @@ parseEffectiveUserLine(void) } static void -parseLogLine(void) -{ - char *token; - token = strtok(NULL, w_space); - if (token == NULL) - self_destruct(); - safe_free(Config.Log.log); - Config.Log.log = xstrdup(token); -} - -static void -parseAccessLogLine(void) +parsePathname(char **path) { char *token; token = strtok(NULL, w_space); if (token == NULL) self_destruct(); - safe_free(Config.Log.access); - Config.Log.access = xstrdup(token); -} - -static void -parseStoreLogLine(void) -{ - char *token; - token = strtok(NULL, w_space); - if (token == NULL) - self_destruct(); - safe_free(Config.Log.store); - Config.Log.store = xstrdup(token); + safe_free(*path); + *path = xstrdup(token); } static void @@ -745,28 +717,6 @@ parseFtpOptionsLine(void) Config.Program.ftpget_opts = xstrdup(token); } -static void -parseDnsProgramLine(void) -{ - char *token; - token = strtok(NULL, w_space); - if (token == NULL) - self_destruct(); - safe_free(Config.Program.dnsserver); - Config.Program.dnsserver = xstrdup(token); -} - -static void -parseRedirectProgramLine(void) -{ - char *token; - token = strtok(NULL, w_space); - if (token == NULL) - self_destruct(); - safe_free(Config.Program.redirect); - Config.Program.redirect = xstrdup(token); -} - static void parseOnOff(int *var) { @@ -846,7 +796,6 @@ parseLocalDomainFile(char *fname) LOCAL_ARRAY(char, tmp_line, BUFSIZ); FILE *fp = NULL; char *t = NULL; - if ((fp = fopen(fname, "r")) == NULL) { debug(3, 1, "parseLocalDomainFile: %s: %s\n", fname, xstrerror()); return; @@ -924,17 +873,6 @@ parseDebugOptionsLine(void) Config.debugOptions = xstrdup(token); } -static void -parsePidFilenameLine(void) -{ - char *token; - token = strtok(NULL, w_space); - safe_free(Config.pidFilename); - if (token == NULL) - self_destruct(); - Config.pidFilename = xstrdup(token); -} - static void parseVisibleHostnameLine(void) { @@ -1010,9 +948,6 @@ parseVizHackLine(void) self_destruct(); if (sscanf(token, "%d", &i) == 1) Config.vizHackAddr.sin_port = htons(i); - debug(0, 0, "parseVizHackLine: got %s %d\n", - inet_ntoa(Config.vizHackAddr.sin_addr), - ntohs(Config.vizHackAddr.sin_port)); } static void @@ -1107,13 +1042,16 @@ parseConfigFile(char *file_name) parseWordlist(&Config.cache_dirs); else if (!strcmp(token, "cache_log")) - parseLogLine(); + parsePathname(&Config.Log.log); else if (!strcmp(token, "cache_access_log")) - parseAccessLogLine(); + parsePathname(&Config.Log.access); else if (!strcmp(token, "cache_store_log")) - parseStoreLogLine(); + parsePathname(&Config.Log.store); + + else if (!strcmp(token, "cache_swap_log")) + parsePathname(&Config.Log.swap); else if (!strcmp(token, "logfile_rotate")) parseIntegerValue(&Config.Log.rotateNumber); @@ -1217,13 +1155,13 @@ parseConfigFile(char *file_name) parseFtpOptionsLine(); else if (!strcmp(token, "cache_dns_program")) - parseDnsProgramLine(); + parsePathname(&Config.Program.dnsserver); else if (!strcmp(token, "dns_children")) parseIntegerValue(&Config.dnsChildren); else if (!strcmp(token, "redirect_program")) - parseRedirectProgramLine(); + parsePathname(&Config.Program.redirect); else if (!strcmp(token, "redirect_children")) parseIntegerValue(&Config.redirectChildren); @@ -1311,7 +1249,7 @@ parseConfigFile(char *file_name) parseDebugOptionsLine(); else if (!strcmp(token, "pid_filename")) - parsePidFilenameLine(); + parsePathname(&Config.pidFilename); else if (!strcmp(token, "visible_hostname")) parseVisibleHostnameLine(); @@ -1435,6 +1373,7 @@ configFreeMemory(void) safe_free(Config.Log.log); safe_free(Config.Log.access); safe_free(Config.Log.store); + safe_free(Config.Log.swap); safe_free(Config.adminEmail); safe_free(Config.effectiveUser); safe_free(Config.effectiveGroup); @@ -1520,6 +1459,7 @@ configSetFactoryDefaults(void) Config.Log.log = safe_xstrdup(DefaultCacheLogFile); Config.Log.access = safe_xstrdup(DefaultAccessLogFile); Config.Log.store = safe_xstrdup(DefaultStoreLogFile); + Config.Log.swap = safe_xstrdup(DefaultSwapLogFile); Config.Log.rotateNumber = DefaultLogRotateNumber; Config.Program.ftpget = safe_xstrdup(DefaultFtpgetProgram); Config.Program.ftpget_opts = safe_xstrdup(DefaultFtpgetOptions); diff --git a/src/disk.cc b/src/disk.cc index 08e644d6cc..470ecb939e 100644 --- a/src/disk.cc +++ b/src/disk.cc @@ -1,5 +1,5 @@ /* - * $Id: disk.cc,v 1.35 1996/10/11 23:11:53 wessels Exp $ + * $Id: disk.cc,v 1.36 1996/11/01 21:25:02 wessels Exp $ * * DEBUG: section 6 Disk I/O Routines * AUTHOR: Harvest Derived @@ -173,7 +173,7 @@ file_open(char *path, int (*handler) _PARAMS((void)), int mode) commSetCloseOnExec(fd); /* init table */ - strncpy(file_table[fd].filename, path, MAX_FILE_NAME_LEN); + strncpy(file_table[fd].filename, path, SQUID_MAXPATHLEN); file_table[fd].at_eof = NO; file_table[fd].open_stat = FILE_OPEN; file_table[fd].close_request = NOT_REQUEST; diff --git a/src/squid.h b/src/squid.h index a37521c0bb..ea514179ba 100644 --- a/src/squid.h +++ b/src/squid.h @@ -1,6 +1,6 @@ /* - * $Id: squid.h,v 1.63 1996/10/27 07:12:00 wessels Exp $ + * $Id: squid.h,v 1.64 1996/11/01 21:25:05 wessels Exp $ * * AUTHOR: Duane Wessels * @@ -154,6 +154,8 @@ #define SQUIDHOSTNAMELEN MAXHOSTNAMELEN #endif +#define SQUID_MAXPATHLEN 256 + #ifndef INADDR_NONE #define INADDR_NONE ((unsigned long) -1) #endif diff --git a/src/stat.cc b/src/stat.cc index 46660acaa5..caad9df83a 100644 --- a/src/stat.cc +++ b/src/stat.cc @@ -1,6 +1,6 @@ /* - * $Id: stat.cc,v 1.96 1996/10/29 02:40:13 wessels Exp $ + * $Id: stat.cc,v 1.97 1996/11/01 21:25:06 wessels Exp $ * * DEBUG: section 18 Cache Manager Statistics * AUTHOR: Harvest Derived @@ -1279,8 +1279,8 @@ stat_init(cacheinfo ** object, char *logfilename) obj->parameter_get = parameter_get; obj->server_list = server_list; if (logfilename) { - memset(obj->logfilename, '0', MAX_FILE_NAME_LEN); - strncpy(obj->logfilename, logfilename, MAX_FILE_NAME_LEN - 1); + memset(obj->logfilename, '0', SQUID_MAXPATHLEN); + strncpy(obj->logfilename, logfilename, SQUID_MAXPATHLEN - 1); obj->logfile_fd = file_open(obj->logfilename, NULL, O_WRONLY | O_CREAT); if (obj->logfile_fd == DISK_ERROR) { debug(18, 0, "%s: %s\n", obj->logfilename, xstrerror()); diff --git a/src/store.cc b/src/store.cc index 9618247b26..92eaf42493 100644 --- a/src/store.cc +++ b/src/store.cc @@ -1,6 +1,6 @@ /* - * $Id: store.cc,v 1.144 1996/10/30 09:28:04 wessels Exp $ + * $Id: store.cc,v 1.145 1996/11/01 21:25:09 wessels Exp $ * * DEBUG: section 20 Storeage Manager * AUTHOR: Harvest Derived @@ -262,8 +262,8 @@ static int storelog_fd = -1; /* key temp buffer */ static char key_temp_buffer[MAX_URL + 100]; -static char swaplog_file[MAX_FILE_NAME_LEN]; -static char tmp_filename[MAX_FILE_NAME_LEN]; +static char swaplog_file[SQUID_MAXPATHLEN+1]; +static char tmp_filename[SQUID_MAXPATHLEN+1]; /* patch cache_dir to accomodate multiple disk storage */ static char **CacheDirs = NULL; @@ -1065,6 +1065,8 @@ storeAddSwapDisk(char *path) { char **tmp = NULL; int i; + if (strlen(path) > (SQUID_MAXPATHLEN-32)) + fatal_dump("cache_dir pathname is too long"); if (CacheDirs == NULL) { CacheDirsAllocated = 4; CacheDirs = xcalloc(CacheDirsAllocated, sizeof(char *)); @@ -1093,7 +1095,7 @@ swappath(int n) static char * storeSwapFullPath(int fn, char *fullpath) { - LOCAL_ARRAY(char, fullfilename, MAX_FILE_NAME_LEN); + LOCAL_ARRAY(char, fullfilename, SQUID_MAXPATHLEN+1); if (!fullpath) fullpath = fullfilename; fullpath[0] = '\0'; @@ -1249,7 +1251,7 @@ storeSwapLog(StoreEntry * e) static void storeSwapOutHandle(int fd, int flag, StoreEntry * e) { - LOCAL_ARRAY(char, filename, MAX_FILE_NAME_LEN); + LOCAL_ARRAY(char, filename, SQUID_MAXPATHLEN+1); MemObject *mem = e->mem_obj; debug(20, 3, "storeSwapOutHandle: '%s'\n", e->key); @@ -1334,7 +1336,7 @@ storeSwapOutStart(StoreEntry * e) { int fd; int x; - LOCAL_ARRAY(char, swapfilename, MAX_FILE_NAME_LEN); + LOCAL_ARRAY(char, swapfilename, SQUID_MAXPATHLEN+1); MemObject *mem = e->mem_obj; /* Suggest a new swap file number */ swapfileno = (swapfileno + 1) % (MAX_SWAP_FILE); @@ -1577,7 +1579,7 @@ storeStartRebuildFromDisk(void) data->start = getCurrentTime(); /* Check if log is clean */ - sprintf(tmp_filename, "%s/log-last-clean", swappath(0)); + sprintf(tmp_filename, "%s-last-clean", swaplog_file); if (stat(tmp_filename, &sb) >= 0) { last_clean = sb.st_mtime; if (stat(swaplog_file, &sb) >= 0) @@ -2478,7 +2480,10 @@ storeInit(void) storeAddSwapDisk(w->key); storeSanityCheck(); dir_created = storeVerifySwapDirs(opt_zap_disk_store); - sprintf(swaplog_file, "%s/log", swappath(0)); + if (Config.Log.swap) + strncpy(swaplog_file, Config.Log.swap, SQUID_MAXPATHLEN); + else + sprintf(swaplog_file, "%s/log", swappath(0)); swaplog_fd = file_open(swaplog_file, NULL, O_WRONLY | O_CREAT); debug(20, 3, "swaplog_fd %d is now '%s'\n", swaplog_fd, swaplog_file); if (swaplog_fd < 0) { @@ -2617,7 +2622,6 @@ int storeWriteCleanLog(void) { StoreEntry *e = NULL; - LOCAL_ARRAY(char, swapfilename, MAX_FILE_NAME_LEN); FILE *fp = NULL; int n = 0; int x = 0; @@ -2630,7 +2634,7 @@ storeWriteCleanLog(void) } debug(20, 1, "storeWriteCleanLog: Starting...\n"); start = getCurrentTime(); - sprintf(tmp_filename, "%s/log_clean", swappath(0)); + sprintf(tmp_filename, "%s_clean", swaplog_file); if ((fp = fopen(tmp_filename, "a+")) == NULL) { debug(20, 0, "storeWriteCleanLog: %s: %s\n", tmp_filename, xstrerror()); return 0; @@ -2646,7 +2650,6 @@ storeWriteCleanLog(void) continue; if (BIT_TEST(e->flag, KEY_PRIVATE)) continue; - storeSwapFullPath(e->swap_file_number, swapfilename); x = fprintf(fp, "%08x %08x %08x %08x %9d %s\n", (int) e->swap_file_number, (int) e->timestamp, @@ -2697,7 +2700,7 @@ storeWriteCleanLog(void) r > 0 ? r : 0, (double) n / (r > 0 ? r : 1)); /* touch a timestamp file */ - sprintf(tmp_filename, "%s/log-last-clean", swappath(0)); + sprintf(tmp_filename, "%s-last-clean", swaplog_file); file_close(file_open(tmp_filename, NULL, O_WRONLY | O_CREAT | O_TRUNC)); return n; }