Browse Source

support archs with no renameat syscall, only renameat2

Drew DeVault 6 years ago
parent
commit
54316a52b2
2 changed files with 8 additions and 2 deletions
  1. 4 2
      src/stdio/rename.c
  2. 4 0
      src/unistd/renameat.c

+ 4 - 2
src/stdio/rename.c

@@ -4,9 +4,11 @@
 
 int rename(const char *old, const char *new)
 {
-#ifdef SYS_rename
+#if defined(SYS_rename)
 	return syscall(SYS_rename, old, new);
-#else
+#elif defined(SYS_renameat)
 	return syscall(SYS_renameat, AT_FDCWD, old, AT_FDCWD, new);
+#else
+	return syscall(SYS_renameat2, AT_FDCWD, old, AT_FDCWD, new, 0);
 #endif
 }

+ 4 - 0
src/unistd/renameat.c

@@ -3,5 +3,9 @@
 
 int renameat(int oldfd, const char *old, int newfd, const char *new)
 {
+#ifdef SYS_renameat
 	return syscall(SYS_renameat, oldfd, old, newfd, new);
+#else
+	return syscall(SYS_renameat2, oldfd, old, newfd, new, 0);
+#endif
 }