Navigation Menu

Skip to content

Commit

Permalink
windows: use strcat_s() on Windows
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Apr 18, 2015
1 parent 89ed00d commit bdd9671
Show file tree
Hide file tree
Showing 8 changed files with 76 additions and 67 deletions.
8 changes: 8 additions & 0 deletions include/groonga/portability.h
Expand Up @@ -109,6 +109,14 @@
strncpy((dest), (src), (n))
#endif /* WIN32 */

#ifdef WIN32
# define grn_strcat(dest, dest_size, src) \
strcat_s((dest), (dest_size), (src))
#else /* WIN32 */
# define grn_strcat(dest, dest_size, src) \
strcat((dest), (src))
#endif /* WIN32 */

#ifdef WIN32
# define grn_snprintf(dest, dest_size, n, format, ...) \
_snprintf_s((dest), (dest_size), (n), (format), __VA_ARGS__)
Expand Down
4 changes: 2 additions & 2 deletions lib/ii.c
Expand Up @@ -3484,7 +3484,7 @@ _grn_ii_create(grn_ctx *ctx, grn_ii *ii, const char *path, grn_obj *lexicon, uin
if (!seg) { return NULL; }
if (path) {
grn_strcpy(path2, PATH_MAX, path);
strcat(path2, ".c");
grn_strcat(path2, PATH_MAX, ".c");
chunk = grn_io_create(ctx, path2, 0, S_CHUNK, GRN_II_MAX_CHUNK, grn_io_auto,
GRN_IO_EXPIRE_SEGMENT);
} else {
Expand Down Expand Up @@ -3603,7 +3603,7 @@ grn_ii_open(grn_ctx *ctx, const char *path, grn_obj *lexicon)
}
if (strlen(path) + 6 >= PATH_MAX) { return NULL; }
grn_strcpy(path2, PATH_MAX, path);
strcat(path2, ".c");
grn_strcat(path2, PATH_MAX, ".c");
seg = grn_io_open(ctx, path, grn_io_auto);
if (!seg) { return NULL; }
chunk = grn_io_open(ctx, path2, grn_io_auto);
Expand Down
10 changes: 5 additions & 5 deletions lib/mrb.c
Expand Up @@ -50,8 +50,8 @@ grn_mrb_get_default_system_ruby_scripts_dir(void)
base_dir = grn_win32_base_dir();
base_dir_length = strlen(base_dir);
grn_strcpy(win32_ruby_scripts_dir_buffer, PATH_MAX, base_dir);
strcat(win32_ruby_scripts_dir_buffer, "/");
strcat(win32_ruby_scripts_dir_buffer, relative_path);
grn_strcat(win32_ruby_scripts_dir_buffer, PATH_MAX, "/");
grn_strcat(win32_ruby_scripts_dir_buffer, PATH_MAX, relative_path);
win32_ruby_scripts_dir = win32_ruby_scripts_dir_buffer;
}
return win32_ruby_scripts_dir;
Expand Down Expand Up @@ -106,14 +106,14 @@ grn_mrb_expand_script_path(grn_ctx *ctx, const char *path,
expanded_path[0] = '\0';
} else if (path[0] == '.' && path[1] == '/') {
grn_strcpy(expanded_path, expanded_path_size, ctx->impl->mrb.base_directory);
strcat(expanded_path, "/");
grn_strcat(expanded_path, expanded_path_size, "/");
} else {
ruby_scripts_dir = grn_mrb_get_system_ruby_scripts_dir(ctx);
grn_strcpy(expanded_path, expanded_path_size, ruby_scripts_dir);

dir_last_char = ruby_scripts_dir[strlen(expanded_path) - 1];
if (dir_last_char != '/') {
strcat(expanded_path, "/");
grn_strcat(expanded_path, expanded_path_size, "/");
}
}

Expand All @@ -127,7 +127,7 @@ grn_mrb_expand_script_path(grn_ctx *ctx, const char *path,
return GRN_FALSE;
}

strcat(expanded_path, path);
grn_strcat(expanded_path, expanded_path_size, path);

return GRN_TRUE;
}
Expand Down
18 changes: 9 additions & 9 deletions lib/plugin.c
Expand Up @@ -495,8 +495,8 @@ grn_plugin_get_default_system_plugins_dir(void)
base_dir = grn_win32_base_dir();
base_dir_length = strlen(base_dir);
grn_strcpy(win32_plugins_dir_buffer, PATH_MAX, base_dir);
strcat(win32_plugins_dir_buffer, "/");
strcat(win32_plugins_dir_buffer, relative_path);
grn_strcat(win32_plugins_dir_buffer, PATH_MAX, "/");
grn_strcat(win32_plugins_dir_buffer, PATH_MAX, relative_path);
win32_plugins_dir = win32_plugins_dir_buffer;
}
return win32_plugins_dir;
Expand Down Expand Up @@ -563,7 +563,7 @@ grn_plugin_find_path_mrb(grn_ctx *ctx, const char *path, size_t path_len)
}

