-
/*
- * $Id: cache_diff.cc,v 1.19 2003/04/24 06:35:08 hno Exp $
- *
- * AUTHOR: Alex Rousskov
- *
- * SQUID Web Proxy Cache http://www.squid-cache.org/
- * ----------------------------------------------------------
- *
- * Squid is the result of efforts by numerous individuals from
- * the Internet community; see the CONTRIBUTORS file for full
- * details. Many organizations have provided support for Squid's
- * development; see the SPONSORS file for full details. Squid is
- * Copyrighted (C) 2001 by the Regents of the University of
- * California; see the COPYRIGHT file for full details. Squid
- * incorporates software developed and/or copyrighted by other
- * sources; see the CREDITS file for full details.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
+ * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
*
+ * Squid software is distributed under GPLv2+ license and includes
+ * contributions from numerous individuals and organizations.
+ * Please see the COPYING and CONTRIBUTORS files for details.
*/
/*
*/
#include "squid.h"
+#include <cerrno>
-typedef struct
-{
+typedef struct {
const char *name;
hash_table *hash;
- int count; /* #currently cached entries */
- int scanned_count; /* #scanned entries */
- int bad_add_count; /* #duplicate adds */
- int bad_del_count; /* #dels with no prior add */
-}
-
-CacheIndex;
+ int count; /* #currently cached entries */
+ int scanned_count; /* #scanned entries */
+ int bad_add_count; /* #duplicate adds */
+ int bad_del_count; /* #dels with no prior add */
+} CacheIndex;
-
-typedef struct _CacheEntry
-{
+typedef struct _CacheEntry {
const cache_key *key;
struct _CacheEntry *next;
- /* storeSwapLogData s; */
- unsigned char key_arr[MD5_DIGEST_CHARS];
-}
-
-CacheEntry;
-
-
-/* copied from url.c */
-const char *RequestMethodStr[] =
- {
- "NONE",
- "GET",
- "POST",
- "PUT",
- "HEAD",
- "CONNECT",
- "TRACE",
- "PURGE"
- };
-
+ /* StoreSwapLogData s; */
+ unsigned char key_arr[SQUID_MD5_DIGEST_LENGTH];
+} CacheEntry;
static int cacheIndexScan(CacheIndex * idx, const char *fname, FILE * file);
-
static CacheEntry *
-cacheEntryCreate(const storeSwapLogData * s)
+cacheEntryCreate(const StoreSwapLogData * s)
{
CacheEntry *e = xcalloc(1, sizeof(CacheEntry));
assert(s);
/* e->s = *s; */
- xmemcpy(e->key_arr, s->key, MD5_DIGEST_CHARS);
+ memcpy(e->key_arr, s->key, SQUID_MD5_DIGEST_LENGTH);
e->key = &e->key_arr[0];
return e;
}
return 0;
}
-#ifdef _SQUID_WIN32_
+#if _SQUID_WINDOWS_
setmode(fileno(file), O_BINARY);
-
#endif
scanned_count = cacheIndexScan(idx, fname, file);
cacheIndexScan(CacheIndex * idx, const char *fname, FILE * file)
{
int count = 0;
- storeSwapLogData s;
+ StoreSwapLogData s;
fprintf(stderr, "%s scanning\n", fname);
while (fread(&s, sizeof(s), 1, file) == 1) {
- count++;
- idx->scanned_count++;
- /* if (s.op <= SWAP_LOG_NOP || s.op >= SWAP_LOG_MAX)
+ ++count;
+ ++ idx->scanned_count;
+ /* if (!s.sane())
* continue; */
if (s.op == SWAP_LOG_ADD) {
CacheEntry *olde = (CacheEntry *) hash_lookup(idx->hash, s.key);
if (olde) {
- idx->bad_add_count++;
+ ++ idx->bad_add_count;
} else {
CacheEntry *e = cacheEntryCreate(&s);
hash_join(idx->hash, &e->hash);
- idx->count++;
+ ++ idx->count;
}
} else if (s.op == SWAP_LOG_DEL) {
CacheEntry *olde = (CacheEntry *) hash_lookup(idx->hash, s.key);
if (!olde)
- idx->bad_del_count++;
+ ++ idx->bad_del_count;
else {
assert(idx->count);
hash_remove_link(idx->hash, (hash_link *) olde);
cacheEntryDestroy(olde);
- idx->count--;
+ -- idx->count;
}
} else {
fprintf(stderr, "%s:%d: unknown swap log action\n", fname, count);
hash_first(small_idx->hash);
for (hashr = hash_next(small_idx->hash)) {
- hashed_count++;
+ ++hashed_count;
if (hash_lookup(large_idx->hash, hashr->key))
- shared_count++;
+ ++shared_count;
}
assert(hashed_count == small_idx->count);
cacheIndexCmpReport(idx2, shared_count);
}
-
static int
usage(const char *prg_name)
{
return usage(argv[0]);
if (argv[i][len - 1] == ':') {
- idxCount++;
+ ++idxCount;
if (len < 2 || idxCount > 2)
return usage(argv[0]);
return 1;
}
+