From 39c23506c73293228effe1ee73d590ea101c154f Mon Sep 17 00:00:00 2001
From: koron <none@none>
Date: Sat, 19 Sep 2009 10:51:43 +0000
Subject: [PATCH 07/36] =?UTF-8?q?=20=20*=20VisualC=209.0=20(VisualStudio?=
 =?UTF-8?q?=202009)=20=E3=81=A7=E3=82=B3=E3=83=B3=E3=83=91=E3=82=A4?=
 =?UTF-8?q?=E3=83=AB=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?=
 =?UTF-8?q?=E4=BF=AE=E6=AD=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

--HG--
extra : convert_revision : svn%3A1dcf550d-b01c-dc11-aeac-0020ed62593b/trunk%40175
---
 compile/Make_mvc.mak | 23 ++++++++++++++++++++---
 doc/README_j.txt     |  3 ++-
 doc/TODO_j.txt       | 12 ++++++------
 src/romaji.c         | 16 +++++++++++-----
 src/rxgen.c          | 10 ++++++++--
 5 files changed, 47 insertions(+), 17 deletions(-)

diff --git a/compile/Make_mvc.mak b/compile/Make_mvc.mak
index 0cbf3b7..dbdb45f 100644
--- a/compile/Make_mvc.mak
+++ b/compile/Make_mvc.mak
@@ -18,12 +18,29 @@ libmigemo_DSO = $(outdir)migemo.dll
 libmigemo_SRC = $(SRC)
 libmigemo_OBJ = $(OBJ)
 
+!if "$(_NMAKE_VER)" == "9.00.20706.01"
+MSVC_VER = 9.0
+!endif
+!if "$(_NMAKE_VER)" == "9.00.21022.08"
+MSVC_VER = 9.0
+!endif
+!if "$(_NMAKE_VER)" == "9.00.30729.01"
+MSVC_VER = 9.0
+!endif
+
+!if "$(MSVC_VER)" == "9.0"
+DEFINES = $(DEFINES) -D_CRT_SECURE_NO_WARNINGS
+CFLAGS_OPTIMIZE =
+!else
+CFLAGS_OPTIMIZE = -G6
+!endif
+
 !ifndef DEBUG
-DEFINES = -DNDEBUG
-CFLAGS	= -G6 -W3 -O2 -MT
+DEFINES = $(DEFINES) -DNDEBUG
+CFLAGS	= $(CFLAGS_OPTIMIZE) -W3 -O2 -MT
 LDFLAGS =
 !else
-DEFINES = -D_DEBUG
+DEFINES = $(DEFINES) -D_DEBUG
 CFLAGS	= -Zi -W3 -Od -MTd
 LDFLAGS = -DEBUG
 !endif
diff --git a/doc/README_j.txt b/doc/README_j.txt
index dc978a5..cb53153 100644
--- a/doc/README_j.txt
+++ b/doc/README_j.txt
@@ -2,7 +2,7 @@ C/Migemo
                                                             Since: 15-Aug-2001
                                                                 Version: 1.2.0
                                                   Author: MURAOKA Taro (KoRoN)
-                                                     Last Change: 17-Jun-2007.
+                                                     Last Change: 19-Sep-2009.
 
 説明
   C/MigemoはMigemo(Ruby/Migemo)をC言語で実装したものです。C/Migemoライブラリを
