--- cmigemo.orig/src/main.c
+++ cmigemo/src/main.c
@@ -31,14 +31,14 @@
 	if (!quiet)
 	    printf("QUERY: ");
 	/* gets()gĂfgets()ɕύX */
-	if (!fgets(buf, sizeof(buf), stdin))
+	if (!fgets((char *)buf, sizeof(buf), stdin))
 	{
 	    if (!quiet)
 		printf("\n");
 	    break;
 	}
 	/* sNULɒu */
-	if ((ans = strchr(buf, '\n')) != NULL)
+	if ((ans = (unsigned char *)strchr((const char *)buf, '\n')) != NULL)
 	    *ans = '\0';
 
 	ans = migemo_query(p, buf);
@@ -166,26 +166,26 @@
     {
 	if (mode_vim)
 	{
-	    migemo_set_operator(pmigemo, MIGEMO_OPINDEX_OR, "\\|");
-	    migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_IN, "\\%(");
-	    migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_OUT, "\\)");
-	    if (!mode_nonewline)
-		migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEWLINE, "\\_s*");
+      migemo_set_operator(pmigemo, MIGEMO_OPINDEX_OR, (const unsigned char *)"\\|");
+      migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_IN, (const unsigned char *)"\\%(");
+      migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_OUT, (const unsigned char *)"\\)");
+      if (!mode_nonewline)
+        migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEWLINE, (const unsigned char *)"\\_s*");
 	}
 	else if (mode_emacs)
 	{
-	    migemo_set_operator(pmigemo, MIGEMO_OPINDEX_OR, "\\|");
-	    migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_IN, "\\(");
-	    migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_OUT, "\\)");
-	    if (!mode_nonewline)
-		migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEWLINE, "\\s-*");
+      migemo_set_operator(pmigemo, MIGEMO_OPINDEX_OR, (const unsigned char *)"\\|");
+      migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_IN, (const unsigned char *)"\\(");
+      migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEST_OUT, (const unsigned char *)"\\)");
+      if (!mode_nonewline)
+        migemo_set_operator(pmigemo, MIGEMO_OPINDEX_NEWLINE, (const unsigned char *)"\\s-*");
 	}
 #ifndef _PROFILE
 	if (word)
 	{
 	    unsigned char *ans;
 
-	    ans = migemo_query(pmigemo, word);
+	    ans = migemo_query(pmigemo, (const unsigned char *)word);
 	    if (ans)
 		fprintf(fplog, mode_vim ? "%s" : "%s\n", ans);
 	    migemo_release(pmigemo, ans);
--- cmigemo.orig/src/migemo.c
+++ cmigemo/src/migemo.c
@@ -175,7 +175,7 @@
 		dict = NULL;
 		break;
 	}
-	if (dict && romaji_load(dict, dict_file) == 0)
+	if (dict && romaji_load(dict, (unsigned char *)dict_file) == 0)
 	    return dict_id;
 	else
 	    return MIGEMO_DICTID_INVALID;
@@ -252,10 +252,10 @@
 	{
 	    obj->mtree = mtree;
 	    obj->enable = 1;
-	    romaji_load(obj->roma2hira, roma_dict);
-	    romaji_load(obj->hira2kata, kata_dict);
-	    romaji_load(obj->han2zen, h2z_dict);
-	    romaji_load(obj->zen2han, z2h_dict);
+	    romaji_load(obj->roma2hira, (unsigned char *)roma_dict);
+	    romaji_load(obj->hira2kata, (unsigned char *)kata_dict);
+	    romaji_load(obj->han2zen, (unsigned char *)h2z_dict);
+	    romaji_load(obj->zen2han, (unsigned char *)z2h_dict);
 	}
     }
     return obj;
@@ -373,7 +373,7 @@
     int len;
     char *buf;
 
