From 10a38363665d4918877a24a88a6c007cde9b119c Mon Sep 17 00:00:00 2001 From: Kouhei Sutou Date: Fri, 3 Feb 2017 11:03:13 +0900 Subject: [PATCH] Export grn_inspect_limited() --- include/groonga/util.h | 5 ++++- lib/db.c | 4 ++-- lib/util.c | 24 ++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/include/groonga/util.h b/include/groonga/util.h index 52997eaba1..9195df1ea3 100644 --- a/include/groonga/util.h +++ b/include/groonga/util.h @@ -1,5 +1,5 @@ /* - Copyright(C) 2010-2016 Brazil + Copyright(C) 2010-2017 Brazil This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -25,6 +25,9 @@ extern "C" { GRN_API grn_obj *grn_inspect(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj); GRN_API grn_obj *grn_inspect_indented(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj, const char *indent); +GRN_API grn_obj *grn_inspect_limited(grn_ctx *ctx, + grn_obj *buffer, + grn_obj *obj); GRN_API grn_obj *grn_inspect_name(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj); GRN_API grn_obj *grn_inspect_encoding(grn_ctx *ctx, grn_obj *buffer, grn_encoding encoding); GRN_API grn_obj *grn_inspect_type(grn_ctx *ctx, grn_obj *buffer, unsigned char type); diff --git a/lib/db.c b/lib/db.c index a0a15bc658..2a88714444 100644 --- a/lib/db.c +++ b/lib/db.c @@ -1,6 +1,6 @@ /* -*- c-basic-offset: 2 -*- */ /* - Copyright(C) 2009-2016 Brazil + Copyright(C) 2009-2017 Brazil This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -11049,7 +11049,7 @@ grn_obj_reinit_for(grn_ctx *ctx, grn_obj *obj, grn_obj *domain_obj) if (!GRN_DB_OBJP(domain_obj) && domain_obj->header.type != GRN_ACCESSOR) { grn_obj inspected; GRN_TEXT_INIT(&inspected, 0); - limited_size_inspect(ctx, &inspected, domain_obj); + grn_inspect_limited(ctx, &inspected, domain_obj); ERR(GRN_INVALID_ARGUMENT, "[reinit] invalid domain object: <%.*s>", (int)GRN_TEXT_LEN(&inspected), GRN_TEXT_VALUE(&inspected)); diff --git a/lib/util.c b/lib/util.c index 3cc367b529..7b4b5eadf8 100644 --- a/lib/util.c +++ b/lib/util.c @@ -1449,6 +1449,30 @@ grn_inspect_indented(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj, return buffer; } +grn_obj * +grn_inspect_limited(grn_ctx *ctx, grn_obj *buffer, grn_obj *obj) +{ + grn_obj sub_buffer; + unsigned int max_size = GRN_CTX_MSGSIZE / 2; + + GRN_TEXT_INIT(&sub_buffer, 0); + grn_inspect(ctx, &sub_buffer, obj); + if (GRN_TEXT_LEN(&sub_buffer) > max_size) { + GRN_TEXT_PUT(ctx, buffer, GRN_TEXT_VALUE(&sub_buffer), max_size); + GRN_TEXT_PUTS(ctx, buffer, "...("); + grn_text_lltoa(ctx, buffer, GRN_TEXT_LEN(&sub_buffer)); + GRN_TEXT_PUTS(ctx, buffer, ")"); + } else { + GRN_TEXT_PUT(ctx, + buffer, + GRN_TEXT_VALUE(&sub_buffer), + GRN_TEXT_LEN(&sub_buffer)); + } + GRN_OBJ_FIN(ctx, &sub_buffer); + + return buffer; +} + void grn_p(grn_ctx *ctx, grn_obj *obj) {