fnqualify(3) 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.


Lars Wirzenius ([email protected])