mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-15 08:21:03 -04:00
tokenize: perform tilde expansion when tokenizing command line
This commit is contained in:
parent
9b0d5e7c96
commit
2992892b9b
1 changed files with 16 additions and 5 deletions
21
tokenize.c
21
tokenize.c
|
|
@ -52,12 +52,10 @@ tokenize_cmdline(const char *cmdline, char ***argv)
|
|||
goto err;
|
||||
}
|
||||
|
||||
if (!push_argv(argv, &argv_size, p, final_end - p, &idx) ||
|
||||
!push_argv(argv, &argv_size, NULL, 0, &idx))
|
||||
{
|
||||
if (!push_argv(argv, &argv_size, p, final_end - p, &idx))
|
||||
goto err;
|
||||
} else
|
||||
return true;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (end > p && *(end - 1) == '\\') {
|
||||
|
|
@ -92,6 +90,19 @@ tokenize_cmdline(const char *cmdline, char ***argv)
|
|||
if (!push_argv(argv, &argv_size, NULL, 0, &idx))
|
||||
goto err;
|
||||
|
||||
// expand '~/'
|
||||
if (**argv && (**argv)[0] == '~' && (**argv)[1] == '/') {
|
||||
const char *homedir = getenv("HOME");
|
||||
if (homedir == NULL) {
|
||||
LOG_ERR("failed to expand '~': HOME not set");
|
||||
goto err;
|
||||
}
|
||||
|
||||
char *argv0 = xstrjoin3(homedir, "/", **argv + 2);
|
||||
free(**argv);
|
||||
**argv = argv0;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
err:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue