Author: mc
Date: Mon Jul 10 03:57:54 2006
New Revision: 22983
URL:
http://svn.reactos.org/svn/reactos?rev=22983&view=rev
Log:
modified rdesktop/channels.c
modified rdesktop/constants.h
modified rdesktop/types.h
Commented out definitions of standard Windows constants and types
modified rdesktop/licence.c
modified rdesktop/secure.c
TODO annotations
modified rdesktop/proto.h
Commented out prototypes for rdpdr, rdpsnd, cliprdr, etc. functions that will be
rewritten *and* use a new API
modified rdesktop/rdesktop.h
modified rdesktop/rdp.c
modified rdesktop/tcp.c
Big big mess, many temporary modifications to have a working prototype ASAP
added MissTosca.sln
added mstsc/mstsc.cpp
added mstsc/mstsc.vcproj
added mstsc/stdafx.cpp
added mstsc/stdafx.h
added mstscax/mstscax.cpp
added mstscax/mstscax.vcproj
added mstscax/stdafx.cpp
added mstscax/stdafx.h
Created skeleton project files for Visual C++ 2005
added rdesktop/rdesktop-core.vcproj
Isolated the bare core of rdesktop. Required little to no porting
added porting-tools/rdesktop-core-tester
added porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp
added porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj
added porting-tools/rdesktop-core-tester/stdafx.cpp
added porting-tools/rdesktop-core-tester/stdafx.h
Tester application. The screenshots were made with this. Partial (buggy!)
implementation of GUI and keyboard input
Added:
trunk/reactos/base/applications/tsclient/MissTosca.sln
trunk/reactos/base/applications/tsclient/mstsc/mstsc.cpp
trunk/reactos/base/applications/tsclient/mstsc/mstsc.vcproj
trunk/reactos/base/applications/tsclient/mstsc/stdafx.cpp
trunk/reactos/base/applications/tsclient/mstsc/stdafx.h
trunk/reactos/base/applications/tsclient/mstscax/mstscax.cpp
trunk/reactos/base/applications/tsclient/mstscax/mstscax.vcproj
trunk/reactos/base/applications/tsclient/mstscax/stdafx.cpp
trunk/reactos/base/applications/tsclient/mstscax/stdafx.h
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.cpp
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h
trunk/reactos/base/applications/tsclient/rdesktop/rdesktop-core.vcproj
Modified:
trunk/reactos/base/applications/tsclient/rdesktop/channels.c
trunk/reactos/base/applications/tsclient/rdesktop/constants.h
trunk/reactos/base/applications/tsclient/rdesktop/licence.c
trunk/reactos/base/applications/tsclient/rdesktop/proto.h
trunk/reactos/base/applications/tsclient/rdesktop/rdesktop.h
trunk/reactos/base/applications/tsclient/rdesktop/rdp.c
trunk/reactos/base/applications/tsclient/rdesktop/secure.c
trunk/reactos/base/applications/tsclient/rdesktop/tcp.c
trunk/reactos/base/applications/tsclient/rdesktop/types.h
Added: trunk/reactos/base/applications/tsclient/MissTosca.sln
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/MissTosca.sln (added)
+++ trunk/reactos/base/applications/tsclient/MissTosca.sln Mon Jul 10 03:57:54 2006
@@ -1,0 +1,38 @@
+
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual C++ Express 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rdesktop-core",
"rdesktop\rdesktop-core.vcproj",
"{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mstsc",
"mstsc\mstsc.vcproj", "{1B415732-1F37-415F-957B-EA436301860D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mstscax",
"mstscax\mstscax.vcproj", "{2C217E9E-9D77-4D6A-9259-216FD56BA56F}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") =
"rdesktop-core-tester",
"porting-tools\rdesktop-core-tester\rdesktop-core-tester.vcproj",
"{B172A623-E2BD-4E3F-86E6-620548FE255B}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Debug|Win32.ActiveCfg = Debug|Win32
+ {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Debug|Win32.Build.0 = Debug|Win32
+ {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Release|Win32.ActiveCfg = Release|Win32
+ {8620E9B2-9AF0-4F69-A5AF-C195D5F86372}.Release|Win32.Build.0 = Release|Win32
+ {1B415732-1F37-415F-957B-EA436301860D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {1B415732-1F37-415F-957B-EA436301860D}.Debug|Win32.Build.0 = Debug|Win32
+ {1B415732-1F37-415F-957B-EA436301860D}.Release|Win32.ActiveCfg = Release|Win32
+ {1B415732-1F37-415F-957B-EA436301860D}.Release|Win32.Build.0 = Release|Win32
+ {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Debug|Win32.ActiveCfg = Debug|Win32
+ {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Debug|Win32.Build.0 = Debug|Win32
+ {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Release|Win32.ActiveCfg = Release|Win32
+ {2C217E9E-9D77-4D6A-9259-216FD56BA56F}.Release|Win32.Build.0 = Release|Win32
+ {B172A623-E2BD-4E3F-86E6-620548FE255B}.Debug|Win32.ActiveCfg = Debug|Win32
+ {B172A623-E2BD-4E3F-86E6-620548FE255B}.Debug|Win32.Build.0 = Debug|Win32
+ {B172A623-E2BD-4E3F-86E6-620548FE255B}.Release|Win32.ActiveCfg = Release|Win32
+ {B172A623-E2BD-4E3F-86E6-620548FE255B}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
Added: trunk/reactos/base/applications/tsclient/mstsc/mstsc.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/mstsc/mstsc.cpp (added)
+++ trunk/reactos/base/applications/tsclient/mstsc/mstsc.cpp Mon Jul 10 03:57:54 2006
@@ -1,0 +1,7 @@
+#include "stdafx.h"
+
+int _tmain(int argc, _TCHAR* argv[])
+{
+ return 0;
+}
+
Added: trunk/reactos/base/applications/tsclient/mstsc/mstsc.vcproj
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/mstsc/mstsc.vcproj (added)
+++ trunk/reactos/base/applications/tsclient/mstsc/mstsc.vcproj Mon Jul 10 03:57:54 2006
@@ -1,0 +1,223 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="mstsc"
+ ProjectGUID="{1B415732-1F37-415F-957B-EA436301860D}"
+ RootNamespace="mstsc"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="kernel32.lib $(NoInherit)"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="kernel32.lib $(NoInherit)"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\mstsc.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath=".\stdafx.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: trunk/reactos/base/applications/tsclient/mstsc/stdafx.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/mstsc/stdafx.cpp (added)
+++ trunk/reactos/base/applications/tsclient/mstsc/stdafx.cpp Mon Jul 10 03:57:54 2006
@@ -1,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+// mstsc.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
Added: trunk/reactos/base/applications/tsclient/mstsc/stdafx.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/mstsc/stdafx.h (added)
+++ trunk/reactos/base/applications/tsclient/mstsc/stdafx.h Mon Jul 10 03:57:54 2006
@@ -1,0 +1,15 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+
+#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
+#include <stdio.h>
+#include <tchar.h>
+
+
+
+// TODO: reference additional headers your program requires here
Added: trunk/reactos/base/applications/tsclient/mstscax/mstscax.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/mstscax/mstscax.cpp (added)
+++ trunk/reactos/base/applications/tsclient/mstscax/mstscax.cpp Mon Jul 10 03:57:54 2006
@@ -1,0 +1,7 @@
+#include "stdafx.h"
+
+int _tmain(int argc, _TCHAR* argv[])
+{
+ return 0;
+}
+
Added: trunk/reactos/base/applications/tsclient/mstscax/mstscax.vcproj
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/mstscax/mstscax.vcproj (added)
+++ trunk/reactos/base/applications/tsclient/mstscax/mstscax.vcproj Mon Jul 10 03:57:54
2006
@@ -1,0 +1,223 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="mstscax"
+ ProjectGUID="{2C217E9E-9D77-4D6A-9259-216FD56BA56F}"
+ RootNamespace="mstscax"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="kernel32.lib $(NoInherit)"
+ LinkIncremental="2"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="kernel32.lib $(NoInherit)"
+ LinkIncremental="1"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\mstscax.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath=".\stdafx.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added: trunk/reactos/base/applications/tsclient/mstscax/stdafx.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/mstscax/stdafx.cpp (added)
+++ trunk/reactos/base/applications/tsclient/mstscax/stdafx.cpp Mon Jul 10 03:57:54 2006
@@ -1,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+// mstscax.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
Added: trunk/reactos/base/applications/tsclient/mstscax/stdafx.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/mstscax/stdafx.h (added)
+++ trunk/reactos/base/applications/tsclient/mstscax/stdafx.h Mon Jul 10 03:57:54 2006
@@ -1,0 +1,15 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#pragma once
+
+
+#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
+#include <stdio.h>
+#include <tchar.h>
+
+
+
+// TODO: reference additional headers your program requires here
Added:
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
---
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp
(added)
+++
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.cpp
Mon Jul 10 03:57:54 2006
@@ -1,0 +1,998 @@
+#include "stdafx.h"
+
+#include "rdesktop/rdesktop.h"
+#include "rdesktop/proto.h"
+
+extern "C"
+{
+ /* ==== BEGIN POOP ==== */
+ // Temporary implementations of stuff we totally positively need to make the Real Thing
happy
+ /* produce a hex dump */
+ void
+ hexdump(unsigned char *p, unsigned int len)
+ {
+ unsigned char *line = p;
+ int i, thisline;
+ unsigned int offset = 0;
+
+ while (offset < len)
+ {
+ printf("%04x ", offset);
+ thisline = len - offset;
+ if (thisline > 16)
+ thisline = 16;
+
+ for (i = 0; i < thisline; i++)
+ printf("%02x ", line[i]);
+
+ for (; i < 16; i++)
+ printf(" ");
+
+ for (i = 0; i < thisline; i++)
+ printf("%c", (line[i] >= 0x20 && line[i] < 0x7f) ? line[i] :
'.');
+
+ printf("\n");
+ offset += thisline;
+ line += thisline;
+ }
+ }
+
+ void generate_random(uint8 * random)
+ {
+ memcpy(random, "12345678901234567890123456789012", 32);
+ }
+
+ /* report an error */
+ void
+ error(char *format, ...)
+ {
+ va_list ap;
+
+ fprintf(stderr, "ERROR: ");
+
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+ }
+
+ /* report a warning */
+ void
+ warning(char *format, ...)
+ {
+ va_list ap;
+
+ fprintf(stderr, "WARNING: ");
+
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+ }
+
+ /* report an unimplemented protocol feature */
+ void
+ unimpl(char *format, ...)
+ {
+ va_list ap;
+
+ fprintf(stderr, "NOT IMPLEMENTED: ");
+
+ va_start(ap, format);
+ vfprintf(stderr, format, ap);
+ va_end(ap);
+ }
+
+ /* malloc; exit if out of memory */
+ void *
+ xmalloc(int size)
+ {
+ void *mem = malloc(size);
+ if (mem == NULL)
+ {
+ error("xmalloc %d\n", size);
+ exit(1);
+ }
+ return mem;
+ }
+
+ /* strdup */
+ char *
+ xstrdup(const char *s)
+ {
+ char *mem = strdup(s);
+ if (mem == NULL)
+ {
+ perror("strdup");
+ exit(1);
+ }
+ return mem;
+ }
+
+ /* realloc; exit if out of memory */
+ void *
+ xrealloc(void *oldmem, int size)
+ {
+ void *mem;
+
+ if (size < 1)
+ size = 1;
+ mem = realloc(oldmem, size);
+ if (mem == NULL)
+ {
+ error("xrealloc %d\n", size);
+ exit(1);
+ }
+ return mem;
+ }
+
+ /* free */
+ void
+ xfree(void *mem)
+ {
+ free(mem);
+ }
+
+ /* Create the bitmap cache directory */
+ BOOL
+ rd_pstcache_mkdir(void)
+ {
+ char *home;
+ char bmpcache_dir[256];
+
+ home = getenv("HOME");
+
+ if (home == NULL)
+ return False;
+
+ sprintf(bmpcache_dir, "%s/%s", home, ".rdesktop");
+
+ if ((_mkdir(bmpcache_dir) == -1) && errno != EEXIST)
+ {
+ perror(bmpcache_dir);
+ return False;
+ }
+
+ sprintf(bmpcache_dir, "%s/%s", home, ".rdesktop/cache");
+
+ if ((_mkdir(bmpcache_dir) == -1) && errno != EEXIST)
+ {
+ perror(bmpcache_dir);
+ return False;
+ }
+
+ return True;
+ }
+
+ /* open a file in the .rdesktop directory */
+ int
+ rd_open_file(char *filename)
+ {
+ char *home;
+ char fn[256];
+ int fd;
+
+ home = getenv("HOME");
+ if (home == NULL)
+ return -1;
+ sprintf(fn, "%s/.rdesktop/%s", home, filename);
+ fd = _open(fn, _O_RDWR | _O_CREAT, 0);
+ if (fd == -1)
+ perror(fn);
+ return fd;
+ }
+
+ /* close file */
+ void
+ rd_close_file(int fd)
+ {
+ _close(fd);
+ }
+
+ /* read from file*/
+ int
+ rd_read_file(int fd, void *ptr, int len)
+ {
+ return _read(fd, ptr, len);
+ }
+
+ /* write to file */
+ int
+ rd_write_file(int fd, void *ptr, int len)
+ {
+ return _write(fd, ptr, len);
+ }
+
+ /* move file pointer */
+ int
+ rd_lseek_file(int fd, int offset)
+ {
+ return _lseek(fd, offset, SEEK_SET);
+ }
+
+ /* do a write lock on a file */
+ BOOL
+ rd_lock_file(int fd, int start, int len)
+ {
+ // TODOOO...
+ return False;
+ }
+
+ int
+ load_licence(RDPCLIENT * This, unsigned char **data)
+ {
+ char *home, *path;
+ struct stat st;
+ int fd, length;
+
+ home = getenv("HOME");
+ if (home == NULL)
+ return -1;
+
+ path = (char *) xmalloc(strlen(home) + strlen(This->hostname) +
sizeof("/.rdesktop/licence."));
+ sprintf(path, "%s/.rdesktop/licence.%s", home, This->hostname);
+
+ fd = _open(path, O_RDONLY);
+ if (fd == -1)
+ return -1;
+
+ if (fstat(fd, &st))
+ return -1;
+
+ *data = (uint8 *) xmalloc(st.st_size);
+ length = _read(fd, *data, st.st_size);
+ _close(fd);
+ xfree(path);
+ return length;
+ }
+
+ void
+ save_licence(RDPCLIENT * This, unsigned char *data, int length)
+ {
+ char *home, *path, *tmppath;
+ int fd;
+
+ home = getenv("HOME");
+ if (home == NULL)
+ return;
+
+ path = (char *) xmalloc(strlen(home) + strlen(This->hostname) +
sizeof("/.rdesktop/licence."));
+
+ sprintf(path, "%s/.rdesktop", home);
+ if ((_mkdir(path) == -1) && errno != EEXIST)
+ {
+ perror(path);
+ return;
+ }
+
+ /* write licence to licence.hostname.new, then atomically rename to licence.hostname
*/
+
+ sprintf(path, "%s/.rdesktop/licence.%s", home, This->hostname);
+ tmppath = (char *) xmalloc(strlen(path) + sizeof(".new"));
+ strcpy(tmppath, path);
+ strcat(tmppath, ".new");
+
+ fd = _open(tmppath, O_WRONLY | O_CREAT | O_TRUNC, 0600);
+ if (fd == -1)
+ {
+ perror(tmppath);
+ return;
+ }
+
+ if (_write(fd, data, length) != length)
+ {
+ perror(tmppath);
+ _unlink(tmppath);
+ }
+ else if (rename(tmppath, path) == -1)
+ {
+ perror(path);
+ _unlink(tmppath);
+ }
+
+ _close(fd);
+ xfree(tmppath);
+ xfree(path);
+ }
+
+ /* ==== END POOP ==== */
+
+ /* ==== UI ==== */
+ // Globals are totally teh evil, but cut me some slack here
+ HWND hwnd;
+ HBITMAP hbmBuffer;
+ HDC hdcBuffer;
+
+#if 0
+ // NOTE: we don't really need these with rdesktop.c out of the picture
+ BOOL
+ ui_init(RDPCLIENT * This)
+ {
+ return 0;
+ }
+
+ void
+ ui_deinit(RDPCLIENT * This)
+ {
+ }
+
+ BOOL
+ ui_create_window(RDPCLIENT * This)
+ {
+ return 0;
+ }
+#endif
+
+ void
+ ui_resize_window(RDPCLIENT * This)
+ {
+ // TODO
+ }
+
+#if 0
+ void
+ ui_destroy_window(RDPCLIENT * This)
+ {
+ }
+#endif
+
+ int
+ ui_select(RDPCLIENT * This, int rdp_socket)
+ {
+ return 1; // TODO: return 0 for user quit. Or just kill this silly function
+ }
+
+ void
+ ui_move_pointer(RDPCLIENT * This, int x, int y)
+ {
+ // TODO
+ }
+
+ HBITMAP
+ ui_create_bitmap(RDPCLIENT * This, int width, int height, uint8 * data)
+ {
+ void * pBits;
+
+ BITMAPINFOHEADER bmih;
+ BITMAPINFO bmi;
+
+ bmih.biSize = sizeof(bmih);
+ bmih.biWidth = width;
+ bmih.biHeight = - height;
+ bmih.biPlanes = 1;
+ bmih.biBitCount = This->server_depth;
+ bmih.biCompression = BI_RGB;
+ bmih.biSizeImage = 0;
+ bmih.biXPelsPerMeter = 0;
+ bmih.biYPelsPerMeter = 0;
+ bmih.biClrUsed = 0;
+ bmih.biClrImportant = 0;
+
+ bmi.bmiHeader = bmih;
+ memset(bmi.bmiColors, 0, sizeof(bmi.bmiColors));
+
+ return CreateDIBitmap(hdcBuffer, &bmih, CBM_INIT, data, &bmi, DIB_RGB_COLORS);
+ }
+
+ void
+ ui_destroy_bitmap(RDPCLIENT * This, HBITMAP bmp)
+ {
+ DeleteObject(bmp);
+ }
+
+ HGLYPH
+ ui_create_glyph(RDPCLIENT * This, int width, int height, const uint8 * data)
+ {
+ // TODO: create 2bpp mask
+ return 0;
+ }
+
+ void
+ ui_destroy_glyph(RDPCLIENT * This, HGLYPH glyph)
+ {
+ // TODO
+ }
+
+ HCURSOR
+ ui_create_cursor(RDPCLIENT * This, unsigned int x, unsigned int y, int width, int
height,
+ uint8 * andmask, uint8 * xormask)
+ {
+ return CreateCursor(NULL, x, y, width, height, andmask, xormask);
+ }
+
+ void
+ ui_set_cursor(RDPCLIENT * This, HCURSOR cursor)
+ {
+ // TODO
+ }
+
+ void
+ ui_destroy_cursor(RDPCLIENT * This, HCURSOR cursor)
+ {
+ DestroyCursor(cursor);
+ }
+
+ void
+ ui_set_null_cursor(RDPCLIENT * This)
+ {
+ // TODO
+ }
+
+ HCOLOURMAP
+ ui_create_colourmap(RDPCLIENT * This, COLOURMAP * colours)
+ {
+ // TODO: kill HCOLOURMAP/COLOURMAP, use HPALETTE/LOGPALETTE
+ return 0;
+ }
+
+ void
+ ui_destroy_colourmap(RDPCLIENT * This, HCOLOURMAP map)
+ {
+ // TODO: see above
+ }
+
+ void
+ ui_set_colourmap(RDPCLIENT * This, HCOLOURMAP map)
+ {
+ // TODO
+ }
+
+ RECT rcClip; // TODO: initialize
+
+ void
+ ui_set_clip(RDPCLIENT * This, int x, int y, int cx, int cy)
+ {
+ rcClip.left = x;
+ rcClip.top = y;
+ rcClip.right = x + cx - 1;
+ rcClip.bottom = y + cy - 1;
+ SelectObject(hdcBuffer, CreateRectRgnIndirect(&rcClip));
+ }
+
+ void
+ ui_reset_clip(RDPCLIENT * This)
+ {
+ rcClip.left = 0;
+ rcClip.top = 0;
+ rcClip.right = This->width;
+ rcClip.bottom = This->height;
+ SelectObject(hdcBuffer, CreateRectRgnIndirect(&rcClip));
+ }
+
+ void
+ ui_bell(RDPCLIENT * This)
+ {
+ MessageBeep(MB_OK); // TODO? use Beep() on remote sessions?
+ }
+
+ static
+ void
+ win32_repaint_rect(RDPCLIENT * This, const RECT * lprc)
+ {
+ RECT rcDamage;
+ IntersectRect(&rcDamage, lprc, &rcClip);
+ InvalidateRect(hwnd, &rcDamage, FALSE);
+ //Sleep(100);
+ }
+
+ static
+ void
+ win32_repaint_area(RDPCLIENT * This, int x, int y, int cx, int cy)
+ {
+ RECT rcDamage;
+ rcDamage.left = x;
+ rcDamage.top = y;
+ rcDamage.right = x + cx;
+ rcDamage.bottom = y + cy;
+ win32_repaint_rect(This, &rcDamage);
+ }
+
+ static
+ void
+ win32_repaint_poly(RDPCLIENT * This, POINT * point, int npoints, int linewidth)
+ {
+ RECT rcDamage;
+
+ rcDamage.left = MAXLONG;
+ rcDamage.top = MAXLONG;
+ rcDamage.right = 0;
+ rcDamage.bottom = 0;
+
+ for(int i = 0; i < npoints; ++ i)
+ {
+ if(point[i].x < rcDamage.left)
+ rcDamage.left = point[i].x;
+
+ if(point[i].y < rcDamage.top)
+ rcDamage.top = point[i].y;
+
+ if(point[i].x > rcDamage.right)
+ rcDamage.right = point[i].x;
+
+ if(point[i].y > rcDamage.bottom)
+ rcDamage.bottom = point[i].y;
+ }
+
+ InflateRect(&rcDamage, linewidth, linewidth);
+ win32_repaint_rect(This, &rcDamage);
+ }
+
+ static
+ void
+ win32_repaint_whole(RDPCLIENT * This)
+ {
+ InvalidateRgn(hwnd, NULL, FALSE);
+ }
+
+ /*
+ TODO: all of the following could probably be implemented this way:
+ - perform operation on off-screen buffer
+ - invalidate affected region of the window
+ */
+ void
+ ui_paint_bitmap(RDPCLIENT * This, int x, int y, int cx, int cy, int width, int height,
uint8 * data)
+ {
+ BITMAPINFO bmi;
+ ZeroMemory(&bmi, sizeof(bmi));
+
+ bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
+ bmi.bmiHeader.biWidth = width;
+ bmi.bmiHeader.biHeight = - height;
+ bmi.bmiHeader.biPlanes = 1;
+ bmi.bmiHeader.biBitCount = This->server_depth;
+
+ StretchDIBits(hdcBuffer, x, y, cx, cy, 0, 0, width, height, data, &bmi,
DIB_RGB_COLORS, SRCCOPY);
+
+ win32_repaint_area(This, x, y, cx, cy);
+ }
+
+ void
+ ui_destblt(RDPCLIENT * This, uint8 opcode,
+ /* dest */ int x, int y, int cx, int cy)
+ {
+ RECT rc;
+ rc.left = x;
+ rc.top = y;
+ rc.right = x + cx;
+ rc.bottom = y + cy;
+
+ int prev = SetROP2(hdcBuffer, MAKELONG(0, opcode | opcode << 4));
+
+ FillRect(hdcBuffer, &rc, (HBRUSH)GetStockObject(BLACK_BRUSH)); // use Rectangle
instead?
+
+ SetROP2(hdcBuffer, prev);
+
+ win32_repaint_area(This, x, y, cx, cy);
+ }
+
+ void
+ ui_patblt(RDPCLIENT * This, uint8 opcode,
+ /* dest */ int x, int y, int cx, int cy,
+ /* brush */ BRUSH * brush, int bgcolour, int fgcolour)
+ {
+ // TODO
+ win32_repaint_area(This, x, y, cx, cy);
+ }
+
+ void
+ ui_screenblt(RDPCLIENT * This, uint8 opcode,
+ /* dest */ int x, int y, int cx, int cy,
+ /* src */ int srcx, int srcy)
+ {
+ BitBlt(hdcBuffer, x, y, cx, cy, hdcBuffer, srcx, srcy, MAKELONG(0, opcode | opcode
<< 4));
+ win32_repaint_area(This, x, y, cx, cy);
+ }
+
+ void
+ ui_memblt(RDPCLIENT * This, uint8 opcode,
+ /* dest */ int x, int y, int cx, int cy,
+ /* src */ HBITMAP src, int srcx, int srcy)
+ {
+ HDC hdcSrc = CreateCompatibleDC(hdcBuffer);
+ HGDIOBJ hOld = SelectObject(hdcSrc, src);
+
+ BitBlt(hdcBuffer, x, y, cx, cy, hdcSrc, srcx, srcy, MAKELONG(0, opcode | opcode
<< 4));
+
+ DeleteObject(hOld);
+ DeleteDC(hdcSrc);
+
+ win32_repaint_area(This, x, y, cx, cy);
+ }
+
+ void
+ ui_triblt(RDPCLIENT * This, uint8 opcode,
+ /* dest */ int x, int y, int cx, int cy,
+ /* src */ HBITMAP src, int srcx, int srcy,
+ /* brush */ BRUSH * brush, int bgcolour, int fgcolour)
+ {
+ // TODO
+ win32_repaint_area(This, x, y, cx, cy);
+ }
+
+ void
+ ui_line(RDPCLIENT * This, uint8 opcode,
+ /* dest */ int startx, int starty, int endx, int endy,
+ /* pen */ PEN * pen)
+ {
+ HPEN hpen = CreatePen(pen->style, pen->width, pen->colour);
+ HGDIOBJ hOld = SelectObject(hdcBuffer, hpen);
+
+ int prevROP = SetROP2(hdcBuffer, opcode);
+
+ POINT prevPos;
+ MoveToEx(hdcBuffer, startx, starty, &prevPos);
+
+ LineTo(hdcBuffer, endx, endy);
+
+ MoveToEx(hdcBuffer, prevPos.x, prevPos.y, NULL);
+
+ SetROP2(hdcBuffer, prevROP);
+
+ SelectObject(hdcBuffer, hOld);
+
+ RECT rcDamage;
+
+ if(startx < endx)
+ {
+ rcDamage.left = startx;
+ rcDamage.right = endx;
+ }
+ else
+ {
+ rcDamage.left = endx;
+ rcDamage.right = startx;
+ }
+
+ if(starty < endy)
+ {
+ rcDamage.top = starty;
+ rcDamage.bottom = endy;
+ }
+ else
+ {
+ rcDamage.top = endy;
+ rcDamage.bottom = starty;
+ }
+
+ InflateRect(&rcDamage, pen->width, pen->width);
+ win32_repaint_rect(This, &rcDamage);
+ }
+
+ void
+ ui_rect(RDPCLIENT * This,
+ /* dest */ int x, int y, int cx, int cy,
+ /* brush */ int colour)
+ {
+ RECT rc;
+ rc.left = x;
+ rc.top = y;
+ rc.right = x + cx;
+ rc.bottom = y + cy;
+
+ HBRUSH hbr = CreateSolidBrush(colour);
+ FillRect(hdcBuffer, &rc, hbr); // use Rectangle instead?
+ DeleteObject(hbr);
+
+ win32_repaint_rect(This, &rc);
+ }
+
+ void
+ ui_polygon(RDPCLIENT * This, uint8 opcode,
+ /* mode */ uint8 fillmode,
+ /* dest */ POINT * point, int npoints,
+ /* brush */ BRUSH * brush, int bgcolour, int fgcolour)
+ {
+ // TODO: create brush, set fg&bg
+
+ int oldRop = SetROP2(hdcBuffer, opcode);
+ int oldFillMode = SetPolyFillMode(hdcBuffer, fillmode);
+ Polygon(hdcBuffer, point, npoints);
+ SetPolyFillMode(hdcBuffer, oldFillMode);
+ SetROP2(hdcBuffer, oldRop);
+
+ win32_repaint_poly(This, point, npoints, 0);
+ }
+
+ void
+ ui_polyline(RDPCLIENT * This, uint8 opcode,
+ /* dest */ POINT * points, int npoints,
+ /* pen */ PEN * pen)
+ {
+ HPEN hpen = CreatePen(pen->style, pen->width, pen->colour);
+ HGDIOBJ hOld = SelectObject(hdcBuffer, hpen);
+ int oldRop = SetROP2(hdcBuffer, opcode);
+ Polyline(hdcBuffer, points, npoints);
+ SetROP2(hdcBuffer, oldRop);
+ SelectObject(hdcBuffer, hOld);
+
+ win32_repaint_poly(This, points, npoints, pen->width);
+ }
+
+ void
+ ui_ellipse(RDPCLIENT * This, uint8 opcode,
+ /* mode */ uint8 fillmode,
+ /* dest */ int x, int y, int cx, int cy,
+ /* brush */ BRUSH * brush, int bgcolour, int fgcolour)
+ {
+#if 0
+ switch(fillmode)
+ {
+ case 0: // outline // HOW? HOW? WITH WHAT PEN?
+ case 1: // filled // TODO
+ }
+#endif
+ win32_repaint_area(This, x, y, cx, cy);
+ }
+
+ void
+ ui_draw_glyph(RDPCLIENT * This, int mixmode,
+ /* dest */ int x, int y, int cx, int cy,
+ /* src */ HGLYPH glyph, int srcx, int srcy,
+ int bgcolour, int fgcolour)
+ {
+ // TODO!!!
+ }
+
+ void
+ ui_draw_text(RDPCLIENT * This, uint8 font, uint8 flags, uint8 opcode, int mixmode, int
x, int y,
+ int clipx, int clipy, int clipcx, int clipcy,
+ int boxx, int boxy, int boxcx, int boxcy, BRUSH * brush,
+ int bgcolour, int fgcolour, uint8 * text, uint8 length)
+ {
+ // TODO!!!
+ }
+
+ void
+ ui_desktop_save(RDPCLIENT * This, uint32 offset, int x, int y, int cx, int cy)
+ {
+ // TODO (use GetDIBits)
+ }
+
+ void
+ ui_desktop_restore(RDPCLIENT * This, uint32 offset, int x, int y, int cx, int cy)
+ {
+ // TODO (use SetDIBitsToDevice)
+ win32_repaint_whole(This);
+ }
+
+ void
+ ui_begin_update(RDPCLIENT * This)
+ {
+ // TODO? use a mutex to arbitrate access to the off-screen buffer?
+ }
+
+ void
+ ui_end_update(RDPCLIENT * This)
+ {
+ // TODO? use a mutex to arbitrate access to the off-screen buffer?
+ }
+};
+
+static
+LRESULT
+CALLBACK
+mstsc_WndProc
+(
+ HWND hwnd,
+ UINT uMsg,
+ WPARAM wparam,
+ LPARAM lparam
+)
+{
+ // BUGBUG: LongToPtr & PtrToLong will break on Win64
+
+ RDPCLIENT * This = reinterpret_cast<RDPCLIENT *>(LongToPtr(GetWindowLongPtr(hwnd,
GWLP_USERDATA)));
+
+ switch(uMsg)
+ {
+ case WM_CREATE:
+ This = static_cast<RDPCLIENT
*>(reinterpret_cast<LPCREATESTRUCT>(lparam)->lpCreateParams);
+ SetWindowLongPtr(hwnd, GWLP_USERDATA, PtrToLong(This));
+ break;
+
+ case WM_PAINT:
+ // Obscenely simple code for now...
+ {
+ PAINTSTRUCT ps;
+ HDC hdc = BeginPaint(hwnd, &ps);
+
+ BitBlt
+ (
+ hdc,
+ ps.rcPaint.left,
+ ps.rcPaint.top,
+ ps.rcPaint.right - ps.rcPaint.left,
+ ps.rcPaint.bottom - ps.rcPaint.top,
+ hdcBuffer,
+ ps.rcPaint.left,
+ ps.rcPaint.top,
+ SRCCOPY
+ );
+
+ EndPaint(hwnd, &ps);
+ }
+
+ break;
+
+ case WM_SYSKEYDOWN:
+ case WM_KEYDOWN:
+ rdp_send_input
+ (
+ This,
+ GetMessageTime(),
+ RDP_INPUT_SCANCODE,
+ RDP_KEYPRESS | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0),
+ LOBYTE(HIWORD(lparam)),
+ 0
+ );
+
+ break;
+
+ case WM_SYSKEYUP:
+ case WM_KEYUP:
+ rdp_send_input
+ (
+ This,
+ GetMessageTime(),
+ RDP_INPUT_SCANCODE,
+ RDP_KEYRELEASE | (lparam & 0x1000000 ? KBD_FLAG_EXT : 0),
+ LOBYTE(HIWORD(lparam)),
+ 0
+ );
+
+ break;
+
+ default:
+ return DefWindowProc(hwnd, uMsg, wparam, lparam);
+ }
+
+ return 0;
+}
+
+static
+DWORD
+WINAPI
+mstsc_ProtocolIOThread
+(
+ LPVOID lpArgument
+)
+{
+ RDPCLIENT * This = static_cast<RDPCLIENT *>(lpArgument);
+
+ strcpy(This->username, "Hyperion");
+
+ DWORD dw = sizeof(This->hostname);
+ GetComputerNameA(This->hostname, &dw);
+
+ uint32 flags = RDP_LOGON_NORMAL | RDP_LOGON_COMPRESSION | RDP_LOGON_COMPRESSION2;
+
+ rdp_connect(This, "10.0.0.3", flags, "", "", "",
"");
+
+ hdcBuffer = CreateCompatibleDC(NULL);
+
+ BITMAPINFO bmi;
+ bmi.bmiHeader.biSize = sizeof(bmi.bmiHeader);
+ bmi.bmiHeader.biWidth = This->width;
+ bmi.bmiHeader.biHeight = This->height;
+ bmi.bmiHeader.biPlanes = 1;
+ bmi.bmiHeader.biBitCount = This->server_depth;
+ bmi.bmiHeader.biCompression = BI_RGB;
+ bmi.bmiHeader.biSizeImage = 0;
+ bmi.bmiHeader.biXPelsPerMeter = 0;
+ bmi.bmiHeader.biYPelsPerMeter = 0;
+ bmi.bmiHeader.biClrUsed = 0; // TODO! palette displays
+ bmi.bmiHeader.biClrImportant = 0; // TODO! palette displays
+
+ void * p;
+
+ hbmBuffer = CreateDIBSection(hdcBuffer, &bmi, DIB_RGB_COLORS, &p, NULL, 0);
+
+ SelectObject(hdcBuffer, hbmBuffer);
+
+ rcClip.left = 0;
+ rcClip.top = 0;
+ rcClip.right = This->width;
+ rcClip.bottom = This->height;
+
+ BOOL deactivated;
+ uint32 ext_disc_reason;
+
+ rdp_main_loop(This, &deactivated, &ext_disc_reason);
+
+ return 0;
+}
+
+int wmain()
+{
+ WSADATA wsd;
+ WSAStartup(MAKEWORD(2, 2), &wsd);
+
+ static RDPCLIENT This_; // NOTE: this is HUGE and would overflow the stack!
+ ZeroMemory(&This_, sizeof(This_));
+
+ RDPCLIENT * This = &This_;
+
+ /*
+ Threading model for MissTosca:
+ - main thread is the GUI thread. Message loop maintained by caller
+ - protocol I/O is handled in an I/O thread (or thread pool)
+ - extra threads maintained by virtual channel handlers. Virtual channel writes are
thread-neutral
+
+ How we handle drawing: at the moment just an off-screen buffer we dump on-screen when
asked to.
+ Still considering how to draw on-screen directly and *then* buffering off-screen (for
example,
+ when running inside another remote session)
+ */
+
+ // FIXME: keyboard mess
+ This->keylayout = 0x409;
+ This->keyboard_type = 0x4;
+ This->keyboard_subtype = 0x0;
+ This->keyboard_functionkeys = 0xc;
+ This->width = 1024;
+ This->height = 768;
+ This->server_depth = 24;
+ This->bitmap_compression = True;
+ This->sendmotion = True;
+ This->bitmap_cache = True;
+ This->bitmap_cache_persist_enable = False;
+ This->bitmap_cache_precache = True;
+ This->encryption = True;
+ This->packet_encryption = True;
+ This->desktop_save = True;
+ This->polygon_ellipse_orders = True;
+ This->fullscreen = False;
+ This->grab_keyboard = True;
+ This->hide_decorations = False;
+ This->use_rdp5 = True;
+ This->rdpclip = True;
+ This->console_session = False;
+ This->numlock_sync = False;
+ This->seamless_rdp = False;
+ This->rdp5_performanceflags = RDP5_NO_WALLPAPER | RDP5_NO_FULLWINDOWDRAG |
RDP5_NO_MENUANIMATIONS;
+ This->tcp_port_rdp = TCP_PORT_RDP;
+
+#define NOT_SET -1
+ This->cache.bmpcache_lru[0] = NOT_SET;
+ This->cache.bmpcache_lru[1] = NOT_SET;
+ This->cache.bmpcache_lru[2] = NOT_SET;
+ This->cache.bmpcache_mru[0] = NOT_SET;
+ This->cache.bmpcache_mru[1] = NOT_SET;
+ This->cache.bmpcache_mru[2] = NOT_SET;
+
+ WNDCLASS wc;
+ ZeroMemory(&wc, sizeof(wc));
+
+ wc.lpfnWndProc = mstsc_WndProc;
+ wc.hbrBackground = static_cast<HBRUSH>(GetStockObject(HOLLOW_BRUSH));
+ wc.lpszClassName = TEXT("MissTosca_Desktop");
+
+ ATOM a = RegisterClass(&wc);
+
+ hwnd = CreateWindow
+ (
+ MAKEINTATOM(a),
+ NULL,
+ WS_POPUP | WS_VISIBLE,
+ CW_USEDEFAULT,
+ CW_USEDEFAULT,
+ This->width,
+ This->height,
+ NULL,
+ NULL,
+ NULL,
+ This
+ );
+
+ // The righ time to start the protocol thread
+ DWORD dwThreadId;
+ HANDLE hThread = CreateThread(NULL, 0, mstsc_ProtocolIOThread, This, 0,
&dwThreadId);
+
+ // Your standard, garden variety message loop
+ MSG msg;
+
+ while(GetMessage(&msg, NULL, 0, 0))
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+}
+
+// EOF
Added:
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
---
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj
(added)
+++
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/rdesktop-core-tester.vcproj
Mon Jul 10 03:57:54 2006
@@ -1,0 +1,231 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="rdesktop-core-tester"
+ ProjectGUID="{B172A623-E2BD-4E3F-86E6-620548FE255B}"
+ RootNamespace="rdesktopcoretester"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""$(SolutionDir)";"C:\Documents
and Settings\All Users\Documenti\openssl-0.9.8b\inc32""
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="kernel32.lib user32.lib gdi32.lib ws2_32.lib
libeay32.lib advapi32.lib $(NoInherit)"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories=""C:\Documents and Settings\All
Users\Documenti\openssl-0.9.8b\out32""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="1"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""$(SolutionDir)";"C:\Documents
and Settings\All Users\Documenti\openssl-0.9.8b\inc32""
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="2"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="kernel32.lib user32.lib gdi32.lib ws2_32.lib
libeay32.lib advapi32.lib $(NoInherit)"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories=""C:\Documents and Settings\All
Users\Documenti\openssl-0.9.8b\out32""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ <ProjectReference
+ ReferencedProjectIdentifier="{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}"
+ RelativePathToProject=".\rdesktop\rdesktop-core.vcproj"
+ />
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\rdesktop-core-tester.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\stdafx.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath=".\stdafx.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Added:
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.cpp
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.cpp
(added)
+++ trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.cpp
Mon Jul 10 03:57:54 2006
@@ -1,0 +1,8 @@
+// stdafx.cpp : source file that includes just the standard includes
+// rdesktop-core-tester.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
Added:
trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h
(added)
+++ trunk/reactos/base/applications/tsclient/porting-tools/rdesktop-core-tester/stdafx.h
Mon Jul 10 03:57:54 2006
@@ -1,0 +1,18 @@
+#pragma once
+
+#include <assert.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#include <direct.h>
+#include <io.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <winsock2.h>
+
+// EOF
Modified: trunk/reactos/base/applications/tsclient/rdesktop/channels.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/rdesktop/channels.c (original)
+++ trunk/reactos/base/applications/tsclient/rdesktop/channels.c Mon Jul 10 03:57:54 2006
@@ -21,10 +21,13 @@
#include "rdesktop.h"
+// FIXME: header mess
+#if 0
#define CHANNEL_CHUNK_LENGTH 1600
#define CHANNEL_FLAG_FIRST 0x01
#define CHANNEL_FLAG_LAST 0x02
#define CHANNEL_FLAG_SHOW_PROTOCOL 0x10
+#endif
/* FIXME: We should use the information in TAG_SRV_CHANNELS to map RDP5
channels to MCS channels.
Modified: trunk/reactos/base/applications/tsclient/rdesktop/constants.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/rdesktop/constants.h (original)
+++ trunk/reactos/base/applications/tsclient/rdesktop/constants.h Mon Jul 10 03:57:54
2006
@@ -2,7 +2,7 @@
rdesktop: A Remote Desktop Protocol client.
Miscellaneous protocol constants
Copyright (C) Matthew Chapman 1999-2005
-
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
@@ -311,9 +311,10 @@
#define MASK_HAS_BITS(var, mask) ((var & mask)>0)
#define MASK_CHANGE_BIT(var, mask, active) (var = ((var & ~mask) | (active ? mask :
0)))
-/* Clipboard constants, "borrowed" from GCC system headers in
+/* Clipboard constants, "borrowed" from GCC system headers in
the w32 cross compiler */
+#if 0
#define CF_TEXT 1
#define CF_BITMAP 2
#define CF_METAFILEPICT 3
@@ -377,7 +378,6 @@
#define STATUS_NOTIFY_ENUM_DIR 0xc000010c
#define STATUS_CANCELLED 0xc0000120
-
/* RDPDR constants */
#define RDPDR_MAX_DEVICES 0x10
#define DEVICE_TYPE_SERIAL 0x01
@@ -413,7 +413,9 @@
#define exDiscReasonLicenseErrClientEncryption 0x0108
#define exDiscReasonLicenseCantUpgradeLicense 0x0109
#define exDiscReasonLicenseNoRemoteConnections 0x010a
-
+#endif
+
+#if 0
/* SeamlessRDP constants */
#define SEAMLESSRDP_NOTYETMAPPED -1
#define SEAMLESSRDP_NORMAL 0
@@ -425,3 +427,4 @@
#define SEAMLESSRDP_HELLO_RECONNECT 0x0001
#define SEAMLESSRDP_HELLO_HIDDEN 0x0002
+#endif
Modified: trunk/reactos/base/applications/tsclient/rdesktop/licence.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/rdesktop/licence.c (original)
+++ trunk/reactos/base/applications/tsclient/rdesktop/licence.c Mon Jul 10 03:57:54 2006
@@ -19,7 +19,7 @@
*/
#include "rdesktop.h"
-#include <openssl/rc4.h>
+#include <openssl/rc4.h> // TODO: remove dependency on OpenSSL
/* Generate a session key and RC4 keys, given client and server randoms */
static void
Modified: trunk/reactos/base/applications/tsclient/rdesktop/proto.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/rdesktop/proto.h (original)
+++ trunk/reactos/base/applications/tsclient/rdesktop/proto.h Mon Jul 10 03:57:54 2006
@@ -56,6 +56,7 @@
void cliprdr_send_data(RDPCLIENT * This, uint8 * data, uint32 length);
void cliprdr_set_mode(RDPCLIENT * This, const char *optarg);
BOOL cliprdr_init(RDPCLIENT * This);
+#if 0
/* disk.c */
int disk_enum_devices(RDPCLIENT * This, uint32 * id, char *optarg);
NTSTATUS disk_query_information(RDPCLIENT * This, NTHANDLE handle, uint32 info_class,
STREAM out);
@@ -64,6 +65,7 @@
NTSTATUS disk_create_notify(RDPCLIENT * This, NTHANDLE handle, uint32 info_class);
NTSTATUS disk_query_volume_information(RDPCLIENT * This, NTHANDLE handle, uint32
info_class, STREAM out);
NTSTATUS disk_query_directory(RDPCLIENT * This, NTHANDLE handle, uint32 info_class, char
*pattern, STREAM out);
+#endif
/* mppc.c */
int mppc_expand(RDPCLIENT * This, uint8 * data, uint32 clen, uint8 ctype, uint32 * roff,
uint32 * rlen);
/* ewmhints.c */
@@ -153,6 +155,7 @@
char *directory, char *cookie);
void rdp_reset_state(RDPCLIENT * This);
void rdp_disconnect(RDPCLIENT * This);
+#if 0
/* rdpdr.c */
int get_device_index(RDPCLIENT * This, NTHANDLE handle);
void convert_to_unix_filename(char *filename);
@@ -162,6 +165,8 @@
struct async_iorequest *iorq);
void rdpdr_check_fds(RDPCLIENT * This, fd_set * rfds, fd_set * wfds, BOOL timed_out);
BOOL rdpdr_abort_io(RDPCLIENT * This, uint32 fd, uint32 major, NTSTATUS status);
+#endif
+#if 0
/* rdpsnd.c */
void rdpsnd_send_completion(RDPCLIENT * This, uint16 tick, uint8 packet_index);
BOOL rdpsnd_init(RDPCLIENT * This);
@@ -173,6 +178,7 @@
void wave_out_volume(uint16 left, uint16 right);
void wave_out_write(STREAM s, uint16 tick, uint8 index);
void wave_out_play(void);
+#endif
/* secure.c */
void sec_hash_48(uint8 * out, uint8 * in, uint8 * salt1, uint8 * salt2, uint8 salt);
void sec_hash_16(uint8 * out, uint8 * in, uint8 * salt1, uint8 * salt2);
@@ -189,10 +195,12 @@
BOOL sec_reconnect(RDPCLIENT * This, char *server);
void sec_disconnect(RDPCLIENT * This);
void sec_reset_state(RDPCLIENT * This);
+#if 0
/* serial.c */
int serial_enum_devices(RDPCLIENT * This, uint32 * id, char *optarg);
BOOL serial_get_event(RDPCLIENT * This, NTHANDLE handle, uint32 * result);
BOOL serial_get_timeout(RDPCLIENT * This, NTHANDLE handle, uint32 length, uint32 *
timeout, uint32 * itv_timeout);
+#endif
/* tcp.c */
STREAM tcp_init(RDPCLIENT * This, uint32 maxlen);
void tcp_send(RDPCLIENT * This, STREAM s);
@@ -210,6 +218,7 @@
void ui_clip_set_mode(RDPCLIENT * This, const char *optarg);
void xclip_init(RDPCLIENT * This);
void xclip_deinit(RDPCLIENT * This);
+#if 0
/* xkeymap.c */
BOOL xkeymap_from_locale(RDPCLIENT * This, const char *locale);
FILE *xkeymap_open(const char *filename);
@@ -227,6 +236,7 @@
uint16 ui_get_numlock_state(RDPCLIENT * This, unsigned int state);
void reset_modifier_keys(RDPCLIENT * This);
void rdp_send_scancode(RDPCLIENT * This, uint32 time, uint16 flags, uint8 scancode);
+#endif
/* xwin.c */
BOOL get_key_state(RDPCLIENT * This, unsigned int state, uint32 keysym);
BOOL ui_init(RDPCLIENT * This);
Added: trunk/reactos/base/applications/tsclient/rdesktop/rdesktop-core.vcproj
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/rdesktop/rdesktop-core.vcproj (added)
+++ trunk/reactos/base/applications/tsclient/rdesktop/rdesktop-core.vcproj Mon Jul 10
03:57:54 2006
@@ -1,0 +1,255 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="rdesktop-core"
+ ProjectGUID="{8620E9B2-9AF0-4F69-A5AF-C195D5F86372}"
+ Keyword="Win32Proj"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="Debug"
+ IntermediateDirectory="Debug"
+ ConfigurationType="4"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""C:\Documents and Settings\All
Users\Documenti\openssl-0.9.8b\inc32""
+ PreprocessorDefinitions="WIN32;_DEBUG;_LIB;WITH_DEBUG;"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="Release"
+ IntermediateDirectory="Release"
+ ConfigurationType="4"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""C:\Documents and Settings\All
Users\Documenti\openssl-0.9.8b\inc32""
+ PreprocessorDefinitions="WIN32;NDEBUG;_LIB;"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLibrarianTool"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath=".\constants.h"
+ >
+ </File>
+ <File
+ RelativePath=".\disk.h"
+ >
+ </File>
+ <File
+ RelativePath=".\orders.h"
+ >
+ </File>
+ <File
+ RelativePath=".\parse.h"
+ >
+ </File>
+ <File
+ RelativePath=".\proto.h"
+ >
+ </File>
+ <File
+ RelativePath=".\rdesktop.h"
+ >
+ </File>
+ <File
+ RelativePath=".\scancodes.h"
+ >
+ </File>
+ <File
+ RelativePath=".\seamless.h"
+ >
+ </File>
+ <File
+ RelativePath=".\types.h"
+ >
+ </File>
+ <File
+ RelativePath=".\xproto.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+ >
+ </Filter>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath=".\bitmap.c"
+ >
+ </File>
+ <File
+ RelativePath=".\cache.c"
+ >
+ </File>
+ <File
+ RelativePath=".\channels.c"
+ >
+ </File>
+ <File
+ RelativePath=".\iso.c"
+ >
+ </File>
+ <File
+ RelativePath=".\licence.c"
+ >
+ </File>
+ <File
+ RelativePath=".\mcs.c"
+ >
+ </File>
+ <File
+ RelativePath=".\mppc.c"
+ >
+ </File>
+ <File
+ RelativePath=".\orders.c"
+ >
+ </File>
+ <File
+ RelativePath=".\pstcache.c"
+ >
+ </File>
+ <File
+ RelativePath=".\rdp.c"
+ >
+ </File>
+ <File
+ RelativePath=".\rdp5.c"
+ >
+ </File>
+ <File
+ RelativePath=".\secure.c"
+ >
+ </File>
+ <File
+ RelativePath=".\tcp.c"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Modified: trunk/reactos/base/applications/tsclient/rdesktop/rdesktop.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/rdesktop/rdesktop.h (original)
+++ trunk/reactos/base/applications/tsclient/rdesktop/rdesktop.h Mon Jul 10 03:57:54 2006
@@ -18,6 +18,14 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
+
+#include <windows.h>
+#include <cchannel.h>
+
+#if 0
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -32,14 +40,18 @@
#include <limits.h> /* PATH_MAX */
/* FIXME FIXME */
+#include <windows.h>
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+/* FIXME FIXME */
+#endif
+
+// TODO
#include <openssl/rc4.h>
#include <openssl/md5.h>
#include <openssl/sha.h>
#include <openssl/bn.h>
#include <openssl/x509v3.h>
-#include <X11/Xlib.h>
-#include <X11/Xatom.h>
-/* FIXME FIXME */
#define VERSION "1.4.1"
@@ -128,6 +140,7 @@
#include "types.h"
#include "orders.h"
+#if 0
/* Used to store incoming io request, until they are ready to be completed */
/* using a linked list ensures that they are processed in the right order, */
/* if multiple ios are being done on the same fd */
@@ -141,6 +154,7 @@
struct async_iorequest *next; /* next element in list */
};
+#endif
struct bmpcache_entry
{
@@ -149,6 +163,7 @@
sint16 next;
};
+#if 0
typedef struct _seamless_group
{
Window wnd;
@@ -174,32 +189,24 @@
struct _seamless_window *next;
} seamless_window;
+#endif
/* holds the whole state of the RDP client */
struct rdpclient
{
- /* Public fields */
/* channels.c */
#define MAX_CHANNELS 6
VCHANNEL channels[MAX_CHANNELS];
unsigned int num_channels;
- /* disk.c */
-#define MAX_OPEN_FILES 0x100
- FILEINFO fileinfo[MAX_OPEN_FILES];
- BOOL notify_stamp;
-
- /* ewmhints.c */
- Atom net_wm_state_atom, net_wm_desktop_atom;
-
/* licence.c */
BOOL licence_issued;
+ /* mcs.c */
+ uint16 mcs_userid;
+
/* mppc.c */
RDPCOMP mppc_dict;
-
- /* mcs.c */
- uint16 mcs_userid;
/* pstcache.c */
int pstcache_fd[8];
@@ -210,7 +217,7 @@
char title[64];
char username[64];
char hostname[16];
- char keymapname[PATH_MAX];
+ char keymapname[MAX_PATH];
unsigned int keylayout;
int keyboard_type;
int keyboard_subtype;
@@ -259,17 +266,101 @@
char redirect_cookie[128];
uint32 redirect_flags;
-#ifdef WITH_RDPSND
- BOOL rdpsnd_enabled;
-#endif
-
-#ifdef HAVE_ICONV
- char codepage[16];
-#endif
-
/* rdp.c */
uint8 *next_packet;
uint32 rdp_shareid;
+
+ /* secure.c */
+ uint16 server_rdp_version;
+
+ /* tcp.c */
+ int tcp_port_rdp;
+
+ /* cache.c */
+ struct cache_
+ {
+ struct bmpcache_entry bmpcache[3][0xa00];
+ HBITMAP volatile_bc[3];
+
+ int bmpcache_lru[3];
+ int bmpcache_mru[3];
+ int bmpcache_count[3];
+
+ FONTGLYPH fontcache[12][256];
+ DATABLOB textcache[256];
+ uint8 deskcache[0x38400 * 4];
+ HCURSOR cursorcache[0x20];
+ }
+ cache;
+
+ /* licence.c */
+ struct licence_
+ {
+ uint8 key[16];
+ uint8 sign_key[16];
+ }
+ licence;
+
+ /* orders.c */
+ struct orders_
+ {
+ RDP_ORDER_STATE order_state;
+ }
+ orders;
+
+ /* rdp.c */
+ struct rdp_
+ {
+#if WITH_DEBUG
+ uint32 packetno;
+#endif
+
+#ifdef HAVE_ICONV
+ BOOL iconv_works;
+#endif
+ }
+ rdp;
+
+ /* secure.c */
+ struct secure_
+ {
+ int rc4_key_len;
+ RC4_KEY rc4_decrypt_key;
+ RC4_KEY rc4_encrypt_key;
+ RSA *server_public_key;
+ uint32 server_public_key_len;
+
+ uint8 sign_key[16];
+ uint8 decrypt_key[16];
+ uint8 encrypt_key[16];
+ uint8 decrypt_update_key[16];
+ uint8 encrypt_update_key[16];
+ uint8 crypted_random[SEC_MAX_MODULUS_SIZE];
+
+ /* These values must be available to reset state - Session Directory */
+ int encrypt_use_count;
+ int decrypt_use_count;
+ }
+ secure;
+
+ /* tcp.c */
+ struct tcp_
+ {
+ int sock;
+ struct stream in;
+ struct stream out;
+ }
+ tcp;
+
+#if 0
+ /* Public fields */
+ /* disk.c */
+#define MAX_OPEN_FILES 0x100
+ FILEINFO fileinfo[MAX_OPEN_FILES];
+ BOOL notify_stamp;
+
+ /* ewmhints.c */
+ Atom net_wm_state_atom, net_wm_desktop_atom;
/* rdpdr.c */
/* If select() times out, the request for the device with handle min_timeout_fd is
aborted */
@@ -288,38 +379,17 @@
BOOL dsp_busy;
#endif
- /* secure.c */
- uint16 server_rdp_version;
-
- /* tcp.c */
- int tcp_port_rdp;
-
+#if 0
/* xwin.c */
Display *display;
BOOL enable_compose;
BOOL Unobscured; /* used for screenblt */
Time last_gesturetime;
Window wnd;
+#endif
/* Private fields */
/* FIXME: it's not pretty to spill private fields this way. Use opaque pointers */
- /* cache.c */
- struct cache_
- {
- struct bmpcache_entry bmpcache[3][0xa00];
- HBITMAP volatile_bc[3];
-
- int bmpcache_lru[3];
- int bmpcache_mru[3];
- int bmpcache_count[3];
-
- FONTGLYPH fontcache[12][256];
- DATABLOB textcache[256];
- uint8 deskcache[0x38400 * 4];
- HCURSOR cursorcache[0x20];
- }
- cache;
-
/* cliprdr.c */
struct cliprdr_
{
@@ -337,34 +407,6 @@
}
ewmhints;
- /* licence.c */
- struct licence_
- {
- uint8 key[16];
- uint8 sign_key[16];
- }
- licence;
-
- /* orders.c */
- struct orders_
- {
- RDP_ORDER_STATE order_state;
- }
- orders;
-
- /* rdp.c */
- struct rdp_
- {
-#if WITH_DEBUG
- uint32 packetno;
-#endif
-
-#ifdef HAVE_ICONV
- BOOL iconv_works;
-#endif
- }
- rdp;
-
/* rdpdr.c */
struct rdpdr_
{
@@ -394,37 +436,6 @@
unsigned int serial;
}
seamless;
-
- /* secure.c */
- struct secure_
- {
- int rc4_key_len;
- RC4_KEY rc4_decrypt_key;
- RC4_KEY rc4_encrypt_key;
- RSA *server_public_key;
- uint32 server_public_key_len;
-
- uint8 sign_key[16];
- uint8 decrypt_key[16];
- uint8 encrypt_key[16];
- uint8 decrypt_update_key[16];
- uint8 encrypt_update_key[16];
- uint8 crypted_random[SEC_MAX_MODULUS_SIZE];
-
- /* These values must be available to reset state - Session Directory */
- int encrypt_use_count;
- int decrypt_use_count;
- }
- secure;
-
- /* tcp.c */
- struct tcp_
- {
- int sock;
- struct stream in;
- struct stream out;
- }
- tcp;
/* xclip.c */
struct xclip_
@@ -520,6 +531,7 @@
}
xkeymap;
+#if 0
/* xwin.c */
struct xwin_
{
@@ -565,9 +577,9 @@
binary format. If so, we can avoid an expensive translation.
Note that this can be true when compatible_arch is false,
e.g.:
-
+
RDP(LE) <-> host(BE) <-> X-Server(LE)
-
+
('host' is the machine running rdesktop; the host simply memcpy's
so its endianess doesn't matter)
*/
@@ -595,6 +607,8 @@
XErrorHandler old_error_handler;
}
xwin;
+#endif
+#endif
};
#ifndef MAKE_PROTO
Modified: trunk/reactos/base/applications/tsclient/rdesktop/rdp.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/rdesktop/rdp.c (original)
+++ trunk/reactos/base/applications/tsclient/rdesktop/rdp.c Mon Jul 10 03:57:54 2006
@@ -20,7 +20,7 @@
#include <time.h>
#include <errno.h>
-#include <unistd.h>
+//#include <unistd.h>
#include "rdesktop.h"
#ifdef HAVE_ICONV
@@ -932,7 +932,7 @@
rdp_recv(This, &type); /* RDP_CTL_COOPERATE */
rdp_recv(This, &type); /* RDP_CTL_GRANT_CONTROL */
rdp_send_input(This, 0, RDP_INPUT_SYNCHRONIZE, 0,
- This->numlock_sync ? ui_get_numlock_state(This, read_keyboard_state(This)) :
0, 0);
+ /*This->numlock_sync ? ui_get_numlock_state(This, read_keyboard_state(This))
:*/ 0, 0); // TODO: keyboard mess
if (This->use_rdp5)
{
@@ -968,7 +968,7 @@
in_uint8p(s, mask, masklen);
cursor = ui_create_cursor(This, x, y, width, height, mask, data);
ui_set_cursor(This, cursor);
- cache_put_cursor(This, cache_idx, cursor);
+ // cache_put_cursor(This, cache_idx, cursor); // TODO
}
/* Process a cached pointer PDU */
@@ -978,7 +978,7 @@
uint16 cache_idx;
in_uint16_le(s, cache_idx);
- ui_set_cursor(This, cache_get_cursor(This, cache_idx));
+ ui_set_cursor(This, /*cache_get_cursor(This, cache_idx)*/ NULL); // TODO
}
/* Process a system pointer PDU */
Modified: trunk/reactos/base/applications/tsclient/rdesktop/secure.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/rdesktop/secure.c (original)
+++ trunk/reactos/base/applications/tsclient/rdesktop/secure.c Mon Jul 10 03:57:54 2006
@@ -19,7 +19,9 @@
*/
#include "rdesktop.h"
-
+#include <string.h>
+
+// TODO: remove dependency on OpenSSL
#include <openssl/rc4.h>
#include <openssl/md5.h>
#include <openssl/sha.h>
Modified: trunk/reactos/base/applications/tsclient/rdesktop/tcp.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/rdesktop/tcp.c (original)
+++ trunk/reactos/base/applications/tsclient/rdesktop/tcp.c Mon Jul 10 03:57:54 2006
@@ -18,6 +18,7 @@
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#if 0 // FIXME: header mess
#include <unistd.h> /* select read write close */
#include <sys/socket.h> /* socket connect setsockopt */
#include <sys/time.h> /* timeval */
@@ -26,7 +27,12 @@
#include <netinet/tcp.h> /* TCP_NODELAY */
#include <arpa/inet.h> /* inet_addr */
#include <errno.h> /* errno */
+#endif
+
#include "rdesktop.h"
+#include <winsock2.h>
+
+typedef int socklen_t;
#ifndef INADDR_NONE
#define INADDR_NONE ((unsigned long) -1)
@@ -59,7 +65,7 @@
sent = send(This->tcp.sock, s->data + total, length - total, 0);
if (sent <= 0)
{
- error("send: %s\n", strerror(errno));
+ // error("send: %s\n", strerror(errno)); // EOF
return;
}
@@ -109,7 +115,7 @@
rcvd = recv(This->tcp.sock, s->end, length, 0);
if (rcvd < 0)
{
- error("recv: %s\n", strerror(errno));
+ // error("recv: %s\n", strerror(errno)); // EOF
return NULL;
}
else if (rcvd == 0)
@@ -188,7 +194,7 @@
if ((This->tcp.sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
- error("socket: %s\n", strerror(errno));
+ // error("socket: %s\n", strerror(errno)); // EOF
return False;
}
@@ -197,7 +203,7 @@
if (connect(This->tcp.sock, (struct sockaddr *) &servaddr, sizeof(struct
sockaddr)) < 0)
{
- error("connect: %s\n", strerror(errno));
+ // error("connect: %s\n", strerror(errno)); // EOF
close(This->tcp.sock);
return False;
}
Modified: trunk/reactos/base/applications/tsclient/rdesktop/types.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/tsclient…
==============================================================================
--- trunk/reactos/base/applications/tsclient/rdesktop/types.h (original)
+++ trunk/reactos/base/applications/tsclient/rdesktop/types.h Mon Jul 10 03:57:54 2006
@@ -2,7 +2,7 @@
rdesktop: A Remote Desktop Protocol client.
Common data types
Copyright (C) Matthew Chapman 1999-2005
-
+
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
@@ -12,13 +12,15 @@
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
-
+
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+#if 0
typedef int BOOL;
+#endif
#ifndef True
#define True (1)
@@ -32,17 +34,25 @@
typedef unsigned int uint32;
typedef signed int sint32;
+// TODO: detect Win32, avoid this mess
+#if 0
typedef void *HBITMAP;
+typedef void *HCURSOR;
+#endif
typedef void *HGLYPH;
+
+// TODO: nuke, use HPALETTE
typedef void *HCOLOURMAP;
-typedef void *HCURSOR;
-
+
+#if 0
typedef struct _POINT
{
sint16 x, y;
}
POINT;
-
+#endif
+
+// TODO: nuke, use COLORREF
typedef struct _COLOURENTRY
{
uint8 red;
@@ -52,6 +62,7 @@
}
COLOURENTRY;
+// TODO: nuke, use LOGPALETTE
typedef struct _COLOURMAP
{
uint16 ncolours;
@@ -60,6 +71,7 @@
}
COLOURMAP;
+// TODO: nuke, use RECT
typedef struct _BOUNDS
{
sint16 left;
@@ -70,7 +82,8 @@
}
BOUNDS;
-typedef struct _PEN
+// TODO: nuke, use LOGPEN
+typedef struct _PEN
{
uint8 style;
uint8 width;
@@ -79,6 +92,7 @@
}
PEN;
+// TODO: nuke, use LOGBRUSH + pattern[8]
typedef struct _BRUSH
{
uint8 xorigin;
@@ -119,6 +133,7 @@
}
key_translation;
+// TODO: semi-nuke, wrap CHANNEL_DEF
typedef struct _VCHANNEL
{
uint16 mcs_id;
@@ -145,6 +160,7 @@
#define MAX_CBSIZE 256
/* RDPSND */
+#if 0
typedef struct
{
uint16 wFormatTag;
@@ -156,7 +172,7 @@
uint16 cbSize;
uint8 cb[MAX_CBSIZE];
} WAVEFORMATEX;
-
+#endif
typedef struct _RDPCOMP
{
uint32 roff;
@@ -165,6 +181,7 @@
}
RDPCOMP;
+#if 0
/* RDPDR */
typedef uint32 NTSTATUS;
typedef uint32 NTHANDLE;
@@ -264,5 +281,6 @@
uint32 info_class;
}
FILEINFO;
+#endif
typedef BOOL(*str_handle_lines_t) (RDPCLIENT * This, const char *line, void *data);