From fa6b8f8c1ddb605319f116a5269310e75ab6fe4e Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko <pmwkaa@gmail.com> Date: Tue, 4 Feb 2014 17:35:58 +0400 Subject: [PATCH] gh-185: add slash separator for pathes that are relative from work_dir. closes #185. --- client/tarantar/main.c | 36 +++++++++++++++++++++--------------- client/tarantar/space.c | 2 ++ 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/client/tarantar/main.c b/client/tarantar/main.c index 40b4fcdca3..92872474ac 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 dc28d7c49b..522791dfaa 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]; -- GitLab