aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/xwin/xlaunch/main.cc
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2009-08-07 15:18:39 +0000
committermarha <marha@users.sourceforge.net>2009-08-07 15:18:39 +0000
commit9b9c9dadd6bc6b093defe069a7605a78acbc2d3b (patch)
treee852a8d13a2d481396e47a0f2a9d1bb1f08964e3 /xorg-server/hw/xwin/xlaunch/main.cc
parent0fbe53681c8895746fd8046a67092ff950fe90a8 (diff)
downloadvcxsrv-9b9c9dadd6bc6b093defe069a7605a78acbc2d3b.tar.gz
vcxsrv-9b9c9dadd6bc6b093defe069a7605a78acbc2d3b.tar.bz2
vcxsrv-9b9c9dadd6bc6b093defe069a7605a78acbc2d3b.zip
xlaunch: Solved link problem in debug build.
Diffstat (limited to 'xorg-server/hw/xwin/xlaunch/main.cc')
-rw-r--r--xorg-server/hw/xwin/xlaunch/main.cc115
1 files changed, 63 insertions, 52 deletions
diff --git a/xorg-server/hw/xwin/xlaunch/main.cc b/xorg-server/hw/xwin/xlaunch/main.cc
index c79b5312e..b3b1001ff 100644
--- a/xorg-server/hw/xwin/xlaunch/main.cc
+++ b/xorg-server/hw/xwin/xlaunch/main.cc
@@ -23,6 +23,10 @@
* holders shall not be used in advertising or otherwise to promote the sale,
* use or other dealings in this Software without prior written authorization.
*/
+
+#define printf _not_used_ /* Make sure that we do not use the standard printf definition because
+ we are going to reimplement it in this file */
+
#include "window/util.h"
#include "window/wizard.h"
#include "resources/resources.h"
@@ -39,6 +43,62 @@
#endif
#include <fcntl.h>
#include <io.h>
+#undef printf
+
+#if defined(_MSC_VER) && defined(_DLL)
+#define _CRTEXP __declspec(dllexport)
+#else
+#define _CRTEXP
+#endif
+
+_Check_return_opt_ _CRTEXP int __cdecl printf(_In_z_ _Printf_format_string_ const char * pFmt, ...)
+{
+ static int ConsoleCreated=0;
+ va_list arglist;
+ if (!ConsoleCreated)
+ {
+ int hConHandle;
+ long lStdHandle;
+ CONSOLE_SCREEN_BUFFER_INFO coninfo;
+
+ FILE *fp;
+ const unsigned int MAX_CONSOLE_LINES = 500;
+ ConsoleCreated=1;
+ if (!AttachConsole(ATTACH_PARENT_PROCESS))
+ AllocConsole();
+
+ // set the screen buffer to be big enough to let us scroll text
+ GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
+ coninfo.dwSize.Y = MAX_CONSOLE_LINES;
+ SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);
+
+ // redirect unbuffered STDOUT to the console
+ lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
+ hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
+ fp = _fdopen( hConHandle, "w" );
+ *stdout = *fp;
+ setvbuf( stdout, NULL, _IONBF, 0 );
+
+ // redirect unbuffered STDIN to the console
+ lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
+ hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
+ fp = _fdopen( hConHandle, "r" );
+ *stdin = *fp;
+ setvbuf( stdin, NULL, _IONBF, 0 );
+
+ // redirect unbuffered STDERR to the console
+ lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
+ hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
+ fp = _fdopen( hConHandle, "w" );
+ *stderr = *fp;
+ setvbuf( stderr, NULL, _IONBF, 0 );
+
+ }
+
+ va_start(arglist, pFmt );
+ return vfprintf(stderr, pFmt, arglist);
+}
+
/// @brief Send WM_ENDSESSION to all program windows.
/// This will shutdown the started xserver
@@ -114,7 +174,10 @@ class CMyWizard : public CWizard
}
// Check for valid input
if (config.display.empty())
+ {
+ MessageBox(hwndDlg,"Please fill in a display number.","Error",MB_OK);
SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
+ }
else
SetWindowLong(hwndDlg, DWL_MSGRESULT, IDD_CLIENTS);
return TRUE;
@@ -701,58 +764,6 @@ int main(int argc, char **argv)
}
}
-#ifdef _MSC_VER
-#pragma warning(disable:4273)
-#endif
-
-_Check_return_opt_ int __cdecl printf(_In_z_ _Printf_format_string_ const char * pFmt, ...)
-{
- static int ConsoleCreated=0;
- va_list arglist;
- if (!ConsoleCreated)
- {
- int hConHandle;
- long lStdHandle;
- CONSOLE_SCREEN_BUFFER_INFO coninfo;
-
- FILE *fp;
- const unsigned int MAX_CONSOLE_LINES = 500;
- ConsoleCreated=1;
- if (!AttachConsole(ATTACH_PARENT_PROCESS))
- AllocConsole();
-
- // set the screen buffer to be big enough to let us scroll text
- GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
- coninfo.dwSize.Y = MAX_CONSOLE_LINES;
- SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);
-
- // redirect unbuffered STDOUT to the console
- lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
- hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
- fp = _fdopen( hConHandle, "w" );
- *stdout = *fp;
- setvbuf( stdout, NULL, _IONBF, 0 );
-
- // redirect unbuffered STDIN to the console
- lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
- hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
- fp = _fdopen( hConHandle, "r" );
- *stdin = *fp;
- setvbuf( stdin, NULL, _IONBF, 0 );
-
- // redirect unbuffered STDERR to the console
- lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
- hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
- fp = _fdopen( hConHandle, "w" );
- *stderr = *fp;
- setvbuf( stderr, NULL, _IONBF, 0 );
-
- }
-
- va_start(arglist, pFmt );
- return vfprintf(stderr, pFmt, arglist);
-}
-
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
int argc=1;