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;
}