-    if (!(len = my_strlen(query)))
+    if (!(len = my_strlen((const char *)query)))
 	return;
     /*
      * [}̖̃AŴ߂̃obt@mۂB
@@ -386,24 +386,24 @@
     memcpy(buf, query, len);
     memset(&buf[len], 0, max - len);
 
-    if (!strchr(VOWEL_CHARS, buf[len - 1]))
+    if (!strchr((const char *)VOWEL_CHARS, buf[len - 1]))
     {
-	add_dubious_vowels(object, buf, len);
+	add_dubious_vowels(object, (unsigned char *)buf, len);
 	/* mP̒2Am蕶̒OꉹȂ΁c */
-	if (len < 2 || strchr(VOWEL_CHARS, buf[len - 2]))
+	if (len < 2 || strchr((const char *)VOWEL_CHARS, buf[len - 2]))
 	{
 	    if (buf[len - 1] == 'n')
 	    {
 		/* uvĂ݂ */
 		memcpy(&buf[len - 1], "xn", 2);
-		add_roma(object, buf);
+		add_roma(object, (unsigned char *)buf);
 	    }
 	    else
 	    {
 		/* u{̎q}{ꉹ}vĂ݂ */
 		buf[len + 2] = buf[len - 1];
 		memcpy(&buf[len - 1], "xtu", 3);
-		add_dubious_vowels(object, buf, len + 3);
+		add_dubious_vowels(object, (unsigned char *)buf, len + 3);
 	    }
 	}
     }
@@ -463,7 +463,7 @@
     unsigned char* zen;
     unsigned char* han;
     unsigned char* lower;
-    int len = my_strlen(query);
+    int len = my_strlen((const char *)query);
 
     /* queryM͂ɉ */
     object->addword(object, query);
--- cmigemo.orig/src/romaji.c
+++ cmigemo/src/romaji.c
@@ -16,7 +16,7 @@
 #if defined(_MSC_VER) || defined(__GNUC__)
 # define INLINE __inline
 #else
-# define INLINE 
+# define INLINE
 #endif
 
 #ifdef _DEBUG
@@ -205,7 +205,7 @@
     static unsigned char*
 strdup_lower(const unsigned char* string)
 {
-    unsigned char *out = STRDUP(string), *tmp;
+  unsigned char *out = (unsigned char *)STRDUP((const char *)string), *tmp;
 
     if (out)
 	for (tmp = out; *tmp; ++tmp)
@@ -242,7 +242,7 @@
     if (!object || !key || !value)
 	return 1; /* Unexpected error */
 
-    value_length = strlen(value);
+    value_length = strlen((const char *)value);
     if (value_length == 0)
 	return 2; /* Too short value string */
 
@@ -252,20 +252,20 @@
     }
     VERBOSE(object, 10,
 	    printf("romaji_add_table(\"%s\", \"%s\")\n", key, value););
-    (*ref_node)->value = STRDUP(value);
+    (*ref_node)->value = (unsigned char *)STRDUP((const char *)value);
 
     /* uvƁuv͕ۑĂ */
     if (object->fixvalue_xn == NULL && value_length > 0
-	    && !strcmp(key, ROMAJI_FIXKEY_XN))
+	    && !strcmp((const char *)key, ROMAJI_FIXKEY_XN))
     {
 	/*fprintf(stderr, "XN: key=%s, value=%s\n", key, value);*/
-	object->fixvalue_xn = STRDUP(value);
+      object->fixvalue_xn = (unsigned char *)STRDUP((const char *)value);
     }
     if (object->fixvalue_xtu == NULL && value_length > 0
-	    && !strcmp(key, ROMAJI_FIXKEY_XTU))
+	    && !strcmp((const char *)key, ROMAJI_FIXKEY_XTU))
     {
 	/*fprintf(stderr, "XTU: key=%s, value=%s\n", key, value);*/
-	object->fixvalue_xtu = STRDUP(value);
+      object->fixvalue_xtu = (unsigned char *)STRDUP((const char *)value);
     }
 
     return 0;
@@ -277,7 +277,7 @@
     int mode, ch;
     wordbuf_p buf_key;
     wordbuf_p buf_value;
-    
+
     buf_key = wordbuf_open();
     buf_value = wordbuf_open();
     if (!buf_key || !buf_value)
@@ -373,10 +373,10 @@
     if (!object || !filename)
 	return -1;
 #if 1
