diff --git a/client/tarantar/main.c b/client/tarantar/main.c index 40b4fcdca3d9116cd65f57374cca64716f4b7b26..92872474aca00419bb1cf860f41999f342899ce2 100644 --- a/client/tarantar/main.c +++ b/client/tarantar/main.c @@ -139,31 +139,37 @@ int main(int argc, char *argv[]) return 1; } - char cur_dir_snap[PATH_MAX], cur_dir_wal[PATH_MAX]; - tss.snap_dir = cur_dir_snap; - tss.wal_dir = cur_dir_wal; + char workdir[PATH_MAX]; + char snapdir[PATH_MAX], waldir[PATH_MAX]; + + tss.snap_dir = snapdir; + tss.wal_dir = waldir; + + if (tss.opts.cfg.work_dir != NULL) + snprintf(workdir, sizeof(workdir), "%s", tss.opts.cfg.work_dir); + else + getcwd(workdir, PATH_MAX); - if (tss.opts.cfg.work_dir != NULL) { - strncpy((char *)tss.snap_dir, tss.opts.cfg.work_dir, PATH_MAX); - strncpy((char *)tss.wal_dir, tss.opts.cfg.work_dir, PATH_MAX); - } else { - getcwd((char *)tss.snap_dir, PATH_MAX); - getcwd((char *)tss.wal_dir, PATH_MAX); - } if (tss.opts.cfg.snap_dir != NULL) { if (tss.opts.cfg.snap_dir[0] == '/') tss.snap_dir = tss.opts.cfg.snap_dir; - else - strncat((char *)tss.snap_dir, tss.opts.cfg.snap_dir, - PATH_MAX); + else { + snprintf(snapdir, sizeof(snapdir), "%s/%s", workdir, + tss.opts.cfg.snap_dir); + } + } else { + snprintf(snapdir, sizeof(snapdir), "%s", workdir); } if (tss.opts.cfg.wal_dir != NULL) { if (tss.opts.cfg.wal_dir[0] == '/') tss.wal_dir = tss.opts.cfg.wal_dir; else - strncat((char *)tss.wal_dir, tss.opts.cfg.wal_dir, - PATH_MAX); + snprintf(waldir, sizeof(waldir), "%s/%s", workdir, + tss.opts.cfg.wal_dir); + } else { + snprintf(waldir, sizeof(waldir), "%s", workdir); } + /* create spaces */ rc = ts_space_init(&tss.s); if (rc == -1) { diff --git a/client/tarantar/space.c b/client/tarantar/space.c index dc28d7c49be21f934a0042304fa050aa2d26b665..522791dfaab19cf82403057e931a83553498f2d8 100644 --- a/client/tarantar/space.c +++ b/client/tarantar/space.c @@ -238,6 +238,8 @@ int ts_space_fillof(struct ts_spaces *s, int n, tarantool_cfg_space *cs) int ts_space_fill(struct ts_spaces *s, struct ts_options *opts) { + if (opts->cfg.space == NULL) + return 0; int i = 0; for (; opts->cfg.space[i]; i++) { tarantool_cfg_space *cs = opts->cfg.space[i];