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);