summaryrefslogtreecommitdiffstats
path: root/sftp-server.c
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@zip.com.au>2004-06-28 16:01:19 +1000
committerDarren Tucker <dtucker@zip.com.au>2004-06-28 16:01:19 +1000
commite59b50879819db3bbb189ba7e069950a8991ea05 (patch)
tree0c771262fb0f74ef43283c26c71ec8fdb0c5ee3d /sftp-server.c
parentf9eb2b013510ef35372560e673d0bf80b1b4dd2c (diff)
- (dtucker) [acconfig.h configure.ac sftp-server.c] Bug #823: add sftp
rename handling for Linux which returns EPERM for link() on (at least some) filesystems that do not support hard links. sftp-server will fall back to stat+rename() in such cases.
Diffstat (limited to 'sftp-server.c')
-rw-r--r--sftp-server.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sftp-server.c b/sftp-server.c
index 39a6bdab..1ff4750e 100644
--- a/sftp-server.c
+++ b/sftp-server.c
@@ -840,7 +840,11 @@ process_rename(void)
else if (S_ISREG(sb.st_mode)) {
/* Race-free rename of regular files */
if (link(oldpath, newpath) == -1) {
- if (errno == EOPNOTSUPP) {
+ if (errno == EOPNOTSUPP
+#ifdef LINK_OPNOTSUPP_ERRNO
+ || errno == LINK_OPNOTSUPP_ERRNO
+#endif
+ ) {
struct stat st;
/*