31 return "GRN_END_OF_DATA";
33 return "GRN_UNKNOWN_ERROR";
35 return "GRN_OPERATION_NOT_PERMITTED";
37 return "GRN_NO_SUCH_FILE_OR_DIRECTORY";
39 return "GRN_NO_SUCH_PROCESS";
41 return "GRN_INTERRUPTED_FUNCTION_CALL";
43 return "GRN_INPUT_OUTPUT_ERROR";
45 return "GRN_NO_SUCH_DEVICE_OR_ADDRESS";
47 return "GRN_ARG_LIST_TOO_LONG";
49 return "GRN_EXEC_FORMAT_ERROR";
51 return "GRN_BAD_FILE_DESCRIPTOR";
53 return "GRN_NO_CHILD_PROCESSES";
55 return "GRN_RESOURCE_TEMPORARILY_UNAVAILABLE";
57 return "GRN_NOT_ENOUGH_SPACE";
59 return "GRN_PERMISSION_DENIED";
61 return "GRN_BAD_ADDRESS";
63 return "GRN_RESOURCE_BUSY";
65 return "GRN_FILE_EXISTS";
67 return "GRN_IMPROPER_LINK";
69 return "GRN_NO_SUCH_DEVICE";
71 return "GRN_NOT_A_DIRECTORY";
73 return "GRN_IS_A_DIRECTORY";
75 return "GRN_INVALID_ARGUMENT";
77 return "GRN_TOO_MANY_OPEN_FILES_IN_SYSTEM";
79 return "GRN_TOO_MANY_OPEN_FILES";
81 return "GRN_INAPPROPRIATE_I_O_CONTROL_OPERATION";
83 return "GRN_FILE_TOO_LARGE";
85 return "GRN_NO_SPACE_LEFT_ON_DEVICE";
87 return "GRN_INVALID_SEEK";
89 return "GRN_READ_ONLY_FILE_SYSTEM";
91 return "GRN_TOO_MANY_LINKS";
93 return "GRN_BROKEN_PIPE";
95 return "GRN_DOMAIN_ERROR";
97 return "GRN_RESULT_TOO_LARGE";
99 return "GRN_RESOURCE_DEADLOCK_AVOIDED";
101 return "GRN_NO_MEMORY_AVAILABLE";
103 return "GRN_FILENAME_TOO_LONG";
105 return "GRN_NO_LOCKS_AVAILABLE";
107 return "GRN_FUNCTION_NOT_IMPLEMENTED";
109 return "GRN_DIRECTORY_NOT_EMPTY";
111 return "GRN_ILLEGAL_BYTE_SEQUENCE";
113 return "GRN_SOCKET_NOT_INITIALIZED";
115 return "GRN_OPERATION_WOULD_BLOCK";
117 return "GRN_ADDRESS_IS_NOT_AVAILABLE";
119 return "GRN_NETWORK_IS_DOWN";
121 return "GRN_NO_BUFFER";
123 return "GRN_SOCKET_IS_ALREADY_CONNECTED";
125 return "GRN_SOCKET_IS_NOT_CONNECTED";
127 return "GRN_SOCKET_IS_ALREADY_SHUTDOWNED";
129 return "GRN_OPERATION_TIMEOUT";
131 return "GRN_CONNECTION_REFUSED";
133 return "GRN_RANGE_ERROR";
135 return "GRN_TOKENIZER_ERROR";
137 return "GRN_FILE_CORRUPT";
139 return "GRN_INVALID_FORMAT";
141 return "GRN_OBJECT_CORRUPT";
143 return "GRN_TOO_MANY_SYMBOLIC_LINKS";
145 return "GRN_NOT_SOCKET";
147 return "GRN_OPERATION_NOT_SUPPORTED";
149 return "GRN_ADDRESS_IS_IN_USE";
151 return "GRN_ZLIB_ERROR";
153 return "GRN_LZO_ERROR";
155 return "GRN_STACK_OVER_FLOW";
157 return "GRN_SYNTAX_ERROR";
159 return "GRN_RETRY_MAX";
161 return "GRN_INCOMPATIBLE_FILE_FORMAT";
163 return "GRN_UPDATE_NOT_ALLOWED";
165 return "GRN_TOO_SMALL_OFFSET";
167 return "GRN_TOO_LARGE_OFFSET";
169 return "GRN_TOO_SMALL_LIMIT";
171 return "GRN_CAS_ERROR";
173 return "GRN_UNSUPPORTED_COMMAND_VERSION";
175 return cut_take_printf(
"GRN_UNKNOWN_STATUS (%d)", rc);
188 dir = g_getenv(
"BASE_DIR");
192 if (g_path_is_absolute(dir)) {
193 base_dir = g_strdup(dir);
197 current_dir = g_get_current_dir();
198 base_dir = g_build_filename(current_dir, dir, NULL);
205 static gchar *build_dir = NULL;
214 dir = g_getenv(
"BUILD_DIR");
219 if (g_path_is_absolute(dir)) {
220 build_dir = g_strdup(dir);
224 current_dir = g_get_current_dir();
225 build_dir = g_build_filename(current_dir, dir, NULL);
232 static gchar *tmp_dir = NULL;
253 grn_log_new(gint level,
const gchar *time,
const gchar *title,
254 const gchar *
message,
const gchar *location)
260 log->
time = g_strdup(time);
261 log->
title = g_strdup(title);
262 log->
message = g_strdup(message);
298 context->
logs = NULL;
308 g_list_foreach(context->
messages, (GFunc)g_free, NULL);
324 g_list_foreach(context->
logs, (GFunc)grn_log_free, NULL);
325 g_list_free(context->
logs);
327 grn_logger_context_clear_messages(context);
333 grn_collect_logger_log_func(
int level,
const char *time,
const char *title,
334 const char *
message,
const char *location,
340 log = grn_log_new(level, time, title, message, location);
341 context->
logs = g_list_append(context->
logs, log);
357 logger->
func = grn_collect_logger_log_func;
358 logger->
func_arg = grn_logger_context_new(logger);
368 grn_logger_context_clear_messages(context);
392 messages = g_list_next(messages)) {
393 const gchar *message = messages->data;
407 messages = g_list_next(messages)) {
408 const gchar *message = messages->data;
409 g_print(
"%s\n", message);
420 grn_logger_context_free(logger->
func_arg);
449 long_path = g_string_new(base_path);
450 while (long_path->len < max_size) {
451 g_string_append(long_path, G_DIR_SEPARATOR_S
"XXXXXXXXXX");
453 g_string_set_size(long_path, max_size);
463 long_name = g_string_new(NULL);
464 while (long_name->len < max_size) {
465 g_string_append(long_name,
"aaaaaaaaaa");
466 g_string_append(long_name,
"bbbbbbbbbb");
467 g_string_append(long_name,
"cccccccccc");
468 g_string_append(long_name,
"dddddddddd");
469 g_string_append(long_name,
"eeeeeeeeee");
471 g_string_set_size(long_name, max_size);
485 GString *null_terminated_key;
489 null_terminated_key = g_string_new_len(key, size);
490 keys = g_list_append(keys, g_string_free(null_terminated_key,
FALSE));
521 GString *null_terminated_key, *null_terminated_value;
524 null_terminated_key = g_string_new_len(key, length);
525 pairs = g_list_append(pairs,
526 g_string_free(null_terminated_key,
FALSE));
529 null_terminated_value = g_string_new_len(value, length);
530 pairs = g_list_append(pairs,
531 g_string_free(null_terminated_value,
FALSE));
542 GList *
node, *ordered_pairs;
551 pairs = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
552 for (node = ordered_pairs;
node; node = g_list_next(node)) {
556 node = g_list_next(node);
561 g_hash_table_insert(pairs, key, value);
563 g_list_free(ordered_pairs);
593 return "cursor-table-hash-key";
595 return "cursor-table-pat-key";
597 return "cursor-table-no-key";
599 return "cursor-column-index";
607 return "table-hash-key";
609 return "table-pat-key";
611 return "table-no-key";
615 return "column-fix-size";
617 return "column-var-size";
619 return "column-index";
631 g_string_append(output,
"<NULL>");
635 g_string_append(output,
"#<");
636 g_string_append_printf(output,
"%s",
638 g_string_append_printf(output,
":%p ",
object);
639 g_string_append_printf(output,
"flags: 0x%x, ", object->
header.
flags);
641 g_string_append(output,
"domain: ");
642 domain =
object->header.domain;
644 g_string_append(output,
"<nil>");
653 g_string_append_printf(output,
"%u", domain);
656 g_string_append(output,
">");
662 unsigned int send_id, receive_id;
665 const gchar *taken_result;
667 result = g_string_new(NULL);
668 lines = cut_take_string_array(g_strsplit(command,
"\n", 0));
669 for (; *lines; lines++) {
670 gchar *command_result;
671 unsigned int command_result_length;
674 send_id =
grn_ctx_send(context, *lines, strlen(*lines), 0);
676 cut_message(
"<%s>:<%s>:<%s>",
677 *lines, command, result->str));
678 receive_id =
grn_ctx_recv(context, &command_result, &command_result_length,
680 cut_assert_equal_uint(send_id, receive_id);
681 g_string_append_len(result, command_result, command_result_length);
683 cut_message(
"<%s>:<%s>", command, result->str));
686 taken_result = cut_take_strdup(result->str);
687 g_string_free(result,
TRUE);
694 const gchar **commands;
696 commands = cut_take_string_array(g_strsplit(line_separated_commands,
"\n", 0));
697 for (; *commands; commands++) {
698 if (*commands[0] !=
'\0') {
707 const gchar *text_column_name)
709 GList *records = NULL;
719 text_column_name, strlen(text_column_name));
724 records = g_list_append(records, g_strndup(
GRN_TEXT_VALUE(&value),
729 gcut_take_list(records, g_free);
739 gint coordinate_in_milliseconds = 0;
740 gint accuracy = 10000000;
741 glong decimal_number;
743 coordinate_in_milliseconds += (gint)coordinate_in_degree * 60 * 60 * 1000;
744 decimal_number = ((glong)(coordinate_in_degree * accuracy) % accuracy) * 60;
745 coordinate_in_milliseconds += decimal_number / accuracy * 60 * 1000;
746 coordinate_in_milliseconds += decimal_number % accuracy * 60 / 10000;
748 return coordinate_in_milliseconds;
754 return (coordinate_in_milliseconds / 3600.0) * 0.001;
759 gdouble longitude_in_degree)
761 gint latitude_in_milliseconds, longitude_in_milliseconds;
763 latitude_in_milliseconds =
765 longitude_in_milliseconds =
768 return cut_take_printf(
"%dx%d",
769 latitude_in_milliseconds, longitude_in_milliseconds);