<html>
<head>
<style>
<!--
body { background-color:#ffffff }
.file { border:1px solid #eeeeee; margin-top:1em; margin-bottom:1em }
.pathname { font-family:monospace; float:right }
.fileheader { margin-bottom:.5em }
.diff { margin:0 }
.tasklist { padding:4px; border:1px dashed #000000; margin-top:1em }
.tasklist ul { margin-top:0; margin-bottom:0 }
tr.alt { background-color:#eeeeee }
#added { background-color:#ddffdd }
#addedchars { background-color:#99ff99; font-weight:bolder }
tr.alt #added { background-color:#ccf7cc }
#removed { background-color:#ffdddd }
#removedchars { background-color:#ff9999; font-weight:bolder }
tr.alt #removed { background-color:#f7cccc }
#info { color:#888888 }
#context { background-color:#eeeeee }
td {padding-left:.3em; padding-right:.3em }
tr.head { border-bottom-width:1px; border-bottom-style:solid }
tr.head td { padding:0; padding-top:.2em }
.task { background-color:#ffff00 }
.comment { padding:4px; border:1px dashed #000000; background-color:#ffffdd }
.error { color:red }
hr { border-width:0px; height:2px; background:black }
-->
</style>
</head>
<body>
<pre class="comment">CSR pre-init cleanup</pre><pre class="diff" id="context">Modified: trunk/reactos/subsys/csrss/api/wapi.c
Modified: trunk/reactos/subsys/csrss/csrss.c
Modified: trunk/reactos/subsys/csrss/include/api.h
Modified: trunk/reactos/subsys/csrss/init.c
</pre><hr /><div class="file">
<div class="fileheader"><big><b>Modified: trunk/reactos/subsys/csrss/api/wapi.c</b></big></div>
<pre class="diff"><small id="info">--- trunk/reactos/subsys/csrss/api/wapi.c        2005-02-25 21:22:05 UTC (rev 13747)
+++ trunk/reactos/subsys/csrss/api/wapi.c        2005-02-26 15:06:19 UTC (rev 13748)
@@ -2,7 +2,7 @@
</small></pre><pre class="diff" id="context"> &nbsp;* 
 &nbsp;* reactos/subsys/csrss/api/wapi.c
 &nbsp;*
</pre><pre class="diff" id="removed">- * <span id="removedchars">Initialize the CSRSS subsystem server process.</span>
</pre><pre class="diff" id="added">+ * <span id="addedchars">CSRSS port message processing</span>
</pre><pre class="diff" id="context"> &nbsp;*
 &nbsp;* ReactOS Operating System
 &nbsp;*
@@ -147,14 +147,14 @@
</pre><pre class="diff" id="context"> 
 /**********************************************************************
 &nbsp;* NAME
</pre><pre class="diff" id="removed">- *        <span id="removedchars">Thread_Api</span>
</pre><pre class="diff" id="added">+ *        <span id="addedchars">ServerApiPortThread/1</span>
</pre><pre class="diff" id="context"> &nbsp;*
 &nbsp;* DESCRIPTION
 &nbsp;*         Handle connection requests from clients to the port
 &nbsp;*         &quot;\Windows\ApiPort&quot;.
 &nbsp;*/
 void STDCALL
</pre><pre class="diff" id="removed">-ServerApiPortTh<span id="removedchars">ead</span>(PVOID PortHandle)
</pre><pre class="diff" id="added">+ServerApiPortTh<span id="addedchars">read </span>(PVOID PortHandle)
</pre><pre class="diff" id="context"> {
 &nbsp; &nbsp;NTSTATUS Status;
 &nbsp; &nbsp;LPC_MAX_MESSAGE Request;
@@ -232,4 +232,51 @@
</pre><pre class="diff" id="context"> &nbsp; &nbsp;NtTerminateThread(NtCurrentThread(), Status);
 }
 
</pre><pre class="diff" id="added">+/**********************************************************************
+ * NAME
+ *        ServerSbApiPortThread/1
+ *
+ * DESCRIPTION
+ *         Handle connection requests from SM to the port
+ *         &quot;\Windows\SbApiPort&quot;.
+ */
+VOID STDCALL
+ServerSbApiPortThread (PVOID PortHandle)
+{
+        HANDLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hSbApiPortListen = (HANDLE) PortHandle;
+        HANDLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;hConnectedPort = (HANDLE) 0;
+        LPC_MAX_MESSAGE Request = {{0}};
+        NTSTATUS &nbsp; &nbsp; &nbsp; &nbsp;Status = STATUS_SUCCESS;
+
+        while (TRUE)
+        {
+                Status = NtListenPort (hSbApiPortListen, &amp; Request.Header);
+                if (!NT_SUCCESS(Status))
+                {
+                        DPRINT1(&quot;CSR: %s: NtListenPort(SB) failed\n&quot;, __FUNCTION__);
+                        break;
+                }
+                Status = NtAcceptConnectPort (&amp; hConnectedPort,
+                                                hSbApiPortListen,
+         &nbsp;                                         NULL,
+         &nbsp;                                         TRUE,
+         &nbsp;                                         NULL,
+         &nbsp;                                         NULL);
+                if(!NT_SUCCESS(Status))
+                {
+                        DPRINT1(&quot;CSR: %s: NtAcceptConnectPort() failed\n&quot;, __FUNCTION__);
+                        break;
+                }
+                Status = NtCompleteConnectPort (hConnectedPort);
+                if(!NT_SUCCESS(Status))
+                {
+                        DPRINT1(&quot;CSR: %s: NtCompleteConnectPort() failed\n&quot;, __FUNCTION__);
+                        break;
+                }
+                /* TODO: create thread for the connected port */
+        }
+        NtClose (hSbApiPortListen);
+        NtTerminateThread (NtCurrentThread(), Status);
+}
+
</pre><pre class="diff" id="context"> /* EOF */
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: trunk/reactos/subsys/csrss/csrss.c</b></big></div>
<pre class="diff"><small id="info">--- trunk/reactos/subsys/csrss/csrss.c        2005-02-25 21:22:05 UTC (rev 13747)
+++ trunk/reactos/subsys/csrss/csrss.c        2005-02-26 15:06:19 UTC (rev 13748)
@@ -38,42 +38,75 @@
</small></pre><pre class="diff" id="context"> 
 #include &quot;api.h&quot;
 
</pre><pre class="diff" id="removed">-/* Native process' entry point */
</pre><pre class="diff" id="added">+#define NDEBUG
+#include &lt;debug.h&gt;
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-VOID STDCALL NtProcessStartup(PPEB Peb)
</pre><pre class="diff" id="added">+#define CSRP_MAX_ARGUMENT_COUNT 512
+
+typedef struct _COMMAND_LINE_ARGUMENT
</pre><pre class="diff" id="context"> {
</pre><pre class="diff" id="removed">- &nbsp; PRTL_USER_PROCESS_PARAMETERS ProcParams;
- &nbsp; PWSTR ArgBuffer;
- &nbsp; PWSTR *argv;
- &nbsp; ULONG argc = 0;
- &nbsp; int i = 0;
- &nbsp; int afterlastspace = 0;
- &nbsp; OBJECT_ATTRIBUTES ObjectAttributes;
- &nbsp; HANDLE CsrssInitEvent;
- &nbsp; UNICODE_STRING UnicodeString;
-<span id="removedchars"> &nbsp; NTSTATUS Status</span>;
</pre><pre class="diff" id="added">+<span id="addedchars">        ULONG                Count</span>;
+        UNICODE_STRING        Buffer;
+        PWSTR                * Vector;
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-<span id="removedchars"> &nbsp; ProcParams = RtlNormalizeProcessParams (Peb-&gt;ProcessParameters)</span>;
</pre><pre class="diff" id="added">+<span id="addedchars">} COMMAND_LINE_ARGUMENT, *PCOMMAND_LINE_ARGUMENT</span>;
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">- &nbsp; argv = (PWSTR *)RtlAllocateHeap (Peb-&gt;ProcessHeap,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0, 512 * sizeof(PWSTR));
- &nbsp; ArgBuffer = (PWSTR)RtlAllocateHeap (Peb-&gt;ProcessHeap,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ProcParams-&gt;CommandLine.Length + sizeof(WCHAR));
- &nbsp; memcpy (ArgBuffer,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ProcParams-&gt;CommandLine.Buffer,
- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ProcParams-&gt;CommandLine.Length + sizeof(WCHAR));
</pre><pre class="diff" id="added">+/**********************************************************************
+ * NAME                                                        PRIVATE
+ *         CsrpParseCommandLine/3
+ */
+static NTSTATUS STDCALL
+CsrpParseCommandLine (HANDLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ProcessHeap,
+                 &nbsp; &nbsp; &nbsp;PRTL_USER_PROCESS_PARAMETERS RtlProcessParameters,
+                 &nbsp; &nbsp; &nbsp;PCOMMAND_LINE_ARGUMENT &nbsp; &nbsp; &nbsp; Argument)
+{
+ &nbsp; INT i = 0;
+ &nbsp; INT afterlastspace = 0;
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">- &nbsp; <span id="removedchars">while (ArgBuffer[i])</span>
</pre><pre class="diff" id="added">+ &nbsp; 
+ &nbsp; DPRINT(&quot;CSR: %s called\n&quot;, __FUNCTION__);
+
+ &nbsp; RtlZeroMemory (Argument, sizeof (COMMAND_LINE_ARGUMENT));
+
+ &nbsp; Argument-&gt;Vector = (PWSTR *) RtlAllocateHeap (ProcessHeap,
+                                                 0,
+                                                 (CSRP_MAX_ARGUMENT_COUNT * sizeof Argument-&gt;Vector[0]));
+ &nbsp; if(NULL == Argument-&gt;Vector)
+ &nbsp; {
+         &nbsp; DPRINT(&quot;CSR: %s: no memory for Argument-&gt;Vector\n&quot;, __FUNCTION__);
+         &nbsp; return STATUS_NO_MEMORY;
+ &nbsp; }
+
+ &nbsp; Argument-&gt;Buffer.Length =
+ &nbsp; Argument-&gt;Buffer.MaximumLength =
+ &nbsp;         RtlProcessParameters-&gt;CommandLine.Length
+        + sizeof Argument-&gt;Buffer.Buffer [0]; /* zero terminated */
+ &nbsp; Argument-&gt;Buffer.Buffer =
+        (PWSTR) RtlAllocateHeap (ProcessHeap,
+                                 0,
+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Argument-&gt;Buffer.MaximumLength);
+ &nbsp; if(NULL == Argument-&gt;Buffer.Buffer)
+ &nbsp; {
+         &nbsp; DPRINT(&quot;CSR: %s: no memory for Argument-&gt;Buffer.Buffer\n&quot;, __FUNCTION__);
+         &nbsp; return STATUS_NO_MEMORY;
+ &nbsp; }
+
+ &nbsp; RtlCopyMemory (Argument-&gt;Buffer.Buffer,
+                 &nbsp;RtlProcessParameters-&gt;CommandLine.Buffer,
+                 &nbsp;RtlProcessParameters-&gt;CommandLine.Length);
+
+ &nbsp; while (Argument-&gt;Buffer.Buffer [i])
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp;{
</pre><pre class="diff" id="removed">-        if (ArgBuffer[i] == L' ')
</pre><pre class="diff" id="added">+        if (Arg<span id="addedchars">ument-&gt;Buffer.</span>Buffer[i] == L' ')
</pre><pre class="diff" id="context">          &nbsp;{
</pre><pre class="diff" id="removed">-         &nbsp; &nbsp; argc++;
-         &nbsp; &nbsp; ArgBuffer[i] = L'\0';
-         &nbsp; &nbsp; <span id="removedchars">argv[argc-1] = &amp;(ArgBuffer[afterlastspace])</span>;
</pre><pre class="diff" id="added">+         &nbsp; &nbsp; <span id="addedchars">Argument-&gt;Count ++</span>;
+         &nbsp; &nbsp; Argument-&gt;Buffer.Buffer [i] = L'\0';
+         &nbsp; &nbsp; Argument-&gt;Vector [Argument-&gt;Count - 1] = &amp; (Argument-&gt;Buffer.Buffer [afterlastspace]);
</pre><pre class="diff" id="context">          &nbsp; &nbsp; i++;
</pre><pre class="diff" id="removed">-         &nbsp; &nbsp; while (Arg<span id="removedchars">Buffer</span>[i] == L' ')
</pre><pre class="diff" id="added">+         &nbsp; &nbsp; while (Arg<span id="addedchars">ument-&gt;Buffer.Buffer </span>[i] == L' ')
+         &nbsp; &nbsp; {
</pre><pre class="diff" id="context">                 i++;
</pre><pre class="diff" id="added">+         &nbsp; &nbsp; }
</pre><pre class="diff" id="context">          &nbsp; &nbsp; afterlastspace = i;
          &nbsp;}
         else
@@ -82,56 +115,122 @@
</pre><pre class="diff" id="context">          &nbsp;}
 &nbsp; &nbsp; &nbsp;}
 
</pre><pre class="diff" id="removed">- &nbsp; if (Arg<span id="removedchars">Buffer</span>[afterlastspace] != L'\0')
</pre><pre class="diff" id="added">+ &nbsp; if (Arg<span id="addedchars">ument-&gt;Buffer.Buffer </span>[afterlastspace] != L'\0')
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp;{
</pre><pre class="diff" id="removed">-        argc++;
-        ArgBuffer[i] = L'\0';
-        <span id="removedchars">argv[argc-1] = &amp;(ArgBuffer[afterlastspace])</span>;
</pre><pre class="diff" id="added">+        <span id="addedchars">Argument-&gt;Count ++</span>;
+        Argument-&gt;Buffer.Buffer [i] = L'\0';
+        Argument-&gt;Vector [Argument-&gt;Count - 1] = &amp; (Argument-&gt;Buffer.Buffer [afterlastspace]);
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp;}
</pre><pre class="diff" id="removed">- &nbsp; 
- &nbsp; RtlRosInitUnicodeStringFromLiteral(&amp;UnicodeString,
</pre><pre class="diff" id="added">+
+ &nbsp;return STATUS_SUCCESS; 
+}
+
+/**********************************************************************
+ * NAME                                                        PRIVATE
+ *         CsrpFreeCommandLine/2
+ */
+                 &nbsp; &nbsp; &nbsp;
+static VOID STDCALL
+CsrpFreeCommandLine (HANDLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ProcessHeap,
+                 &nbsp; &nbsp; PCOMMAND_LINE_ARGUMENT Argument)
+{
+        DPRINT(&quot;CSR: %s called\n&quot;, __FUNCTION__);
+        
+        RtlFreeHeap (ProcessHeap,
+         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,
+                 &nbsp; &nbsp; Argument-&gt;Vector);
+        RtlFreeHeap (ProcessHeap,
+         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,
+         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Argument-&gt;Buffer.Buffer);
+}
+
+
+/**********************************************************************
+ * NAME                                                        PRIVATE
+ *         CsrpOpenKeInitDoneEvent/0
+ */
+static NTSTATUS STDCALL
+CsrpOpenKeInitDoneEvent (PHANDLE CsrssInitEvent)
+{
+ &nbsp; OBJECT_ATTRIBUTES ObjectAttributes;
+ &nbsp; UNICODE_STRING &nbsp; &nbsp;EventName;
+
+ &nbsp; DPRINT(&quot;CSR: %s called\n&quot;, __FUNCTION__);
+
+ &nbsp; RtlInitUnicodeString(&amp; EventName,
</pre><pre class="diff" id="context">                         L&quot;\\CsrssInitDone&quot;);
</pre><pre class="diff" id="removed">- &nbsp; InitializeObjectAttributes(&amp;ObjectAttributes,
-                         &nbsp; &nbsp; &nbsp;&amp;UnicodeString,
-                         &nbsp; &nbsp; &nbsp;EVENT_ALL_ACCESS,
-                         &nbsp; &nbsp; &nbsp;0,
-                         &nbsp; &nbsp; &nbsp;NULL);
- &nbsp; <span id="removedchars">Status = NtOpenEvent(&amp;CsrssInitEvent</span>,
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">InitializeObjectAttributes (&amp; ObjectAttributes</span>,
+                                &amp; EventName,
+                                EVENT_ALL_ACCESS,
+                                0,
+                                NULL);
+ &nbsp; return NtOpenEvent (CsrssInitEvent,
</pre><pre class="diff" id="context">                         EVENT_ALL_ACCESS,
</pre><pre class="diff" id="removed">-                        &amp;ObjectAttributes);
</pre><pre class="diff" id="added">+                        &amp;<span id="addedchars"> </span>ObjectAttributes);
+}
+
+/* Native process' entry point */
+
+VOID STDCALL NtProcessStartup(PPEB Peb)
+{
+ &nbsp; PRTL_USER_PROCESS_PARAMETERS RtlProcessParameters = NULL;
+ &nbsp; COMMAND_LINE_ARGUMENT &nbsp; &nbsp; &nbsp; &nbsp;CmdLineArg = {0};
+ &nbsp; HANDLE &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CsrssInitEvent = (HANDLE) 0;
+ &nbsp; NTSTATUS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Status = STATUS_SUCCESS;
+
+ &nbsp; DPRINT(&quot;CSR: %s\n&quot;, __FUNCTION__);
+
+ &nbsp; RtlProcessParameters = RtlNormalizeProcessParams (Peb-&gt;ProcessParameters);
+
+ &nbsp; /*==================================================================
+ &nbsp; &nbsp;* Parse the command line.
+ &nbsp; &nbsp;*================================================================*/
+ &nbsp; Status = CsrpParseCommandLine (Peb-&gt;ProcessHeap,
+                                 &nbsp;RtlProcessParameters,
+                                 &nbsp;&amp; CmdLineArg);
+ &nbsp; if(STATUS_SUCCESS != Status)
+ &nbsp; {
+         &nbsp; DbgPrint(&quot;CSR: CsrpParseCommandLine failed (Status=0x%08lx)\n&quot;,
+                Status);
+ &nbsp; }
+ &nbsp; /*
+ &nbsp; &nbsp;* Open the Ke notification event to notify we are OK after
+ &nbsp; &nbsp;* subsystem server initialization.
+ &nbsp; &nbsp;*/
+ &nbsp; Status = CsrpOpenKeInitDoneEvent(&amp; CsrssInitEvent);
</pre><pre class="diff" id="context"> &nbsp; &nbsp;if (!NT_SUCCESS(Status))
 &nbsp; &nbsp; &nbsp;{
</pre><pre class="diff" id="removed">-        DbgPrint(&quot;CSR: <span id="removedchars">Failed to open csrss notification event\n&quot;);</span>
</pre><pre class="diff" id="added">+        DbgPrint(&quot;CSR: <span id="addedchars">CsrpOpenKeInitDoneEvent failed (Status=0x%08lx)\n&quot;,</span>
+                        Status);
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp;}
</pre><pre class="diff" id="removed">- &nbsp; <span id="removedchars">if (CsrServerInitialization (argc, argv) == TRUE)</span>
</pre><pre class="diff" id="added">+ &nbsp; <span id="addedchars">/*==================================================================</span>
+ &nbsp; &nbsp;*        Initialize the Win32 environment subsystem server.
+ &nbsp; &nbsp;*================================================================*/
+ &nbsp; if (CsrServerInitialization (CmdLineArg.Count, CmdLineArg.Vector) == TRUE)
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp;{
</pre><pre class="diff" id="added">+        /*=============================================================
+         * Tell Ke we are up and safe. If we fail to notify Ke, it will
+         * bugcheck the system with SESSION5_INITIALIZATION_FAILED.
+         * TODO: choose a better way to check user mode initialization
+         * is OK.
+         *===========================================================*/
+        NtSetEvent (CsrssInitEvent, NULL);
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        NtSetEvent(CsrssInitEvent,
-                 &nbsp; NULL);
-        
-        RtlFreeHeap (Peb-&gt;ProcessHeap,
-         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, argv);
-        RtlFreeHeap (Peb-&gt;ProcessHeap,
-         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,
-         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ArgBuffer);
-
-        /* terminate the current thread only */
-        <span id="removedchars">NtTerminateThread( NtCurrentThread(), 0 );</span>
</pre><pre class="diff" id="added">+        <span id="addedchars">CsrpFreeCommandLine (Peb-&gt;ProcessHeap, &amp; CmdLineArg);        </span>
+        /*
+         * Terminate the current thread only.
+         */
+        NtTerminateThread (NtCurrentThread(), 0);
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp;}
 &nbsp; &nbsp;else
 &nbsp; &nbsp; &nbsp;{
</pre><pre class="diff" id="removed">-        DisplayString<span id="removedchars">( L&quot;CSR: Subsystem initialization failed.\n&quot; </span>);
</pre><pre class="diff" id="added">+        DisplayString<span id="addedchars"> (L&quot;CSR: CsrServerInitialization failed.\n&quot;</span>);
</pre><pre class="diff" id="context"> 
</pre><pre class="diff" id="removed">-        RtlFreeHeap (Peb-&gt;ProcessHeap,
-         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, argv);
-        RtlFreeHeap (Peb-&gt;ProcessHeap,
-         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0,
-         &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ArgBuffer);
-
</pre><pre class="diff" id="added">+        CsrpFreeCommandLine (Peb-&gt;ProcessHeap, &amp; CmdLineArg);        
</pre><pre class="diff" id="context">         /*
</pre><pre class="diff" id="removed">-         * Tell SM we failed.
</pre><pre class="diff" id="added">+         * Tell <span id="addedchars">the </span>SM we failed.
</pre><pre class="diff" id="context">          */
</pre><pre class="diff" id="removed">-        NtTerminateProcess<span id="removedchars">( NtCurrentProcess(), 0 </span>);
</pre><pre class="diff" id="added">+        NtTerminateProcess<span id="addedchars"> (NtCurrentProcess(), 0</span>);
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp;}
 }
 
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: trunk/reactos/subsys/csrss/include/api.h</b></big></div>
<pre class="diff"><small id="info">--- trunk/reactos/subsys/csrss/include/api.h        2005-02-25 21:22:05 UTC (rev 13747)
+++ trunk/reactos/subsys/csrss/include/api.h        2005-02-26 15:06:19 UTC (rev 13748)
@@ -96,7 +96,8 @@
</small></pre><pre class="diff" id="context"> VOID FASTCALL CsrApiCallHandler(PCSRSS_PROCESS_DATA ProcessData,
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PCSRSS_API_REQUEST Request,
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PCSRSS_API_REPLY Reply);
</pre><pre class="diff" id="removed">-VOID STDCALL ServerApiPortTh<span id="removedchars">ead</span>(PVOID PortHandle);
</pre><pre class="diff" id="added">+VOID STDCALL ServerApiPortTh<span id="addedchars">read </span>(PVOID PortHandle);
+VOID STDCALL ServerSbApiPortThread (PVOID PortHandle);
</pre><pre class="diff" id="context"> VOID Console_Api( DWORD Ignored );
 
 extern HANDLE CsrssApiHeap;
</pre></div>
<hr /><div class="file">
<div class="fileheader"><big><b>Modified: trunk/reactos/subsys/csrss/init.c</b></big></div>
<pre class="diff"><small id="info">--- trunk/reactos/subsys/csrss/init.c        2005-02-25 21:22:05 UTC (rev 13747)
+++ trunk/reactos/subsys/csrss/init.c        2005-02-26 15:06:19 UTC (rev 13748)
@@ -335,7 +335,7 @@
</small></pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0,
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NULL,
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NULL,
</pre><pre class="diff" id="removed">- &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (PTHREAD_START_ROUTINE)ServerApiPortThead,
</pre><pre class="diff" id="added">+ &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (PTHREAD_START_ROUTINE)ServerApiPortTh<span id="addedchars">r</span>ead,
</pre><pre class="diff" id="context"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ApiPortHandle,
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NULL,
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;NULL);
</pre>
</div>

</body>
</html>