grn_strcpy(mrb_path, PATH_MAX, path);
strcat(mrb_path, mrb_suffix);
grn_strcat(mrb_path, PATH_MAX, mrb_suffix);
return grn_plugin_find_path_raw(ctx, mrb_path);
}
#else /* GRN_WITH_MRUBY */
Expand Down Expand Up @@ -591,7 +591,7 @@ grn_plugin_find_path_so(grn_ctx *ctx, const char *path, size_t path_len)
}

grn_strcpy(so_path, PATH_MAX, path);
strcat(so_path, so_suffix);
grn_strcat(so_path, PATH_MAX, so_suffix);
return grn_plugin_find_path_raw(ctx, so_path);
}

Expand Down Expand Up @@ -624,9 +624,9 @@ grn_plugin_find_path_libs_so(grn_ctx *ctx, const char *path, size_t path_len)

libs_so_path[0] = '\0';
grn_strncat(libs_so_path, PATH_MAX, path, base_name - path);
strcat(libs_so_path, libs_path);
strcat(libs_so_path, base_name);
strcat(libs_so_path, so_suffix);
grn_strcat(libs_so_path, PATH_MAX, libs_path);
grn_strcat(libs_so_path, PATH_MAX, base_name);
grn_strcat(libs_so_path, PATH_MAX, so_suffix);
return grn_plugin_find_path_raw(ctx, libs_so_path);
}

Expand All @@ -649,7 +649,7 @@ grn_plugin_find_path(grn_ctx *ctx, const char *name)

dir_last_char = plugins_dir[strlen(path) - 1];
if (dir_last_char != '/') {
strcat(path, "/");
grn_strcat(path, PATH_MAX, "/");
}
}

Expand All @@ -662,7 +662,7 @@ grn_plugin_find_path(grn_ctx *ctx, const char *name)
path, name);
goto exit;
}
strcat(path, name);
grn_strcat(path, PATH_MAX, name);

found_path = grn_plugin_find_path_raw(ctx, path);
if (found_path) {
Expand Down
6 changes: 3 additions & 3 deletions lib/proc.c
Expand Up @@ -2730,10 +2730,10 @@ dump_plugins(grn_ctx *ctx, grn_obj *outbuf)
start_libs = strstr(relative_path, libs_path);
if (start_libs) {
grn_strncat(name, PATH_MAX, relative_path, start_libs - relative_path);
strcat(name, "/");
strcat(name, start_libs + strlen(libs_path));
grn_strcat(name, PATH_MAX, "/");
grn_strcat(name, PATH_MAX, start_libs + strlen(libs_path));
} else {
strcat(name, relative_path);
grn_strcat(name, PATH_MAX, relative_path);
}
if (strlen(name) > strlen(native_plugin_suffix) &&
strcmp(name + strlen(name) - strlen(native_plugin_suffix),
Expand Down
4 changes: 2 additions & 2 deletions plugins/query_expanders/tsv.c
Expand Up @@ -53,8 +53,8 @@ get_system_synonyms_file(void)
base_dir = grn_plugin_win32_base_dir();
base_dir_length = strlen(base_dir);
grn_strcpy(win32_synonyms_file, MAX_PATH, base_dir);
strcat(win32_synonyms_file, "/");
strcat(win32_synonyms_file, relative_path);
grn_strcat(win32_synonyms_file, MAX_PATH, "/");
grn_strcat(win32_synonyms_file, MAX_PATH, relative_path);
}
return win32_synonyms_file;
}
Expand Down
7 changes: 4 additions & 3 deletions src/groonga.c
Expand Up @@ -143,7 +143,7 @@ line_editor_init(int argc __attribute__((unused)), char *argv[])

if (strlen(HOME_PATH) + strlen(HISTORY_PATH) < PATH_MAX) {
grn_strcpy(line_editor_history_path, PATH_MAX, HOME_PATH);
strcat(line_editor_history_path, HISTORY_PATH);
grn_strcat(line_editor_history_path, PATH_MAX, HISTORY_PATH);
} else {
line_editor_history_path[0] = '\0';
}
Expand Down Expand Up @@ -2439,8 +2439,9 @@ init_default_settings(void)
fprintf(stderr, "can't use default root: too long path\n");
} else {
grn_strcpy(win32_default_document_root, PATH_MAX, grn_win32_base_dir());
strcat(win32_default_document_root, "/");
strcat(win32_default_document_root, GRN_DEFAULT_RELATIVE_DOCUMENT_ROOT);
grn_strcat(win32_default_document_root, PATH_MAX, "/");
grn_strcat(win32_default_document_root, PATH_MAX,
GRN_DEFAULT_RELATIVE_DOCUMENT_ROOT);
default_document_root = win32_default_document_root;
}
}
Expand Down

0 comments on commit bdd9671

Please sign in to comment.