diff options
author | Sachidananda <sac@gluster.com> | 2011-07-17 08:10:29 +0000 |
---|---|---|
committer | Anand Avati <avati@gluster.com> | 2011-07-17 23:19:05 -0700 |
commit | 0773f5a34e3b5c503674bceaa1902454fc841879 (patch) | |
tree | 33b1e67d826ec1fddbfe070353710d43de1e8a36 | |
parent | 613a6369d63e3ec87735a5427e4e87894f884749 (diff) |
Strip extra `/' from filenames.
While peforming replace-brick, delete-brick, remove-brick... and related
operations resolve extra slashes as single path separator. i.e treat /foo//bar//
as /foo/bar.
Signed-off-by: Sachidananda Urs <sac@gluster.com>
Signed-off-by: Anand Avati <avati@gluster.com>
BUG: 3183 (When creating volumes brick paths are not handled properly.)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=3183
-rw-r--r-- | cli/src/cli-cmd-parser.c | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c index a767dfc35..c7d9c686f 100644 --- a/cli/src/cli-cmd-parser.c +++ b/cli/src/cli-cmd-parser.c @@ -856,7 +856,9 @@ cli_cmd_volume_remove_brick_parse (const char **words, int wordcount, goto out; } else { delimiter = strrchr(words[brick_index], ':'); - cli_path_strip_trailing_slashes (delimiter + 1); + ret = cli_canonicalize_path (delimiter + 1); + if (ret) + goto out; } j = tmp_index; @@ -944,12 +946,14 @@ cli_cmd_volume_replace_brick_parse (const char **words, int wordcount, if (validate_brick_name ((char *)words[3])) { cli_out ("wrong brick type: %s, use " - "<HOSTNAME>:<export-dir-abs-path>", words[3]); + "<HOSTNAME>:<export-dir-abs-path>", words[3]); ret = -1; goto out; } else { delimiter = strrchr ((char *)words[3], ':'); - cli_path_strip_trailing_slashes (delimiter + 1); + ret = cli_canonicalize_path (delimiter + 1); + if (ret) + goto out; } ret = dict_set_str (dict, "src-brick", (char *)words[3]); @@ -963,12 +967,14 @@ cli_cmd_volume_replace_brick_parse (const char **words, int wordcount, if (validate_brick_name ((char *)words[4])) { cli_out ("wrong brick type: %s, use " - "<HOSTNAME>:<export-dir-abs-path>", words[4]); + "<HOSTNAME>:<export-dir-abs-path>", words[4]); ret = -1; goto out; } else { delimiter = strrchr ((char *)words[4], ':'); - cli_path_strip_trailing_slashes (delimiter + 1); + ret = cli_canonicalize_path (delimiter + 1); + if (ret) + goto out; } @@ -1071,7 +1077,9 @@ cli_cmd_log_filename_parse (const char **words, int wordcount, dict_t **options) ret = -1; goto out; } else { - cli_path_strip_trailing_slashes (delimiter + 1); + ret = cli_canonicalize_path (delimiter + 1); + if (ret) + goto out; } ret = dict_set_str (dict, "brick", str); if (ret) @@ -1185,7 +1193,9 @@ cli_cmd_log_locate_parse (const char **words, int wordcount, dict_t **options) ret = -1; goto out; } else { - cli_path_strip_trailing_slashes (delimiter + 1); + ret = cli_canonicalize_path (delimiter + 1); + if (ret) + goto out; } str = (char *)words[4]; ret = dict_set_str (dict, "brick", str); @@ -1234,7 +1244,9 @@ cli_cmd_log_rotate_parse (const char **words, int wordcount, dict_t **options) ret = -1; goto out; } else { - cli_path_strip_trailing_slashes (delimiter + 1); + ret = cli_canonicalize_path (delimiter + 1); + if (ret) + goto out; } str = (char *)words[4]; ret = dict_set_str (dict, "brick", str); @@ -1562,7 +1574,9 @@ cli_cmd_volume_top_parse (const char **words, int wordcount, ret = -1; goto out; } else { - cli_path_strip_trailing_slashes (delimiter + 1); + ret = cli_canonicalize_path (delimiter + 1); + if (ret) + goto out; } ret = dict_set_str (dict, "brick", value); @@ -1582,7 +1596,7 @@ cli_cmd_volume_top_parse (const char **words, int wordcount, if (ret || (blk_size <= 0)) { if (blk_size < 0) cli_out ("block size is an invalid number"); - else + else cli_out ("block size should be an integer " "greater than zero"); ret = -1; @@ -1632,4 +1646,3 @@ out: dict_destroy (dict); return ret; } - |