/*
- * $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
#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 */
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));
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)
parseProxyAuthLine(void)
{
char *token;
-
token = strtok(NULL, w_space);
if (token == NULL)
self_destruct();
char *token;
LOCAL_ARRAY(char, buf, BUFSIZ);
int i;
-
token = strtok(NULL, w_space);
if (token == NULL)
self_destruct();
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 */
}
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
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)
{
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;
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)
{
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
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);
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);
parseDebugOptionsLine();
else if (!strcmp(token, "pid_filename"))
- parsePidFilenameLine();
+ parsePathname(&Config.pidFilename);
else if (!strcmp(token, "visible_hostname"))
parseVisibleHostnameLine();
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);
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);
/*
- * $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
/* 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;
{
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 *));
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';
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);
{
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);
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)
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) {
storeWriteCleanLog(void)
{
StoreEntry *e = NULL;
- LOCAL_ARRAY(char, swapfilename, MAX_FILE_NAME_LEN);
FILE *fp = NULL;
int n = 0;
int x = 0;
}
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;
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,
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;
}