Update ooo320-m1
[ooovba.git] / setup_native / source / win32 / customactions / tools / seterror.cxx
blobd0f0ee23cc19b4974e30088c867bf0fcab878a65
1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: seterror.cxx,v $
10 * $Revision: 1.4 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 #define UNICODE
33 #ifdef _MSC_VER
34 #pragma warning(push,1) // disable warnings within system headers
35 #endif
36 #include <windows.h>
37 #ifdef _MSC_VER
38 #pragma warning(pop)
39 #endif
41 #include <string.h>
42 #include <malloc.h>
43 #include <stdio.h>
44 #include "strsafe.h"
46 #include <seterror.hxx>
48 //----------------------------------------------------------
49 #ifdef DEBUG
50 inline void OutputDebugStringFormat( LPCTSTR pFormat, ... )
52 TCHAR buffer[1024];
53 va_list args;
55 va_start( args, pFormat );
56 StringCchVPrintf( buffer, sizeof(buffer), pFormat, args );
57 OutputDebugString( buffer );
59 #else
60 static inline void OutputDebugStringFormat( LPCTSTR, ... )
63 #endif
65 //----------------------------------------------------------
66 void SetMsiErrorCode( int nErrorCode )
68 const TCHAR sMemMapName[] = TEXT( "Global\\MsiErrorObject" );
70 HANDLE hMapFile;
71 int *pBuf;
73 hMapFile = OpenFileMapping(
74 FILE_MAP_ALL_ACCESS, // read/write access
75 FALSE, // do not inherit the name
76 sMemMapName ); // name of mapping object
78 if ( hMapFile == NULL ) // can not set error code
80 OutputDebugStringFormat( TEXT("Could not open map file (%d).\n"), GetLastError() );
81 return;
84 pBuf = (int*) MapViewOfFile( hMapFile, // handle to map object
85 FILE_MAP_ALL_ACCESS, // read/write permission
88 sizeof( int ) );
89 if ( pBuf )
91 *pBuf = nErrorCode;
92 UnmapViewOfFile( pBuf );
94 else
95 OutputDebugStringFormat( TEXT("Could not map view of file (%d).\n"), GetLastError() );
97 CloseHandle( hMapFile );