[Groonga-commit] groonga/groonga [master] call print_return_code() from recvput().

Back to archive index

null+****@clear***** null+****@clear*****
2010年 7月 12日 (月) 18:45:09 JST


Daijiro MORI	2010-07-12 09:45:09 +0000 (Mon, 12 Jul 2010)

  New Revision: 888d84cc38c9e25d4dca4dceb4ffbc9315efac8e

  Log:
    call print_return_code() from recvput().

  Modified files:
    lib/ctx.c
    src/groonga.c

  Modified: lib/ctx.c (+1 -1)
===================================================================
--- lib/ctx.c    2010-07-12 08:28:25 +0000 (8fc7d58)
+++ lib/ctx.c    2010-07-12 09:45:09 +0000 (3ebb6e7)
@@ -1064,7 +1064,7 @@ grn_ctx_recv(grn_ctx *ctx, char **str, unsigned int *str_len, int *flags)
           *flags = (header.flags & GRN_CTX_TAIL) ? 0 : GRN_CTX_MORE;
         }
         ctx->impl->output_type = header.qtype;
-        ctx->impl->rc = header.status;
+        ctx->rc = header.status;
       }
       goto exit;
     } else {

  Modified: src/groonga.c (+15 -2)
===================================================================
--- src/groonga.c    2010-07-12 08:28:25 +0000 (3bca79a)
+++ src/groonga.c    2010-07-12 09:45:09 +0000 (5a9dfa9)
@@ -401,14 +401,27 @@ recvput(grn_ctx *ctx)
   unsigned int str_len;
   do {
     grn_ctx_recv(ctx, &str, &str_len, &flags);
+    /*
     if (ctx->rc) {
       fprintf(stderr, "grn_ctx_recv failed\n");
       return -1;
     }
+    */
     if (str_len) {
-      fwrite(str, 1, str_len, stdout);
-      putchar('\n');
+      grn_obj head, body, foot;
+      GRN_TEXT_INIT(&head, 0);
+      GRN_TEXT_INIT(&body, GRN_OBJ_DO_SHALLOW_COPY);
+      GRN_TEXT_INIT(&foot, 0);
+      GRN_TEXT_SET(ctx, &body, str, str_len);
+      print_return_code(ctx, ctx->rc, &head, &body, &foot);
+      fwrite(GRN_TEXT_VALUE(&head), 1, GRN_TEXT_LEN(&head), stdout);
+      fwrite(GRN_TEXT_VALUE(&body), 1, GRN_TEXT_LEN(&body), stdout);
+      fwrite(GRN_TEXT_VALUE(&foot), 1, GRN_TEXT_LEN(&foot), stdout);
+      fputc('\n', stdout);
       fflush(stdout);
+      GRN_OBJ_FIN(ctx, &head);
+      GRN_OBJ_FIN(ctx, &body);
+      GRN_OBJ_FIN(ctx, &foot);
     }
   } while ((flags & GRN_CTX_MORE));
   return 0;




Groonga-commit メーリングリストの案内
Back to archive index