libscl

libscl http://sourceforge.net/projects/libscl/C言語用のコンテナライブラリ。
ユーザガイドはよく書けているし、コードもおおむね読みやすい。

Linux amd64 でビルドした時に出たエラーと、sf.net で指摘されているバグを直す。

diff -Naur libscl-1.0.2.orig/src/Makefile libscl-1.0.2/src/Makefile
--- libscl-1.0.2.orig/src/Makefile	2006-06-10 12:30:05.000000000 +0900
+++ libscl-1.0.2/src/Makefile	2010-03-31 17:35:43.000000000 +0900
@@ -292,7 +292,7 @@
 	@${ECHO} "#define ${NAMEUC}_${CONFIGN} 1"                  >> ${CONFIG}
 	@${ECHO} ""                                                >> ${CONFIG}
 	@${ECHO} "static const char* const __COPYRIGHT__ = \"Copyright (C) 2004-2006 Douglas Jerome <douglas@backstep.org>\";" >> ${CONFIG}
-	@${ECHO} "static const char* const __TIMESTAMP__ = __TIME__ \", \" __DATE__;"                                          >> ${CONFIG}
+	@${ECHO} "static const char* const LIBSCL__TIMESTAMP__ = __TIME__ \", \" __DATE__;"                                          >> ${CONFIG}
 	@${ECHO} "static const char* const __REVISION__  = \"vers. ${VERSION}\";"                                              >> ${CONFIG}
 	@${ECHO} ""                                                >> ${CONFIG}
 	@${ECHO} "#define  CLIENT_CFLAGS   \"${CLIENT_CFLAGS}\""   >> ${CONFIG}
diff -Naur libscl-1.0.2.orig/src/SCL.h libscl-1.0.2/src/SCL.h
--- libscl-1.0.2.orig/src/SCL.h	2006-06-08 12:34:53.000000000 +0900
+++ libscl-1.0.2/src/SCL.h	2010-03-31 17:40:01.000000000 +0900
@@ -169,7 +169,7 @@
  * This is a compile-time check for NULL being equal to 0.  If NULL is non-zero
  * then this next line should create a compile error.
  */
-typedef int SCL_CHECK_NULL[1-(((int)NULL)*2)];
+/* typedef int SCL_CHECK_NULL[1-(((int)NULL)*2)]; */
 
 
 /* ************************************************************************* */
diff -Naur libscl-1.0.2.orig/src/config.c libscl-1.0.2/src/config.c
--- libscl-1.0.2.orig/src/config.c	2006-06-07 15:10:50.000000000 +0900
+++ libscl-1.0.2/src/config.c	2010-03-31 17:35:30.000000000 +0900
@@ -196,7 +196,7 @@
    }
 
 const char* (scl_conf_version) (void)     { return __REVISION__;    }
-const char* (scl_conf_date) (void)        { return __TIMESTAMP__;   }
+const char* (scl_conf_date) (void)        { return LIBSCL__TIMESTAMP__;   }
 const char* (scl_conf_cflags) (void)      { return CLIENT_CFLAGS;   }
 const char* (scl_conf_shared_libs) (void) { return CLIENT_SHARLIBS; }
 const char* (scl_conf_static_libs) (void) { return CLIENT_STATLIBS; }
diff -Naur libscl-1.0.2.orig/src/hash.c libscl-1.0.2/src/hash.c
--- libscl-1.0.2.orig/src/hash.c	2006-06-07 15:10:50.000000000 +0900
+++ libscl-1.0.2/src/hash.c	2010-03-31 17:43:17.000000000 +0900
@@ -202,7 +202,7 @@
 
 static uint32_t md (const char* a_keyptr, size_t a_keylen)
    {
-   register const unsigned char* p = a_keyptr;
+     register const unsigned char* p = (const unsigned char*)a_keyptr;
    register size_t len = a_keylen;
    register uint32_t v = 0;
    register uint32_t g;
diff -Naur libscl-1.0.2.orig/src/vector.c libscl-1.0.2/src/vector.c
--- libscl-1.0.2.orig/src/vector.c	2006-06-07 15:10:50.000000000 +0900
+++ libscl-1.0.2/src/vector.c	2010-03-31 17:51:25.000000000 +0900
@@ -355,7 +355,7 @@
 
 void* (vector_back) (SCL_vector_t a_vector)
    {
-   return (void*)a_vector->array[a_vector->count].data;
+   return (void*)a_vector->array[a_vector->count -1].data;
    }