Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/******************************************************************************
Copyright (c) 2000 Microsoft Corporation
Module Name: main.cpp
Abstract: This file contains the implementation of ReformatHHK utility, used to load and sort HHK files.
Revision History: Davide Massarenti (Dmassare) 06/09/2000 created
******************************************************************************/
#include "stdafx.h"
//////////////////////////////////////////////////////////////////////
HRESULT ProcessHHK( LPCWSTR szFileIn, LPCWSTR szFileOut ) { __HCP_FUNC_ENTRY( "ProcessHHK" );
HRESULT hr; HHK::Merger merger; HHK::Writer writer;
__MPC_EXIT_IF_METHOD_FAILS(hr, merger.PrepareSortingOfHhk( writer, szFileIn, szFileOut ));
while(merger.MoveNext()) { __MPC_EXIT_IF_METHOD_FAILS(hr, writer.OutputSection( merger.GetSection() )); }
hr = S_OK;
__HCP_FUNC_CLEANUP;
__HCP_FUNC_EXIT(hr); }
void ExtractHhkName( MPC::wstring& szFullName, LPCWSTR szFileName ) { LPCWSTR szEnd; LPCWSTR szEnd2;
if((szEnd = wcsrchr( szFileName, '\\' )) && (szEnd2 = wcsrchr( szEnd , '.' )) ) { MPC::wstring szTmp;
szTmp = L"ms-its:"; szTmp += szFileName; szTmp += L"::/"; szTmp += MPC::wstring( szEnd+1, szEnd2 ); szTmp += L".hhk"; szFullName = szTmp; } else { szFullName = szFileName; } }
HRESULT ExpandAndProcessHHK( LPCWSTR szFileIn, LPCWSTR szFileOut ) { __HCP_FUNC_ENTRY( "ExpandAndProcessHHK" );
HRESULT hr; MPC::wstring szFileName;
if(MPC::MSITS::IsCHM( szFileIn ) == false && StrStrIW( szFileIn, L".hhk" ) == NULL) { ExtractHhkName( szFileName, szFileIn ); } else { szFileName = szFileIn; }
wprintf( L"Processing '%s'...\n", szFileName.c_str() );
hr = ProcessHHK( szFileName.c_str(), szFileOut );
__HCP_FUNC_EXIT(hr); }
/////////////////////////////////////////////////////////////////////////////
//
int __cdecl wmain( int argc , LPCWSTR argv[] ) { HRESULT hr; MPC::wstring szFileIn; MPC::wstring szFileOut;
if(argc != 3) { wprintf( L"Usage: %s <file to process> <output>\n", argv[0] ); exit( 1 ); }
if(FAILED(hr = ::CoInitializeEx( NULL, COINIT_MULTITHREADED ))) { wprintf( L"No COM!!\n" ); exit(2); }
MPC::SubstituteEnvVariables( szFileIn = argv[1] ); MPC::SubstituteEnvVariables( szFileOut = argv[2] );
if(FAILED(hr = ExpandAndProcessHHK( szFileIn.c_str(), szFileOut.c_str() ))) { wprintf( L"Failed to process %s: %08x\n", argv[1], hr ); exit(3); }
::CoUninitialize();
return 0; }
|