[Groonga-commit] groonga/groonga [master] Make some procs return true/false depends on ctx->rc.

Back to archive index

null+****@clear***** null+****@clear*****
2010年 6月 30日 (水) 17:17:10 JST


Tasuku SUENAGA a.k.a. gunyarakun	2010-06-30 08:17:10 +0000 (Wed, 30 Jun 2010)

  New Revision: bad4790ffb622c0beafd6995c032743b93cd604d

  Log:
    Make some procs return true/false depends on ctx->rc.

  Modified files:
    lib/output.h
    lib/proc.c

  Modified: lib/output.h (+4 -0)
===================================================================
--- lib/output.h    2010-06-30 05:47:57 +0000 (4632cb6)
+++ lib/output.h    2010-06-30 08:17:10 +0000 (d1d7f0a)
@@ -47,6 +47,8 @@ void grn_output_cstr(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type
                      const char *value);
 void grn_output_str(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
                     const char *value, size_t value_len);
+void grn_output_bool(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
+                     char value);
 
 #define GRN_OUTPUT_ARRAY_OPEN(name,nelements) \
   (grn_output_array_open(ctx, ctx->impl->outbuf, ctx->impl->output_type, name, nelements))
@@ -64,6 +66,8 @@ void grn_output_str(grn_ctx *ctx, grn_obj *outbuf, grn_content_type output_type,
   (grn_output_cstr(ctx, ctx->impl->outbuf, ctx->impl->output_type, value))
 #define GRN_OUTPUT_STR(value,value_len)\
   (grn_output_str(ctx, ctx->impl->outbuf, ctx->impl->output_type, value, value_len))
+#define GRN_OUTPUT_BOOL(value)\
+  (grn_output_bool(ctx, ctx->impl->outbuf, ctx->impl->output_type, value))
 #define GRN_OUTPUT_OBJ(obj,format)\
   (grn_output_obj(ctx, ctx->impl->outbuf, ctx->impl->output_type, obj, format))
 

  Modified: lib/proc.c (+20 -6)
===================================================================
--- lib/proc.c    2010-06-30 05:47:57 +0000 (62964f6)
+++ lib/proc.c    2010-06-30 08:17:10 +0000 (048395f)
@@ -345,6 +345,7 @@ proc_define_selector(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *use
   grn_proc_create(ctx,
                   GRN_TEXT_VALUE(VAR(0)), GRN_TEXT_LEN(VAR(0)),
                   GRN_PROC_COMMAND, proc_select, NULL, NULL, nvars - 1, vars + 1);
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -535,9 +536,7 @@ proc_table_create(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_d
   if (GRN_TEXT_VALUE(VAR(1)) == rest) {
     flags = grn_parse_table_create_flags(ctx, GRN_TEXT_VALUE(VAR(1)),
                                          GRN_BULK_CURR(VAR(1)));
-    if (ctx->rc) {
-      return NULL;
-    }
+    if (ctx->rc) { goto exit; }
   }
   if (GRN_TEXT_LEN(VAR(0))) {
     flags |= GRN_OBJ_PERSISTENT;
@@ -559,6 +558,8 @@ proc_table_create(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_d
   } else {
     ERR(GRN_INVALID_ARGUMENT, "should not create anonymous table");
   }
+exit:
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -573,6 +574,7 @@ proc_table_remove(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_d
   } else {
     ERR(GRN_INVALID_ARGUMENT, "table not found.");
   }
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -586,9 +588,7 @@ proc_column_create(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_
   if (GRN_TEXT_VALUE(VAR(2)) == rest) {
     flags = grn_parse_column_create_flags(ctx, GRN_TEXT_VALUE(VAR(2)),
                                           GRN_BULK_CURR(VAR(2)));
-    if (ctx->rc) {
-      return NULL;
-    }
+    if (ctx->rc) { goto exit; }
   }
   table = grn_ctx_get(ctx, GRN_TEXT_VALUE(VAR(0)),
                       GRN_TEXT_LEN(VAR(0)));
@@ -629,6 +629,8 @@ proc_column_create(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_
     }
     grn_obj_unlink(ctx, column);
   }
+exit:
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -659,6 +661,7 @@ proc_column_remove(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_
   } else {
     ERR(GRN_INVALID_ARGUMENT, "table not found.");
   }
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -985,6 +988,7 @@ proc_view_add(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
                               GRN_TEXT_VALUE(VAR(1)),
                               GRN_TEXT_LEN(VAR(1)));
   grn_view_add(ctx, view, table);
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -1021,6 +1025,7 @@ proc_clearlock(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data
   } else {
     ERR(GRN_INVALID_ARGUMENT, "clear object not found");
   }
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -1042,6 +1047,7 @@ proc_log_level(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data
   } else {
     ERR(GRN_INVALID_ARGUMENT, "invalid log level.");
   }
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -1056,6 +1062,7 @@ proc_log_put(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
   } else {
     ERR(GRN_INVALID_ARGUMENT, "invalid log level.");
   }
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -1063,6 +1070,7 @@ static grn_obj *
 proc_log_reopen(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
 {
   grn_log_reopen(ctx);
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -1077,6 +1085,7 @@ proc_add(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
 static grn_obj *
 proc_set(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
 {
+  /* TODO: implement */
   grn_obj *table = grn_ctx_get(ctx, GRN_TEXT_VALUE(VAR(0)), GRN_TEXT_LEN(VAR(0)));
   if (table) {
     grn_id id;
@@ -1243,6 +1252,7 @@ proc_delete(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
   } else {
     ERR(GRN_INVALID_ARGUMENT, "unknown table name");
   }
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -1798,6 +1808,7 @@ proc_cache_limit(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_da
           GRN_TEXT_LEN(VAR(0)), GRN_TEXT_VALUE(VAR(0)));
     }
   }
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 
@@ -1808,7 +1819,10 @@ proc_register(grn_ctx *ctx, int nargs, grn_obj **args, grn_user_data *user_data)
     const char *name;
     name = GRN_TEXT_VALUE(VAR(0));
     grn_db_register_by_name(ctx, name);
+  } else {
+    ERR(GRN_INVALID_ARGUMENT, "path is required");
   }
+  GRN_OUTPUT_BOOL(!ctx->rc);
   return NULL;
 }
 




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