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; }