How can I determine the absolute path of a file or directory from a given relative path in C/C++ on GNU/Linux?
I know about realpath(), but it does not work on non-existing files.
Let’s say the user enters ../non-existant-directory/file.txt, and the programs working directory is /home/user/.
What I need is a function that returns /home/non-existant-directory/file.txt.
I need this function to check if a given path is in a certain subdirectory or not.
Try
realpath. If it fails, start removing path components from the end one at a time and retryingrealpathuntil it succeeds. Then append the components you removed back onto the result of the successfulrealpathcall.If you’re sure the containing directory exists and you just want to make a file there, you only have to remove at most one component.
Another approach would be to just create the file first, then call
realpath.