From d0daca097c089550148854c6133f392901c32945 Mon Sep 17 00:00:00 2001 From: Angus Leeming Date: Wed, 20 Apr 2005 17:38:25 +0000 Subject: [PATCH] Update the kludge patch whilst we work out how best to address the remaining issues. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_3_X@9844 a592a061-630c-0410-9148-cb99ea01b6c8 --- development/Win32/win32_kludge.diff | 303 ++++++---------------------- 1 file changed, 67 insertions(+), 236 deletions(-) diff --git a/development/Win32/win32_kludge.diff b/development/Win32/win32_kludge.diff index ffb90ce956..e88d9b1b37 100644 --- a/development/Win32/win32_kludge.diff +++ b/development/Win32/win32_kludge.diff @@ -2,15 +2,23 @@ Index: src/ispell.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ispell.C,v retrieving revision 1.5.2.5 -diff -u -p -r1.5.2.5 ispell.C +diff -u -a -u -r1.5.2.5 ispell.C --- src/ispell.C 7 Dec 2004 10:48:23 -0000 1.5.2.5 -+++ src/ispell.C 4 Feb 2005 15:51:27 -0000 -@@ -21,12 +21,20 @@ ++++ src/ispell.C 15 Apr 2005 22:28:12 -0000 +@@ -21,12 +21,28 @@ #include "support/forkedcall.h" #include "support/lstrings.h" +#ifdef _WIN32 -+# include "support/os_win32.h" ++// sys/select.h ++# define FD_ZERO(a) ++# define FD_SET(a,b) ++# define FD_ISSET(fd, set) 0 ++//sys/types.h ++# define fd_set int ++// unistd.h ++# define fork() -1 ++# define pipe(a) _pipe(a,0,0) +#endif + // HP-UX 11.x doesn't have this header @@ -26,18 +34,18 @@ diff -u -p -r1.5.2.5 ispell.C #ifndef CXX_GLOBAL_CSTD using std::strcpy; using std::strlen; -@@ -309,11 +317,15 @@ bool ISpell::select(bool & err_read) +@@ -309,11 +325,15 @@ tv.tv_sec = 2; tv.tv_usec = 0; -+#ifdef HAVE_SELECT ++#ifdef _WIN32 ++ retval = -1; ++#else retval = ::select(SELECT_TYPE_ARG1 (max(pipeout[0], pipeerr[0]) + 1), SELECT_TYPE_ARG234 (&infds), 0, 0, SELECT_TYPE_ARG5 (&tv)); -+#else -+ retval = -1; +#endif // error @@ -46,15 +54,16 @@ Index: src/lyx_cb.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyx_cb.C,v retrieving revision 1.190.2.3 -diff -u -p -r1.190.2.3 lyx_cb.C +diff -u -a -u -r1.190.2.3 lyx_cb.C --- src/lyx_cb.C 10 Jan 2005 19:17:24 -0000 1.190.2.3 -+++ src/lyx_cb.C 4 Feb 2005 15:51:28 -0000 -@@ -37,6 +37,10 @@ ++++ src/lyx_cb.C 15 Apr 2005 20:29:06 -0000 +@@ -37,6 +37,11 @@ #include "support/systemcall.h" #include "support/lstrings.h" +#ifdef _WIN32 -+# include "support/os_win32.h" // fork() ++// unistd.h ++# define fork() -1 +#endif + #include "BoostFormat.h" @@ -64,236 +73,58 @@ Index: src/lyxserver.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxserver.C,v retrieving revision 1.48.2.3 -diff -u -p -r1.48.2.3 lyxserver.C +diff -u -a -u -r1.48.2.3 lyxserver.C --- src/lyxserver.C 20 Jan 2005 10:47:28 -0000 1.48.2.3 -+++ src/lyxserver.C 4 Feb 2005 15:51:28 -0000 -@@ -51,6 +51,10 @@ ++++ src/lyxserver.C 15 Apr 2005 22:22:20 -0000 +@@ -36,14 +36,6 @@ + + #include + +-#include +-#include +-#ifdef HAVE_UNISTD_H +-#include +-#endif +-#include +-#include +- + #include "lyxserver.h" + #include "debug.h" + #include "lyxfunc.h" +@@ -51,14 +43,28 @@ #include "support/lyxlib.h" #include "frontends/lyx_gui.h" -+#ifdef _WIN32 -+# include "support/os_win32.h" // F_SETFL, O_NONBLOCK, fcntl -+#endif +-#ifdef __EMX__ +-#include +-#include +-#define OS2EMX_PLAIN_CHAR +-#define INCL_DOSNMPIPES +-#define INCL_DOSERRORS +-#include +-#include "support/os2_errortable.h" ++#include ++#include ++#include ++#include ++ ++#if defined (_WIN32) ++# define F_SETFD 2 ++# define F_SETFL 4 ++# define O_NONBLOCK 0x4000 ++ inline int fcntl (int, int, ...) {return -1;} ++ ++#elif defined (__EMX__) ++# include ++# include ++# define OS2EMX_PLAIN_CHAR ++# define INCL_DOSNMPIPES ++# define INCL_DOSERRORS ++# include ++# include "support/os2_errortable.h" + - #ifdef __EMX__ - #include - #include -Index: src/support/forkedcall.C -=================================================================== -RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/forkedcall.C,v -retrieving revision 1.11.2.5 -diff -u -p -r1.11.2.5 forkedcall.C ---- src/support/forkedcall.C 3 Feb 2005 14:56:11 -0000 1.11.2.5 -+++ src/support/forkedcall.C 4 Feb 2005 15:51:29 -0000 -@@ -30,6 +30,9 @@ - #include "lyxlib.h" - #include "filetools.h" - #include "os.h" -+#ifdef _WIN32 -+#include "os_win32.h" -+#endif - #include "debug.h" - #include "frontends/Timeout.h" - -@@ -38,7 +41,9 @@ - #include - #include - #include --#include -+#ifdef HAVE_SYS_WAIT_H -+# include -+#endif - #include - #include - #ifdef HAVE_UNISTD_H -@@ -312,7 +317,13 @@ int Forkedcall::generateChild() - lyxerr << '\t'<< *ait << '\n'; - lyxerr << "" << std::endl; - --#ifndef __EMX__ -+#if defined (__EMX__) -+ pid_t const cpid = spawnvp(P_SESSION|P_DEFAULT|P_MINIMIZE|P_BACKGROUND, -+ argv[0], &*argv.begin()); -+#elif defined (_WIN32) -+ pid_t cpid = spawnvp(_P_NOWAIT, -+ argv[0], &*argv.begin()); +#else // POSIX - pid_t const cpid = ::fork(); - if (cpid == 0) { - // Child -@@ -323,9 +334,6 @@ int Forkedcall::generateChild() - << strerror(errno) << endl; - _exit(1); - } --#else -- pid_t const cpid = spawnvp(P_SESSION|P_DEFAULT|P_MINIMIZE|P_BACKGROUND, -- argv[0], &*argv.begin()); ++# include #endif - if (cpid < 0) { -Index: src/support/forkedcontr.C -=================================================================== -RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/forkedcontr.C,v -retrieving revision 1.6.2.4 -diff -u -p -r1.6.2.4 forkedcontr.C ---- src/support/forkedcontr.C 19 Jan 2005 20:38:23 -0000 1.6.2.4 -+++ src/support/forkedcontr.C 4 Feb 2005 15:51:29 -0000 -@@ -19,6 +19,10 @@ - #include "lyxfunctional.h" - #include "debug.h" - -+#ifdef _WIN32 -+#include "os_win32.h" -+#endif -+ - #include "frontends/Timeout.h" - - #include -@@ -28,7 +32,9 @@ - #ifdef HAVE_UNISTD_H - #include - #endif --#include -+#ifdef HAVE_SYS_WAIT_H -+# include -+#endif - - using std::vector; using std::endl; -Index: src/support/kill.C -=================================================================== -RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/kill.C,v -retrieving revision 1.7 -diff -u -p -r1.7 kill.C ---- src/support/kill.C 10 Jun 2002 17:31:57 -0000 1.7 -+++ src/support/kill.C 4 Feb 2005 15:51:29 -0000 -@@ -5,7 +5,40 @@ - #include - #include - -+#ifdef _WIN32 -+#include "debug.h" -+#include "os.h" -+ -+#include -+#include -+ -+using std::endl; -+#endif //_WIN32 -+ - int lyx::kill(int pid, int sig) - { -+#ifdef _WIN32 -+ if (pid == (int)GetCurrentProcessId()) -+ return -(raise(sig)); -+ else{ -+ HANDLE hProcess; -+ if (!(hProcess = -+ OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid))) { -+ lyxerr << "kill OpenProcess failed!" << endl; -+ return -1; -+ } -+ else { -+ if (!TerminateProcess(hProcess, sig)){ -+ lyxerr << "kill process failed!" << endl; -+ CloseHandle(hProcess); -+ return -1; -+ } -+ CloseHandle(hProcess); -+ } -+ } -+ return 0; -+ -+#else - return ::kill(pid, sig); -+#endif - } -Index: src/support/os_win32.h -=================================================================== -RCS file: src/support/os_win32.h -diff -N src/support/os_win32.h ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ src/support/os_win32.h 4 Feb 2005 15:51:29 -0000 -@@ -0,0 +1,82 @@ -+/** -+ * \file os_win32.h -+ * Copyright Ruurd A. Reitsma -+ * This file is part of LyX, the document processor. -+ * Licence details can be found in the file COPYING. -+ * -+ * \author Ruurd A. Reitsma -+ * -+ * Full author contact details are available in file CREDITS. -+ * -+ * Temporary kludges to enable LyX to compile on Windows. -+ * In almost all cases, this code papers over cracks that result -+ * in diminished functionality compared to the *nix code. -+ */ -+ -+#ifndef _OS_WIN32_H_ -+#define _OS_WIN32_H_ -+ -+//Avoid zillions of windows includes -+#ifndef WIN32_LEAN_AND_MEAN -+#define WIN32_LEAN_AND_MEAN -+#endif -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+//fcntl.h -+#define FD_CLOEXEC 1 /* posix */ -+#define F_DUPFD 0 /* Duplicate fildes */ -+#define F_GETFD 1 /* Get fildes flags (close on exec) */ -+#define F_SETFD 2 /* Set fildes flags (close on exec) */ -+#define F_GETFL 3 /* Get file flags */ -+#define F_SETFL 4 /* Set file flags */ -+#define O_NONBLOCK 0x4000 -+inline int fcntl (int, int, ...) {return -1;} -+ -+//signal.h -+#define SIGHUP 1 -+#define SIGKILL 9 -+ -+//unistd.h -+inline int fork () {return -1;} -+#define pipe(a) _pipe(a,0,0) -+ -+ -+//sys/wait.h -+#define waitpid(a,b,c) cwait(b,a,c) -+#define WNOHANG 1 -+#define WUNTRACED 2 -+#define WIFEXITED(a) 0 -+#define WEXITSTATUS(a) 0 -+#define WIFSIGNALED(a) 0 -+#define WTERMSIG(a) 0 -+#define WIFSTOPPED(a) 0 -+#define WSTOPSIG(a) 0 -+ -+//sys/types.h -+#define fd_set int -+ -+//sys/select.h -+#define FD_ZERO(a) -+#define FD_SET(a,b) -+#define FD_ISSET(fd, set) 0 -+ -+#ifndef __MINGW32__ //already defined in mingw headers -+ -+#define _S_IFBLK 0x3000 -+#define S_IFIFO _S_IFIFO -+#define S_IFBLK _S_IFBLK -+#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) -+#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) -+#define popen(a,b) _popen(a,b) -+#define pclose(a) _pclose(a) -+ -+#endif //!__MINGW32 -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif //_OS_WIN32_H_