-    charset = charset_detect_file(filename);
+    charset = charset_detect_file((const char *)filename);
     charset_getproc(charset, (CHARSET_PROC_CHAR2INT*)&object->char2int, NULL);
 #endif
-    if ((fp = fopen(filename, "rt")) != NULL)
+    if ((fp = fopen((const char *)filename, "rt")) != NULL)
     {
 	int result = result = romaji_load_stub(object, fp);
 	fclose(fp);
@@ -451,7 +451,7 @@
 		wordbuf_cat(buf, node->value);
 	    }
 	}
-	answer = STRDUP(WORDBUF_GET(buf));
+	answer = (unsigned char *)STRDUP((const char *)WORDBUF_GET(buf));
     }
     if (ppstop)
 	*ppstop = (stop >= 0) ? answer + stop : NULL;
--- cmigemo.orig/src/rxgen.c
+++ cmigemo/src/rxgen.c
@@ -153,12 +153,12 @@
     {
 	rxgen_setproc_char2int(object, NULL);
 	rxgen_setproc_int2char(object, NULL);
-	strcpy(object->op_or,		RXGEN_OP_OR);
-	strcpy(object->op_nest_in,	RXGEN_OP_NEST_IN);
-	strcpy(object->op_nest_out,	RXGEN_OP_NEST_OUT);
-	strcpy(object->op_select_in,	RXGEN_OP_SELECT_IN);
-	strcpy(object->op_select_out,	RXGEN_OP_SELECT_OUT);
-	strcpy(object->op_newline,	RXGEN_OP_NEWLINE);
+	strcpy((char *)object->op_or,		RXGEN_OP_OR);
+	strcpy((char *)object->op_nest_in,	RXGEN_OP_NEST_IN);
+	strcpy((char *)object->op_nest_out,	RXGEN_OP_NEST_OUT);
+	strcpy((char *)object->op_select_in,	RXGEN_OP_SELECT_IN);
+	strcpy((char *)object->op_select_out,	RXGEN_OP_SELECT_OUT);
+	strcpy((char *)object->op_newline,	RXGEN_OP_NEWLINE);
     }
     return object;
 }
@@ -319,7 +319,7 @@
     {
 	if (object->node)
 	    rxgen_generate_stub(object, buf, object->node);
-	answer = STRDUP(WORDBUF_GET(buf));
+	answer = (unsigned char *)STRDUP((const char *)WORDBUF_GET(buf));
 	wordbuf_close(buf);
     }
     return answer;
@@ -380,11 +380,12 @@
 
     if (!object)
 	return 1; /* Invalid object */
-    if (strlen(op) >= RXGEN_OP_MAXLEN)
+    if (strlen((const char *)op) >= RXGEN_OP_MAXLEN)
 	return 2; /* Too long operator */
     if (!(dest = rxgen_get_operator_stub(object, index)))
 	return 3; /* No such an operator */
-    strcpy(dest, op);
+    strcpy((char *)dest, (const char *)op);
+
 
     return 0;
 }
--- cmigemo.orig/src/wordbuf.c
+++ cmigemo/src/wordbuf.c
@@ -115,8 +115,8 @@
 
     if (sz != NULL)
     {
-        size_t l = strlen(sz);
-        len = l < INT_MAX ? (int)l : INT_MAX;
+      size_t l = strlen((const char *)sz);
+      len = l < INT_MAX ? (int)l : INT_MAX;
     }
 
     if (len > 0)
--- cmigemo.orig/src/wordlist.c
+++ cmigemo/src/wordlist.c
@@ -24,7 +24,7 @@
 
 	if ((p = (wordlist_p)malloc(sizeof(*p) + len + 1)) != NULL)
 	{
-	    p->ptr  = (char*)(p + 1);
+	    p->ptr  = (unsigned char *)(p + 1);
 	    p->next = NULL;
 	    /*
 	     * قstrdup()ƓȎBP̕ۑɕKvȑm肽
@@ -48,7 +48,7 @@
     if (ptr != NULL)
     {
         size_t len;
-        len = strlen(ptr);
+        len = strlen((const char *)ptr);
         p = wordlist_open_len(ptr, (len < INT_MAX ? (int)len : INT_MAX));
     }
     return p;