@@ -339,6 +339,7 @@ C/Migemo
 
 更新箇所 {{{1
   ● (1.3 開発版)
+    VS2009でのコンパイルに対応
     ローマ字が子音で終わる際に「xtu{子音}{母音}」を加えるように変更
     configureの--prefixが機能していなかった問題の修正
     生queryでの辞書検索をignore caseに
diff --git a/doc/TODO_j.txt b/doc/TODO_j.txt
index 023eda1..ff06b12 100644
--- a/doc/TODO_j.txt
+++ b/doc/TODO_j.txt
@@ -1,21 +1,21 @@
- vim:set ts=8 sts=4 sw=4 tw=0 ft=memo:
- Last Change: 11-Feb-2006.
+ vim:set ts=8 sts=4 sw=4 tw=0 et ft=memo:
+ Last Change: 19-Sep-2009.
 
 TODO
     COM/XPCOMのインターフェースを定義し、グルーコードを作成
     エスケープする文字をカスタマイズ可能にする
-	もしくは各種言語用の出力を用意する
+        もしくは各種言語用の出力を用意する
     ライセンス修正
     辞書を配布物に含める
-	辞書を自作
+        辞書を自作
     辞書ファイル作成作業をPerl非依存にする
     テストsuiteを作成する
     ドキュメント(Doxygen)を充実
     辞書ファイル毎にmtreeを作成し、ランタイムで切り離せるようにする
     ローマ字変換に「ステート残り」を導入
     辞書のバイナリ化
-	バイナリ辞書の読み込み
-	バイナリ辞書の書き込み
+        バイナリ辞書の読み込み
+        バイナリ辞書の書き込み
     辞書へ単語毎の追加
     マッチエンジン(非正規表現)を実装
 
diff --git a/src/romaji.c b/src/romaji.c
index 10df86c..20756b6 100644
--- a/src/romaji.c
+++ b/src/romaji.c
@@ -25,6 +25,12 @@
 # define VERBOSE(o,l,b)
 #endif
 
+#if defined(_MSC_VER)
+# define STRDUP _strdup
+#else
+# define STRDUP strdup
+#endif
+
 #define ROMAJI_FIXKEY_N 'n'
 #define ROMAJI_FIXKEY_XN "xn"
 #define ROMAJI_FIXKEY_XTU "xtu"
@@ -199,7 +205,7 @@ struct _romaji
     static unsigned char*
 strdup_lower(const unsigned char* string)
 {
-    unsigned char *out = strdup(string), *tmp;
+    unsigned char *out = STRDUP(string), *tmp;
 
     if (out)
 	for (tmp = out; *tmp; ++tmp)
@@ -246,20 +252,20 @@ romaji_add_table(romaji* object, const unsigned char* key,
     }
     VERBOSE(object, 10,
 	    printf("romaji_add_table(\"%s\", \"%s\")\n", key, value););
-    (*ref_node)->value = strdup(value);
+    (*ref_node)->value = STRDUP(value);
 
     /* 「ん」と「っ」は保存しておく */
     if (object->fixvalue_xn == NULL && value_length > 0
 	    && !strcmp(key, ROMAJI_FIXKEY_XN))
     {
 	/*fprintf(stderr, "XN: key=%s, value=%s\n", key, value);*/
-	object->fixvalue_xn = strdup(value);
+	object->fixvalue_xn = STRDUP(value);
     }
     if (object->fixvalue_xtu == NULL && value_length > 0
 	    && !strcmp(key, ROMAJI_FIXKEY_XTU))
     {
 	/*fprintf(stderr, "XTU: key=%s, value=%s\n", key, value);*/
-	object->fixvalue_xtu = strdup(value);
+	object->fixvalue_xtu = STRDUP(value);
     }
 
     return 0;
@@ -445,7 +451,7 @@ romaji_convert2(romaji* object, const unsigned char* string,
 		wordbuf_cat(buf, node->value);
 	    }
 	}
-	answer = strdup(WORDBUF_GET(buf));
+	answer = STRDUP(WORDBUF_GET(buf));
     }
     if (ppstop)
 	*ppstop = (stop >= 0) ? answer + stop : NULL;
diff --git a/src/rxgen.c b/src/rxgen.c
index 52e7535..27bde73 100644
--- a/src/rxgen.c
+++ b/src/rxgen.c
@@ -3,7 +3,7 @@
  * rxgen.c - regular expression generator
  *
  * Written By:  MURAOKA Taro <koron@tka.att.ne.jp>
- * Last Change: 20-Jun-2004.
+ * Last Change: 19-Sep-2009.
  */
 
 #include <stdio.h>
@@ -13,6 +13,12 @@
 #include "wordbuf.h"
 #include "rxgen.h"
 
+#if defined(_MSC_VER)
+# define STRDUP _strdup
+#else
+# define STRDUP strdup
+#endif
+
 #define RXGEN_ENC_SJISTINY
 //#define RXGEN_OP_VIM
 
@@ -313,7 +319,7 @@ rxgen_generate(rxgen* object)
     {
 	if (object->node)
 	    rxgen_generate_stub(object, buf, object->node);
-	answer = strdup(WORDBUF_GET(buf));
+	answer = STRDUP(WORDBUF_GET(buf));
 	wordbuf_close(buf);
     }
     return answer;
-- 
2.39.2

