#include "squid.h" #undef sprintf #include #include char *entry_flag_str[] = { "ENTRY_SPECIAL", "ENTRY_REVALIDATE", "DELAY_SENDING", "RELEASE_REQUEST", "REFRESH_REQUEST", "ENTRY_CACHABLE", "ENTRY_DISPATCHED", "KEY_PRIVATE", "ENTRY_FWD_HDR_WAIT", "ENTRY_NEGCACHED", "ENTRY_VALIDATED", "ENTRY_BAD_LENGTH", "ENTRY_ABORTED", #ifdef ENTRY_DONT_LOG "ENTRY_DONT_LOG", #endif #ifdef ENTRY_NOT_HTTP_OK "ENTRY_NOT_HTTP_OK", #endif "?1", "?2", "?3", "?4", "?5", "?6", "?7", "?8" }; int main(int argc, char **argv) { FILE *in; int i, j; storeSwapLogData sl; if (argc < 2) { fprintf(stderr, "Usage: %s swap.state\n", argv[0]); exit(1); } in = fopen(argv[1], "rb"); if (!in) { perror("open swap.state"); exit(1); } while (fread(&sl, sizeof(storeSwapLogData), 1, in) == 1) { printf("%s %s\n", swap_log_op_str[sl.op], storeKeyText(sl.key)); printf("\tfile number : %08X\n", sl.swap_file_number); printf("\tfile size : %lu\n", (unsigned long) sl.swap_file_sz); printf("\ttimestamp : %9ld = %s", (long) sl.timestamp, sl.timestamp >= 0 ? ctime(&sl.timestamp) : "unknown\n"); printf("\tlastref : %9ld = %s", (long) sl.lastref, sl.lastref >= 0 ? ctime(&sl.lastref) : "unknown\n"); printf("\texpires : %9ld = %s", (long) sl.expires, sl.expires >= 0 ? ctime(&sl.expires) : "unknown\n"); printf("\tlastmod : %9ld = %s", (long) sl.lastmod, sl.lastmod >= 0 ? ctime(&sl.lastmod) : "unknown\n"); printf("\tref count : %hd\n", sl.refcount); printf("\tflags : %04hX", sl.flags); for (i = 0, j = 1; i < 16; i++, j <<= 1) { if (sl.flags & j) printf(" %s", entry_flag_str[i]); } printf("\n"); } } const char * storeKeyText(const unsigned char *key) { static char buf[4096], *ptr; int i; for (i = 0, ptr = buf; i < MD5_DIGEST_CHARS; i++, ptr += 2) sprintf(ptr, "%02X", *(key + i)); return buf; }