Commit 82fa20a2 by Frederic Konrad Committed by Pierre-Marie de Rodat

[Ada] Fix errno for rename for the VxWorks 6 target

This fixes the wrong errno for rename when the file is not existing on a
dosFs. In the end it makes Ada.Directories.Rename raising the right
exception in the case we are trying to move a file in a non existing
directory.

2019-09-18  Frederic Konrad  <konrad@adacore.com>

gcc/ada/

	* adaint.c: Include dosFsLib.h and vwModNum.h for VxWorks 6.
	(__gnat_rename): Map S_dosFsLib_FILE_NOT_FOUND to ENOENT.

From-SVN: r275846
parent dcbe49a6
2019-09-18 Frederic Konrad <konrad@adacore.com>
* adaint.c: Include dosFsLib.h and vwModNum.h for VxWorks 6.
(__gnat_rename): Map S_dosFsLib_FILE_NOT_FOUND to ENOENT.
2019-09-18 Steve Baird <baird@adacore.com> 2019-09-18 Steve Baird <baird@adacore.com>
* freeze.adb (Freeze_Object_Declaration): Do not call * freeze.adb (Freeze_Object_Declaration): Do not call
......
...@@ -74,6 +74,12 @@ ...@@ -74,6 +74,12 @@
(such as chmod) are only available on VxWorks 6. */ (such as chmod) are only available on VxWorks 6. */
#include "version.h" #include "version.h"
/* vwModNum.h and dosFsLib.h are needed for the VxWorks 6 rename workaround.
See below. */
#if (_WRS_VXWORKS_MAJOR == 6)
#include <vwModNum.h>
#include <dosFsLib.h>
#endif /* 6.x */
#endif /* VxWorks */ #endif /* VxWorks */
#if defined (__APPLE__) #if defined (__APPLE__)
...@@ -754,6 +760,20 @@ __gnat_rename (char *from, char *to) ...@@ -754,6 +760,20 @@ __gnat_rename (char *from, char *to)
S2WSC (wto, to, GNAT_MAX_PATH_LEN); S2WSC (wto, to, GNAT_MAX_PATH_LEN);
return _trename (wfrom, wto); return _trename (wfrom, wto);
} }
#elif defined (__vxworks) && (_WRS_VXWORKS_MAJOR == 6)
{
/* When used on a dos filesystem under VxWorks 6.9 rename will trigger a
S_dosFsLib_FILE_NOT_FOUND errno when the file is not found. Let's map
that to ENOENT so Ada.Directory.Rename can detect that and raise the
Name_Error exception. */
int ret = rename (from, to);
if (ret && (errno == S_dosFsLib_FILE_NOT_FOUND))
{
errno = ENOENT;
}
return ret;
}
#else #else
return rename (from, to); return rename (from, to);
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment