[Groonga-commit] groonga/groonga at a62b954 [master] mecab: add workaround for mecab_strerror(NULL) on MeCab 0.993

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Jan 22 20:24:45 JST 2015


Kouhei Sutou	2015-01-22 20:24:45 +0900 (Thu, 22 Jan 2015)

  New Revision: a62b9547ccaca105056ac6be316b3be30b5ffe80
  https://github.com/groonga/groonga/commit/a62b9547ccaca105056ac6be316b3be30b5ffe80

  Message:
    mecab: add workaround for mecab_strerror(NULL) on MeCab 0.993
    
    Reported by Shuhei Tanuma. Thanks!!!

  Modified files:
    plugins/tokenizers/mecab.c

  Modified: plugins/tokenizers/mecab.c (+19 -3)
===================================================================
--- plugins/tokenizers/mecab.c    2015-01-22 11:06:53 +0900 (0edd9ac)
+++ plugins/tokenizers/mecab.c    2015-01-22 20:24:45 +0900 (49e4b5c)
@@ -1,5 +1,5 @@
 /* -*- c-basic-offset: 2 -*- */
-/* Copyright(C) 2009-2012 Brazil
+/* Copyright(C) 2009-2015 Brazil
 
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
@@ -22,6 +22,7 @@
 
 #include <mecab.h>
 
+#include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
 
@@ -38,6 +39,21 @@ typedef struct {
   grn_tokenizer_token token;
 } grn_mecab_tokenizer;
 
+static const char *
+mecab_global_error_message(void)
+{
+  double version;
+
+  version = atof(mecab_version());
+  /* MeCab <= 0.993 doesn't support mecab_strerror(NULL). */
+  if (version <= 0.993) {
+    return "Unknown";
+  }
+
+  return mecab_strerror(NULL);
+}
+
+
 static grn_encoding
 translate_mecab_charset_to_grn_encoding(const char *charset)
 {
@@ -96,7 +112,7 @@ mecab_init(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
         GRN_PLUGIN_ERROR(ctx, GRN_TOKENIZER_ERROR,
                          "[tokenizer][mecab] "
                          "mecab_new2() failed on mecab_init(): %s",
-                         mecab_strerror(NULL));
+                         mecab_global_error_message());
       } else {
         sole_mecab_encoding = get_mecab_encoding(sole_mecab);
       }
@@ -273,7 +289,7 @@ check_mecab_dictionary_encoding(grn_ctx *ctx)
     GRN_PLUGIN_ERROR(ctx, GRN_TOKENIZER_ERROR,
                      "[tokenizer][mecab] "
                      "mecab_new2 failed in check_mecab_dictionary_encoding: %s",
-                     mecab_strerror(NULL));
+                     mecab_global_error_message());
   }
 #endif
 }
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index