summaryrefslogtreecommitdiffstats
path: root/private/crt32/dos/rename.c
diff options
context:
space:
mode:
Diffstat (limited to 'private/crt32/dos/rename.c')
-rw-r--r--private/crt32/dos/rename.c83
1 files changed, 83 insertions, 0 deletions
diff --git a/private/crt32/dos/rename.c b/private/crt32/dos/rename.c
new file mode 100644
index 000000000..5aeec210b
--- /dev/null
+++ b/private/crt32/dos/rename.c
@@ -0,0 +1,83 @@
+/***
+*rename.c - OS/2 rename file
+*
+* Copyright (c) 1989-1991, Microsoft Corporation. All rights reserved.
+*
+*Purpose:
+* Defines rename() - rename a file
+*
+*Revision History:
+* 06-06-89 PHG Module created, based on asm version
+* 03-07-90 GJF Made calling type _CALLTYPE2 (for now), added #include
+* <cruntime.h>, fixed compiler warnings and fixed the
+* copyright. Also, cleaned up the formatting a bit.
+* 03-30-90 GJF Now _CALLTYPE1.
+* 07-24-90 SBM Removed '32' from API names
+* 09-27-90 GJF New-style function declarator.
+* 12-04-90 SRW Changed to include <oscalls.h> instead of <doscalls.h>
+* 12-06-90 SRW Added _CRUISER_ and _WIN32 conditionals.
+*
+*******************************************************************************/
+
+#include <cruntime.h>
+#include <oscalls.h>
+#include <internal.h>
+#include <io.h>
+
+/***
+*int rename(oldname, newname) - rename a file
+*
+*Purpose:
+* Renames a file to a new name -- no file with new name must
+* currently exist.
+*
+*Entry:
+* char *oldname - name of file to rename
+* char *newname - new name for file
+*
+*Exit:
+* returns 0 if successful
+* returns not 0 and sets errno if not successful
+*
+*Exceptions:
+*
+*******************************************************************************/
+
+int _CALLTYPE1 rename (
+ const char *oldname,
+ const char *newname
+ )
+{
+ ULONG dosretval;
+
+ /* ask OS to move file */
+
+#ifdef _CRUISER_
+
+ dosretval = DOSMOVE((char *)oldname, (char *)newname, 0);
+
+#else /* ndef _CRUISER_ */
+
+#ifdef _WIN32_
+
+ if (!MoveFile((LPSTR)oldname, (LPSTR)newname))
+ dosretval = GetLastError();
+ else
+ dosretval = 0;
+
+#else /* ndef _WIN32_ */
+
+#error ERROR - ONLY CRUISER OR WIN32 TARGET SUPPORTED!
+
+#endif /* _WIN32_ */
+
+#endif /* _CRUISER_ */
+
+ if (dosretval) {
+ /* error occured -- map error code and return */
+ _dosmaperr(dosretval);
+ return -1;
+ }
+
+ return 0;
+}