susumu.yata
null+****@clear*****
Mon Sep 7 15:08:24 JST 2015
susumu.yata 2015-09-07 15:08:24 +0900 (Mon, 07 Sep 2015) New Revision: 20435f75a368d48b78b5a799d0b3896776c03621 https://github.com/groonga/groonga/commit/20435f75a368d48b78b5a799d0b3896776c03621 Message: grn_ts: update grn_ts_expr_push() to support Text GitHub: #392 Modified files: lib/ts.c Modified: lib/ts.c (+43 -0) =================================================================== --- lib/ts.c 2015-09-07 14:45:02 +0900 (56666c0) +++ lib/ts.c 2015-09-07 15:08:24 +0900 (8f1b0f3) @@ -2205,6 +2205,49 @@ grn_ts_expr_push(grn_ctx *ctx, grn_ts_expr *expr, } GRN_FREE(buf); return rc; + } else if (str[0] == '"') { + char *buf; + size_t i, len, end; + grn_rc rc; + if (str[str_size - 1] != '"') { + return GRN_INVALID_ARGUMENT; + } + if (str_size == 2) { + return grn_ts_expr_push_text(ctx, expr, grn_ts_text_zero()); + } + buf = GRN_MALLOCN(char, str_size - 2); + if (!buf) { + return GRN_NO_MEMORY_AVAILABLE; + } + rc = GRN_SUCCESS; + len = 0; + end = str_size - 1; + for (i = 1; (rc == GRN_SUCCESS) && (i < end); i++) { + switch (str[i]) { + case '\\': { + if (i == (end - 1)) { + rc = GRN_INVALID_ARGUMENT; + break; + } + buf[len++] = str[++i]; + break; + } + case '"': { + rc = GRN_INVALID_ARGUMENT; + break; + } + default: { + buf[len++] = str[i]; + break; + } + } + } + if (rc == GRN_SUCCESS) { + grn_ts_text value = { buf, len }; + rc = grn_ts_expr_push_text(ctx, expr, value); + } + GRN_FREE(buf); + return rc; } else { grn_rc rc; grn_obj *column = grn_obj_column(ctx, expr->curr_table, str, str_size); -------------- next part -------------- HTML����������������������������... ダウンロード