Version 3.6.0.4, tag libreoffice-3.6.0.4
[LibreOffice.git] / setup_native / source / win32 / customactions / tools / seterror.cxx
blobc9c74ec43d1895c6122834e2945e1953edc664db
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*************************************************************************
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
6 * Copyright 2000, 2010 Oracle and/or its affiliates.
8 * OpenOffice.org - a multi-platform office productivity suite
10 * This file is part of OpenOffice.org.
12 * OpenOffice.org is free software: you can redistribute it and/or modify
13 * it under the terms of the GNU Lesser General Public License version 3
14 * only, as published by the Free Software Foundation.
16 * OpenOffice.org is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU Lesser General Public License version 3 for more details
20 * (a copy is included in the LICENSE file that accompanied this code).
22 * You should have received a copy of the GNU Lesser General Public License
23 * version 3 along with OpenOffice.org. If not, see
24 * <http://www.openoffice.org/license.html>
25 * for a copy of the LGPLv3 License.
27 ************************************************************************/
29 #define UNICODE
31 #ifdef _MSC_VER
32 #pragma warning(push,1) // disable warnings within system headers
33 #endif
34 #include <windows.h>
35 #ifdef _MSC_VER
36 #pragma warning(pop)
37 #endif
39 #include <string.h>
40 #include <malloc.h>
41 #include <stdio.h>
42 #include "strsafe.h"
44 #include <seterror.hxx>
46 //----------------------------------------------------------
47 #ifdef DEBUG
48 inline void OutputDebugStringFormat( LPCTSTR pFormat, ... )
50 TCHAR buffer[1024];
51 va_list args;
53 va_start( args, pFormat );
54 StringCchVPrintf( buffer, sizeof(buffer), pFormat, args );
55 OutputDebugString( buffer );
57 #else
58 static inline void OutputDebugStringFormat( LPCTSTR, ... )
61 #endif
63 //----------------------------------------------------------
64 void SetMsiErrorCode( int nErrorCode )
66 const TCHAR sMemMapName[] = TEXT( "Global\\MsiErrorObject" );
68 HANDLE hMapFile;
69 int *pBuf;
71 hMapFile = OpenFileMapping(
72 FILE_MAP_ALL_ACCESS, // read/write access
73 FALSE, // do not inherit the name
74 sMemMapName ); // name of mapping object
76 if ( hMapFile == NULL ) // can not set error code
78 OutputDebugStringFormat( TEXT("Could not open map file (%d).\n"), GetLastError() );
79 return;
82 pBuf = (int*) MapViewOfFile( hMapFile, // handle to map object
83 FILE_MAP_ALL_ACCESS, // read/write permission
86 sizeof( int ) );
87 if ( pBuf )
89 *pBuf = nErrorCode;
90 UnmapViewOfFile( pBuf );
92 else
93 OutputDebugStringFormat( TEXT("Could not map view of file (%d).\n"), GetLastError() );
95 CloseHandle( hMapFile );
99 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */