From c5671f9528f9814e1ce252feb704940eb87b405b Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Mon, 18 Aug 2008 15:59:50 +0000 Subject: [PATCH] remove __hscore_renameFile, it is no longer uesd System.Directory implements renameFile using unix/Win32 now. --- System/Posix/Internals.hs | 3 -- cbits/dirUtils.c | 68 --------------------------------------------- include/dirUtils.h | 1 - 3 files changed, 72 deletions(-) diff --git a/System/Posix/Internals.hs b/System/Posix/Internals.hs index 960f84c..5828d72 100644 --- a/System/Posix/Internals.hs +++ b/System/Posix/Internals.hs @@ -369,9 +369,6 @@ foreign import ccall unsafe "HsBase.h __hscore_mkdir" foreign import ccall unsafe "HsBase.h read" c_read :: CInt -> Ptr CChar -> CSize -> IO CSsize -foreign import ccall unsafe "dirUtils.h __hscore_renameFile" - c_rename :: CString -> CString -> IO CInt - foreign import ccall unsafe "HsBase.h rewinddir" c_rewinddir :: Ptr CDir -> IO () diff --git a/cbits/dirUtils.c b/cbits/dirUtils.c index 8e87db3..6bc8ad6 100644 --- a/cbits/dirUtils.c +++ b/cbits/dirUtils.c @@ -70,71 +70,3 @@ __hscore_readdir( DIR *dirPtr, struct dirent **pDirEnt ) } #endif } - -/* - * Function: __hscore_renameFile() - * - * Provide Haskell98's semantics for renaming files and directories. - * It mirrors that of POSIX.1's behaviour for rename() by overwriting - * the target if it exists (the MS CRT implementation of rename() returns - * an error - * - */ -int -__hscore_renameFile( char *src, char *dest) -{ -#if defined(_MSC_VER) || defined(__MINGW32__) || defined(_WIN32) - static int forNT = -1; - - /* ToDo: propagate error codes back */ - if (MoveFileA(src, dest)) { - return 0; - } else { - ; - } - - /* Failed...it could be because the target already existed. */ - if ( !GetFileAttributes(dest) ) { - /* No, it's not there - just fail. */ - maperrno(); - return (-1); - } - - if (forNT == -1) { - OSVERSIONINFO ovi; - ovi.dwOSVersionInfoSize = sizeof(ovi); - if ( !GetVersionEx(&ovi) ) { - maperrno(); - return (-1); - } - forNT = ((ovi.dwPlatformId & VER_PLATFORM_WIN32_NT) != 0); - } - - if (forNT) { - /* Easy, go for MoveFileEx() */ - if ( MoveFileExA(src, dest, MOVEFILE_REPLACE_EXISTING) ) { - return 0; - } else { - maperrno(); - return (-1); - } - } - - /* No MoveFileEx() for Win9x, try deleting the target. */ - /* Similarly, if the MoveFile*() ops didn't work out under NT */ - if (DeleteFileA(dest)) { - if (MoveFileA(src,dest)) { - return 0; - } else { - maperrno(); - return (-1); - } - } else { - maperrno(); - return (-1); - } -#else - return rename(src,dest); -#endif -} - diff --git a/include/dirUtils.h b/include/dirUtils.h index a5171d8..d5d75bb 100644 --- a/include/dirUtils.h +++ b/include/dirUtils.h @@ -7,6 +7,5 @@ #define __DIRUTILS_H__ extern int __hscore_readdir(DIR *dirPtr, struct dirent **pDirEnt); -extern int __hscore_renameFile(char *src, char *dest); #endif /* __DIRUTILS_H__ */ -- 1.7.10.4