- if (name[0] == '/')
- return fxp_realpath(name, NULL);
- else
- return fxp_realpath(pwd, name);
+ char *fullname, *canonname;
+ if (name[0] == '/') {
+ fullname = dupstr(name);
+ } else {
+ fullname = dupcat(pwd, "/", name, NULL);
+ }
+ canonname = fxp_realpath(name);
+ if (canonname) {
+ sfree(fullname);
+ return canonname;
+ } else
+ return fullname;