libroot: Clean up and unify link/linkat.

* Move Haiku -> POSIX error mapping to linkat.

 * Implement link in terms of linkat.
This commit is contained in:
Augustin Cavalier
2024-09-03 11:20:51 -04:00
parent 004833215d
commit b93d9fcf70
+9 -9
View File
@@ -77,19 +77,19 @@ unlinkat(int fd, const char *path, int flag)
int
link(const char *toPath, const char *linkPath)
{
int status = _kern_create_link(-1, linkPath, -1, toPath, true);
// Haiku -> POSIX error mapping
if (status == B_UNSUPPORTED)
status = EPERM;
RETURN_AND_SET_ERRNO(status);
return linkat(AT_FDCWD, toPath, AT_FDCWD, linkPath, 0);
}
int
linkat(int toFD, const char *toPath, int linkFD, const char *linkPath, int flag)
{
RETURN_AND_SET_ERRNO(_kern_create_link(linkFD, linkPath, toFD, toPath,
(flag & AT_SYMLINK_FOLLOW) != 0));
}
int status = _kern_create_link(linkFD, linkPath, toFD, toPath,
(flag & AT_SYMLINK_FOLLOW) != 0);
// Haiku -> POSIX error mapping
if (status == B_UNSUPPORTED)
status = EPERM;
RETURN_AND_SET_ERRNO(status);
}