+++ /dev/null
-const char win32_rcs[] = "$Id: win32.c,v 1.8 2002/03/26 22:57:10 jongfoster Exp $";
-/*********************************************************************
- *
- * File : $Source: /cvsroot/ijbswa/current/win32.c,v $
- *
- * Purpose : Win32 User Interface initialization and message loop
- *
- * Copyright : Written by and Copyright (C) 2001-2002 members of
- * the Privoxy team. http://www.privoxy.org/
- *
- * Written by and Copyright (C) 1999 Adam Lock
- * <locka@iol.ie>
- *
- * 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 (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will
- * be useful, 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.
- *
- * The GNU General Public License should be included with
- * this file. If not, you can view it at
- * http://www.gnu.org/copyleft/gpl.html
- * or write to the Free Software Foundation, Inc., 59
- * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * Revisions :
- * $Log: win32.c,v $
- * Revision 1.8 2002/03/26 22:57:10 jongfoster
- * Web server name should begin www.
- *
- * Revision 1.7 2002/03/24 12:03:47 jongfoster
- * Name change
- *
- * Revision 1.6 2002/03/16 21:53:28 jongfoster
- * VC++ Heap debug option
- *
- * Revision 1.5 2002/03/04 23:47:30 jongfoster
- * - Rewritten, simpler command-line pre-parser
- * - not using raise(SIGINT) any more
- *
- * Revision 1.4 2001/11/30 21:29:33 jongfoster
- * Fixing a warning
- *
- * Revision 1.3 2001/11/16 00:46:31 jongfoster
- * Fixing compiler warnings
- *
- * Revision 1.2 2001/07/29 19:32:00 jongfoster
- * Renaming _main() [mingw32 only] to real_main(), for ANSI compliance.
- *
- * Revision 1.1.1.1 2001/05/15 13:59:08 oes
- * Initial import of version 2.9.3 source tree
- *
- *
- *********************************************************************/
-\f
-
-#include "config.h"
-
-#ifdef _WIN32
-
-#include <stdio.h>
-
-#include "project.h"
-#include "jcc.h"
-#include "miscutil.h"
-
-/* Uncomment this if you want to build Win32 as a console app */
-/* #define _WIN_CONSOLE */
-
-#ifndef STRICT
-#define STRICT
-#endif
-#include <windows.h>
-
-#include <stdarg.h>
-#include <process.h>
-
-#if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG)
-/* Visual C++ Heap debugging */
-#include <crtdbg.h>
-#endif /* defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG) */
-
-#include "win32.h"
-
-const char win32_h_rcs[] = WIN32_H_VERSION;
-
-const char win32_blurb[] =
-"Privoxy version " VERSION " for Windows\n"
-"Copyright (C) 2000-2002 by members of the Privoxy Team\n"
-"Copyright (C) 1997-8 by Junkbusters Corp.\n"
-"This is free software; it may be used and copied under the\n"
-"GNU General Public License: http://www.gnu.org/copyleft/gpl.html .\n"
-"This program comes with ABSOLUTELY NO WARRANTY OF ANY KIND.\n"
-"\n"
-"For information about how to to configure the proxy and your browser, see\n"
-" " HOME_PAGE_URL "\n"
-"\n";
-
-#ifdef _WIN_CONSOLE
-
-int hideConsole = 0;
-
-#else
-
-HINSTANCE g_hInstance;
-int g_nCmdShow;
-
-static void __cdecl UserInterfaceThread(void *);
-
-#endif
-
-
-/*********************************************************************
- *
- * Function : WinMain
- *
- * Description : M$ Windows "main" routine:
- * parse the `lpCmdLine' param into main's argc and argv variables,
- * start the user interface thread (for the systray window), and
- * call main (i.e. patch execution into normal startup).
- *
- * Parameters :
- * 1 : hInstance = instance handle of this execution
- * 2 : hPrevInstance = instance handle of previous execution
- * 3 : lpCmdLine = command line string which started us
- * 4 : nCmdShow = window show value (MIN, MAX, NORMAL, etc...)
- *
- * Returns : `main' never returns, so WinMain will also never return.
- *
- *********************************************************************/
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
-{
- int i;
- int res;
- int argc = 1;
- const char *argv[3];
- char szModule[MAX_PATH+1];
-#ifndef _WIN_CONSOLE
- HANDLE hInitCompleteEvent = NULL;
-#endif
-
-
-#if defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG)
-#if 0
- /* Visual C++ Heap debugging */
-
- /* Get current flag*/
- int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );
-
- /* Turn on leak-checking bit */
- tmpFlag |= _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF | _CRTDBG_CHECK_ALWAYS_DF;
-
- /* Turn off CRT block checking bit */
- tmpFlag &= ~(_CRTDBG_CHECK_CRT_DF | _CRTDBG_DELAY_FREE_MEM_DF);
-
- /* Set flag to the new value */
- _CrtSetDbgFlag( tmpFlag );
-#endif
-#endif /* defined(_WIN32) && defined(_MSC_VER) && defined(_DEBUG) */
-
- /*
- * Cheat in parsing the command line. We only ever have at most one
- * paramater, which may optionally be specified inside double quotes.
- */
-
- if (lpCmdLine != NULL)
- {
- /* Make writable copy */
- lpCmdLine = strdup(lpCmdLine);
- }
- if (lpCmdLine != NULL)
- {
- chomp(lpCmdLine);
- i = strlen(lpCmdLine);
- if ((i >= 2) && (lpCmdLine[0] == '\"') && (lpCmdLine[i - 1] == '\"'))
- {
- lpCmdLine[i - 1] = '\0';
- lpCmdLine++;
- }
- if (lpCmdLine[0] == '\0')
- {
- lpCmdLine = NULL;
- }
- }
-
- GetModuleFileName(hInstance, szModule, MAX_PATH);
- argv[0] = szModule;
- argv[1] = lpCmdLine;
- argv[2] = NULL;
- argc = ((lpCmdLine != NULL) ? 2 : 1);
-
-#ifndef _WIN_CONSOLE
- /* Create a user-interface thread and wait for it to initialise */
- hInitCompleteEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
- g_hInstance = hInstance;
- g_nCmdShow = nCmdShow;
- _beginthread(UserInterfaceThread, 0, &hInitCompleteEvent);
- WaitForSingleObject(hInitCompleteEvent, INFINITE);
- DeleteObject(hInitCompleteEvent);
-#endif
-
-#ifdef __MINGW32__
- res = real_main( argc, argv );
-#else
- res = main( argc, argv );
-#endif
-
- return res;
-
-}
-
-#endif
-
-/*********************************************************************
- *
- * Function : InitWin32
- *
- * Description : Initialise windows, setting up the console or windows as appropriate.
- *
- * Parameters : None
- *
- * Returns : N/A
- *
- *********************************************************************/
-void InitWin32(void)
-{
- WORD wVersionRequested;
- WSADATA wsaData;
-
-#ifdef _WIN_CONSOLE
- SetProcessShutdownParameters(0x100, SHUTDOWN_NORETRY);
- if (hideConsole)
- {
- FreeConsole();
- }
-#endif
- wVersionRequested = MAKEWORD(2, 0);
- if (WSAStartup(wVersionRequested, &wsaData) != 0)
- {
-#ifndef _WIN_CONSOLE
- MessageBox(NULL, "Cannot initialize WinSock library", "Privoxy Error",
- MB_OK | MB_ICONERROR | MB_TASKMODAL | MB_SETFOREGROUND | MB_TOPMOST);
-#endif
- exit(1);
- }
-
-}
-
-
-#ifndef _WIN_CONSOLE
-#include <signal.h>
-#include <assert.h>
-
-#include "win32.h"
-#include "w32log.h"
-
-
-/*********************************************************************
- *
- * Function : UserInterfaceThread
- *
- * Description : User interface thread. WinMain will wait for us to set
- * the hInitCompleteEvent before patching over to `main'.
- * This ensures the systray window is active before beginning
- * operations.
- *
- * Parameters :
- * 1 : pData = pointer to `hInitCompleteEvent'.
- *
- * Returns : N/A
- *
- *********************************************************************/
-static void __cdecl UserInterfaceThread(void *pData)
-{
- MSG msg;
- HANDLE hInitCompleteEvent = *((HANDLE *) pData);
-
- /* Initialise */
- InitLogWindow();
- SetEvent(hInitCompleteEvent);
-
- /* Enter a message processing loop */
- while (GetMessage(&msg, (HWND) NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
-
- /* Cleanup */
- TermLogWindow();
-
- /* Time to die... */
- exit(0);
-
-}
-
-
-#endif
-
-
-/*
- Local Variables:
- tab-width: 3
- end:
-*/