tor 2008-04-17 klockan 19:55 +0530 skrev selvi nandu:
> Hi All,
> 
> I am trying to use purge to view and delete the objects from the
> diskcache. I had taken the tar file from
> http://www.wa.apana.org.au/~dean/squidpurge/. I am facing some
> problems when i try to use the same in itanium 64 (ia64) architecture.
> I am not able to build successfully.
> 
> When i try to download the developer version (with revision control
> tree and all sources checked in) in
> http://www.wa.apana.org.au/~dean/sources/purge-20040201-all.tar.gz ,
> this link no longer exists.

There is an archived copy at http://www.squid-cache.org/contrib/

I also have a small patch somewhere... digging... attached.

Regards
Henrik
diff -ru purge/Makefile purge-fixed/Makefile
--- purge/Makefile	2000-09-21 15:05:31.000000000 +0200
+++ purge-fixed/Makefile	2006-10-16 23:26:59.000000000 +0200
@@ -108,10 +108,10 @@
 LIBCVER = $(shell /bin/ls /lib/libc.so.? | \
 	awk -F'.' '{ if (m<$$3) m=$$3;} END { print m} ')
 ifeq (6,${LIBCVER})
-SOCKLEN	= size_t
+SOCKLEN	= socklen_t
 endif
 CXXFLAGS += -DHAS_PSIGNAL -DLIBCVERSION=$(LIBCVER) -pipe # -Wall -pedantic
-OPT_NORM = -march=pentium -O2
+OPT_NORM = -O2
 # if your g++ balks (e.g. SuSE still uses 2.7.2.3)
 #CXXFLAGS += -DHAS_PSIGNAL -DLIBCVERSION=$(LIBCVER) -m486
 LD	= $(CC)
diff -ru purge/purge.cc purge-fixed/purge.cc
--- purge/purge.cc	2000-09-21 15:05:31.000000000 +0200
+++ purge-fixed/purge.cc	2006-10-16 23:28:02.000000000 +0200
@@ -289,6 +289,13 @@
     sprintf( timeb, "%08x %08x %08x %08x %04x %5hu ",
 	     temp.timestamp, temp.lastref,
 	     temp.expires, temp.lastmod, temp.flags, temp.refcount );
+  } else if ( meta && (findings = meta->search( STORE_META_STD_LFS )) ) {
+    StoreMetaStdLFS temp;
+    // make data aligned, avoid SIGBUS on RISC machines (ARGH!)
+    memcpy( &temp, findings->data, sizeof(StoreMetaStd) );
+    sprintf( timeb, "%08x %08x %08x %08x %04x %5hu ",
+	     temp.timestamp, temp.lastref,
+	     temp.expires, temp.lastmod, temp.flags, temp.refcount );
   } else {
     sprintf( timeb, "%08x %08x %08x %08x %04x %5hu ", -1, -1, -1, -1, 0, 0 );
   }
@@ -417,7 +424,7 @@
       // the URL as part of the list. First, gobble all meta data.
       unsigned int offset = addon;
       SquidMetaList meta;
-      while ( offset < datastart && *(offset+linebuffer) != STORE_META_END ) {
+      while ( offset + addon <= datastart ) {
 	unsigned int size = 0;
 	memcpy( &size, linebuffer+offset+sizeof(char), sizeof(unsigned int) );
 	meta.append( SquidMetaType(*(linebuffer+offset)),
diff -ru purge/squid-tlv.cc purge-fixed/squid-tlv.cc
--- purge/squid-tlv.cc	2000-09-21 15:05:31.000000000 +0200
+++ purge-fixed/squid-tlv.cc	2006-05-20 14:45:45.000000000 +0200
@@ -49,13 +49,8 @@
 SquidTLV::SquidTLV( SquidMetaType _type, size_t _size, void* _data )
   :next(0),size(_size)
 {
-  if ( size ) {
-    type = _type;
-    data = (char*) _data;
-  } else {
-    type = STORE_META_END;
-    data = 0;
-  }
+  type = _type;
+  data = (char*) _data;
 }
 
 SquidMetaList::SquidMetaList()
diff -ru purge/squid-tlv.hh purge-fixed/squid-tlv.hh
--- purge/squid-tlv.hh	2000-09-21 15:05:31.000000000 +0200
+++ purge-fixed/squid-tlv.hh	2006-05-20 14:51:49.000000000 +0200
@@ -65,7 +65,9 @@
   STORE_META_STD,		// standard metadata
   STORE_META_HITMETERING,	// reserved for hit metering
   STORE_META_VALID,
-  STORE_META_END
+  STORE_META_VARY_HEADERS,	// Stores Vary request headers
+  STORE_META_STD_LFS,		// standard metadata in lfs format
+  STORE_META_OBJSIZE,		// object size, if its known
 };
 
 // taken from Squid-2.x
@@ -79,6 +81,16 @@
   u_short flags;
 };
 
+struct StoreMetaStdLFS {
+  time_t  timestamp;
+  time_t  lastref;
+  time_t  expires;
+  time_t  lastmod;
+  uint64_t  swap_file_sz;
+  u_short refcount;
+  u_short flags;
+};
+
 struct SquidTLV {
   // create a shallow reference pointing into the "buffer" variable
   // do not copy --> saves times, saves memory.

Reply via email to