Changeset View
Changeset View
Standalone View
Standalone View
sys/compat/linux/linux_file.c
Context not available. | |||||
printf(ARGS(unlink, "%s"), path); | printf(ARGS(unlink, "%s"), path); | ||||
#endif | #endif | ||||
error = kern_unlinkat(td, AT_FDCWD, path, UIO_SYSSPACE, 0); | error = kern_fdunlinkat(td, AT_FDCWD, path, FD_NONE, UIO_SYSSPACE, 0); | ||||
if (error == EPERM) { | if (error == EPERM) { | ||||
/* Introduce POSIX noncompliant behaviour of Linux */ | /* Introduce POSIX noncompliant behaviour of Linux */ | ||||
if (kern_statat(td, 0, AT_FDCWD, path, UIO_SYSSPACE, &st, | if (kern_statat(td, 0, AT_FDCWD, path, UIO_SYSSPACE, &st, | ||||
Context not available. | |||||
#endif | #endif | ||||
if (args->flag & LINUX_AT_REMOVEDIR) | if (args->flag & LINUX_AT_REMOVEDIR) | ||||
error = kern_rmdirat(td, dfd, path, UIO_SYSSPACE); | error = kern_fdrmdirat(td, dfd, path, FD_NONE, UIO_SYSSPACE); | ||||
else | else | ||||
error = kern_unlinkat(td, dfd, path, UIO_SYSSPACE, 0); | error = kern_fdunlinkat(td, dfd, path, FD_NONE, UIO_SYSSPACE, 0); | ||||
if (error == EPERM && !(args->flag & LINUX_AT_REMOVEDIR)) { | if (error == EPERM && !(args->flag & LINUX_AT_REMOVEDIR)) { | ||||
/* Introduce POSIX noncompliant behaviour of Linux */ | /* Introduce POSIX noncompliant behaviour of Linux */ | ||||
if (kern_statat(td, AT_SYMLINK_NOFOLLOW, dfd, path, | if (kern_statat(td, AT_SYMLINK_NOFOLLOW, dfd, path, | ||||
Context not available. | |||||
if (ldebug(rmdir)) | if (ldebug(rmdir)) | ||||
printf(ARGS(rmdir, "%s"), path); | printf(ARGS(rmdir, "%s"), path); | ||||
#endif | #endif | ||||
error = kern_rmdirat(td, AT_FDCWD, path, UIO_SYSSPACE); | error = kern_fdrmdirat(td, AT_FDCWD, path, FD_NONE, UIO_SYSSPACE); | ||||
LFREEPATH(path); | LFREEPATH(path); | ||||
return (error); | return (error); | ||||
} | } | ||||
Context not available. |