chdir("~/")
doesn't seem to work. Am I expected to look at the string and substitute tilde by hand, or is there some better way?
POSIX provides wordexp(3)
to perform shell-like expansion, including tilde expansion.
You can you use wordexp
example below
#include <stdio.h>
#include <wordexp.h>
int main(int argc, char* argv[]) {
wordexp_t exp_result;
wordexp(argv[1], &exp_result, 0);
printf("%s\n", exp_result.we_wordv[0]);
}
The tilde in a path is a shell specific thing. What you can do see if the first character is a tilde and a slash (or a tilde end end of the string), then replace the tilde with the value of the environment variable HOME
(which you can get from getenv
).
If the second character is not a slash, it's most likely in the form of ~user/path
. Then you have to extract the user-name and use e.g. getpwnam
to get the password entry of the user, which contains that users home directory.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With