bzlibは、以下の場所にあります。
http://www.bzip.org/
右上の方のDownloadsより、
http://www.bzip.org/downloads.html
Here is the 1.0.6 source tarball , which includes full documentation.
と書かれている所から、以下のファイルを適当なディレクトリに保存します。
bzip2-1.0.6.tar.gz
MSYSで、ファイルを保存したディレクトリに移動し、
$ tar xzf bzip2-1.0.6.tar.gz
$ cd bzip2-1.0.6
インストールの時にエラーで止まってしまうので、Makefileにパッチ
bzip2-makefile.diff
を適用します。
$ patch -p1 < bzip2-makefile.diff
パッチを適用した後、
$ make
$ make PREFIX=/mingw install
以上で終了です。
【更新履歴】を見る
2009年08月05日
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/31078679
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/31078679
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
bzip2recover.cについては、セキュリティ的に大切な修正のような気が^^;
diff -ur bzip2-1.0.6/bzip2.c new.bzip2-1.0.6/bzip2.c
--- bzip2-1.0.6/bzip2.c 2010-09-11 08:04:53 +0900
+++ new.bzip2-1.0.6/bzip2.c 2014-06-24 19:05:10 +0900
@@ -128,7 +128,7 @@
#if BZ_LCCWIN32
# include <io.h>
# include <fcntl.h>
-# include <sys\stat.h>
+# include <sys/stat.h>
# define NORETURN /**/
# define PATH_SEP '\\'
diff -ur bzip2-1.0.6/bzip2recover.c new.bzip2-1.0.6/bzip2recover.c
--- bzip2-1.0.6/bzip2recover.c 2010-09-11 08:18:40 +0900
+++ new.bzip2-1.0.6/bzip2recover.c 2014-06-24 19:05:10 +0900
@@ -309,7 +309,8 @@
UInt32 buffHi, buffLo, blockCRC;
Char* p;
- strcpy ( progName, argv[0] );
+ strncpy ( progName, argv[0], BZ_MAX_FILENAME-1);
+ progName[BZ_MAX_FILENAME-1]='\0';
inFileName[0] = outFileName[0] = 0;
fprintf ( stderr,
diff -ur bzip2-1.0.6/bzlib.h new.bzip2-1.0.6/bzlib.h
--- bzip2-1.0.6/bzlib.h 2010-09-11 08:08:42 +0900
+++ new.bzip2-1.0.6/bzlib.h 2014-06-24 19:05:10 +0900
@@ -81,19 +81,43 @@
/* windows.h define small to char */
# undef small
# endif
-# ifdef BZ_EXPORT
-# define BZ_API(func) WINAPI func
-# define BZ_EXTERN extern
+
+# include <stdio.h>
+# include <io.h>
+# include <sys/utime.h>
+# define fdopen _fdopen
+# define isatty _isatty
+# define setmode _setmode
+# define utime _utime
+# endif
+
+#ifndef __GNUC__
+# define __DLL_IMPORT__ __declspec(dllimport)
+# define __DLL_EXPORT__ __declspec(dllexport)
# else
- /* import windows dll dynamically */
-# define BZ_API(func) (WINAPI * func)
-# define BZ_EXTERN
+# define __DLL_IMPORT__ __attribute__((dllimport)) extern
+# define __DLL_EXPORT__ __attribute__((dllexport)) extern
# endif
-#else
-# define BZ_API(func) func
-# define BZ_EXTERN extern
+
+#if (defined __WIN32__) || (defined _WIN32)
+# if defined BUILD_BZIP2_DLL || defined BZ_EXPORT
+# define BZIP2_DLL_IMPEXP __DLL_EXPORT__
+# elif defined(BZIP2_STATIC)
+# define BZIP2_DLL_IMPEXP
+# elif defined (USE_BZIP2_DLL) || defined BZ_IMPORT
+# define BZIP2_DLL_IMPEXP __DLL_IMPORT__
+# elif defined (USE_BZIP2_STATIC)
+# define BZIP2_DLL_IMPEXP
+# else /* assume USE_BZIP2_DLL */
+# define BZIP2_DLL_IMPEXP __DLL_IMPORT__
+#endif
+#else /* __WIN32__ */
+# define BZIP2_DLL_IMPEXP
#endif
+#define BZ_API(func) func
+#define BZ_EXTERN BZIP2_DLL_IMPEXP
+
/*-- Core (low-level) library functions --*/
コメントありがとうございます。
ソースを見ると、BZ_MAX_FILENAMEは2000になっているので、ファイル名の長さが2000文字を超えないようにしているんでしょうか?
とりあえず、bzip2recoverは単体プログラムで、使用しない限り問題ないと思いますので、様子を見ることにします。
あと、パッチやログなどはコメントが長くなってしまうため、pastebinなどを使って、リンクを張っていただけると助かります。
情報ありがとうございました。