Qualify a filename
#include <publib.h> size_t fnqualify(char *result, const char *path, size_t max);
fname_qualify qualifies a filename. This means that if the input name is not an absolute name (i.e. starts from the root directory, e.g. is foo, not /tmp/foo), the current directory will be prepended to it. Also, tilde conversion is done: if the filename begins with a tilde (~), the tilde is replaced with the home directory of the user, and if it begins with a tilde and a username, both are replaced with the home directory of the given user.
Simplifications like replacing /./ with /, and /foo/../bar with /bar are not done because of problems with symbolic links.
The function returns -1 if there was some error, or the total size of the full name otherwise. The return value may be greater than the maximum size given by the last argument; only as much as allowed by that is actually written, though.
publib(3), fname(3)
Lars Wirzenius ([email protected])