libsdl-org / SDL

Simple Directmedia Layer
https://libsdl.org
zlib License
9.77k stars 1.81k forks source link

Convert relative path to absolute path #11275

Closed namandixit closed 1 day ago

namandixit commented 1 day ago

In the absence of chdir (https://github.com/libsdl-org/SDL/issues/9428), one way to simulate a similar effect is to prefix an absolute base path to the relative path to get the absolute path of a file/directory. To do this, it would be useful to be able to get the absolute path of any arbitrary file/directory given it's relative path, which the game might have gotten from an ini file or a command line argument. One place this would be useful in is for handling user-generated content — say, users providing custom path for installed mod.

One way could have been to add the absolute path in SDL_PathInfo as returned by SDL_GetPathInfo, but that will complicate memory management (in addition to changing the ABI). Therefore, the best way will probably be to simply add a

char* SDL_GetCompletePath(char *path)

whose result should be SDL_freed.

slouken commented 1 day ago

What’s the use case for this? Can you show a pseudo-code example?

namandixit commented 1 day ago

Let's say I want to maintain a list of recently opened files, but the software could be launched with any arbitrary current working directory and file can be provided by user with a relative path (app.exe data\file.txt). I can't store relative paths in that situation.

Although I realized that another thing that might work is simply a function to get the absolute path to current working directory. Closing this for now unless you feel path conversion is something worth adding.