From 459cd1b0951cdce95bbdd5fcf2c48ec3aef11c2b Mon Sep 17 00:00:00 2001
From: Deomid Ryabkov <rojer@cesanta.com>
Date: Mon, 11 Jul 2016 18:42:05 +0200
Subject: [PATCH] Properly override rename on Newlib

Newlib implements rename as _link and _unlink, not _rename.
There is no _link on either SLFS or SPIFFS, so override rename directly.

PUBLISHED_FROM=ebb54664f8a3c8664ecab1fac021bef286a0e230
---
 mongoose.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/mongoose.c b/mongoose.c
index c774fc5a7..99f640431 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -10178,11 +10178,11 @@ ssize_t _write(int fd, const void *buf, size_t count) {
   return r;
 }
 
-#if MG_TI_NO_HOST_INTERFACE
+/*
+ * On Newlib we override rename directly too, because the default
+ * implementation using _link and _unlink doesn't work for us.
+ */
 int rename(const char *from, const char *to) {
-#else
-int _rename(const char *from, const char *to) {
-#endif
   int r = -1;
   from = drop_dir(from);
   to = drop_dir(to);
@@ -10199,11 +10199,6 @@ int _rename(const char *from, const char *to) {
   return r;
 }
 
-int _link(const char *from, const char *to) {
-  DBG(("link(%s, %s)", from, to));
-  return set_errno(ENOTSUP);
-}
-
 #if MG_TI_NO_HOST_INTERFACE
 int unlink(const char *filename) {
 #else
-- 
GitLab