[PATCH 1/2] parse-options: expand $HOME on filename options
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Feb 14, 2018, 10:51 UTC
- Message-ID
- <20180214105149.28896-1-pclouds@gmail.com>
- In-Reply-To
- <20180214101019.gaenosifgq3wx2nm@NUC.localdomain>
When you specify "--path ~/foo", the shell will automatically expand ~/foo to $HOME/foo before it's passed to git. The expansion is not done on "--path=~/foo". An experienced user sees the difference but it could still be confusing for others (especially when tab-completion still works on --path=~/foo).
Support $HOME expansion for all filename options. There are about seven of them.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- parse-options.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/parse-options.c b/parse-options.c index d265a756b5..c33f14c74e 100644 --- a/parse-options.c +++ b/parse-options.c @@ -38,10 +38,13 @@ static int get_arg(struct parse_opt_ctx_t *p, const struct option *opt, static void fix_filename(const char *prefix, const char **file) { - if (!file || !*file || !prefix || is_absolute_path(*file) - || !strcmp("-", *file)) + if (!file || !*file || is_absolute_path(*file) || + !strcmp("-", *file)) return; - *file = prefix_filename(prefix, *file); + if (**file == '~') + *file = expand_user_path(*file, 0); + else if (prefix) + *file = prefix_filename(prefix, *file); } static int opt_command_mode_error(const struct option *opt,
-- 2.16.1.435.g8f24da2e1a