summaryrefslogtreecommitdiff
path: root/sal/systools/win32/uwinapi/MoveFileExA.cpp
diff options
context:
space:
mode:
authorBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-07-21 18:59:03 +0200
committerBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-07-21 18:59:03 +0200
commit5b5501f54ec560bf7a5e3ac1b1257b6072a69057 (patch)
tree2735f8af1183f82309d6d21262e613f164be7bf7 /sal/systools/win32/uwinapi/MoveFileExA.cpp
parentc5235330a83081e6b744d93996f37b3abd6ac30a (diff)
parenta6ba297abbe0a78954de2b2cbd911df899dc985c (diff)
resyncing to master
Diffstat (limited to 'sal/systools/win32/uwinapi/MoveFileExA.cpp')
-rw-r--r--sal/systools/win32/uwinapi/MoveFileExA.cpp100
1 files changed, 0 insertions, 100 deletions
diff --git a/sal/systools/win32/uwinapi/MoveFileExA.cpp b/sal/systools/win32/uwinapi/MoveFileExA.cpp
deleted file mode 100644
index 6c47078a4..000000000
--- a/sal/systools/win32/uwinapi/MoveFileExA.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include "macros.h"
-#include <sal/macros.h>
-
-#define WININIT_FILENAME "wininit.ini"
-#define RENAME_SECTION "rename"
-
-IMPLEMENT_THUNK( kernel32, WINDOWS, BOOL, WINAPI, MoveFileExA, ( LPCSTR lpExistingFileNameA, LPCSTR lpNewFileNameA, DWORD dwFlags ) )
-{
- BOOL fSuccess = FALSE; // assume failure
-
- // Windows 9x has a special mechanism to move files after reboot
-
- if ( dwFlags & MOVEFILE_DELAY_UNTIL_REBOOT )
- {
- CHAR szExistingFileNameA[MAX_PATH];
- CHAR szNewFileNameA[MAX_PATH] = "NUL";
-
- // Path names in WININIT.INI must be in short path name form
-
- if (
- GetShortPathNameA( lpExistingFileNameA, szExistingFileNameA, MAX_PATH ) &&
- (!lpNewFileNameA || GetShortPathNameA( lpNewFileNameA, szNewFileNameA, MAX_PATH ))
- )
- {
- CHAR szBuffer[32767]; // The buffer size must not exceed 32K
- DWORD dwBufLen = GetPrivateProfileSectionA( RENAME_SECTION, szBuffer, SAL_N_ELEMENTS(szBuffer), WININIT_FILENAME );
-
- CHAR szRename[MAX_PATH]; // This is enough for at most to times 67 chracters
- strcpy( szRename, szNewFileNameA );
- strcat( szRename, "=" );
- strcat( szRename, szExistingFileNameA );
- size_t lnRename = strlen(szRename);
-
- if ( dwBufLen + lnRename + 2 <= SAL_N_ELEMENTS(szBuffer) )
- {
- CopyMemory( &szBuffer[dwBufLen], szRename, lnRename );
- szBuffer[dwBufLen + lnRename ] = 0;
- szBuffer[dwBufLen + lnRename + 1 ] = 0;
-
- fSuccess = WritePrivateProfileSectionA( RENAME_SECTION, szBuffer, WININIT_FILENAME );
- }
- else
- SetLastError( ERROR_BUFFER_OVERFLOW );
- }
- }
- else
- {
-
- fSuccess = MoveFileA( lpExistingFileNameA, lpNewFileNameA );
-
- if ( !fSuccess && 0 != (dwFlags & (MOVEFILE_COPY_ALLOWED | MOVEFILE_REPLACE_EXISTING)) )
- {
- BOOL bFailIfExist = 0 == (dwFlags & MOVEFILE_REPLACE_EXISTING);
-
- fSuccess = CopyFileA( lpExistingFileNameA, lpNewFileNameA, bFailIfExist );
-
- // In case of successfull copy do not return FALSE if delete fails.
- // Error detection is done by GetLastError()
-
- if ( fSuccess )
- {
- SetLastError( NO_ERROR );
- DeleteFileA( lpExistingFileNameA );
- }
- }
-
- }
-
- return fSuccess;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */