+++ /dev/null
-Index: src/BufferView.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/BufferView.C,v
-retrieving revision 1.256
-diff -u -r1.256 BufferView.C
---- src/BufferView.C 30 Nov 2004 01:59:29 -0000 1.256
-+++ src/BufferView.C 31 Jan 2005 11:19:24 -0000
-@@ -290,10 +290,17 @@
- screen().hideCursor();
- }
-
--
--LyXText * BufferView::getLyXText() const
-+LyXText * BufferView::getLyXText()
- {
- LyXText * text = cursor().innerText();
-+ BOOST_ASSERT(text);
-+ return text;
-+}
-+
-+
-+LyXText const * BufferView::getLyXText() const
-+{
-+ LyXText const * text = cursor().innerText();
- BOOST_ASSERT(text);
- return text;
- }
-Index: src/BufferView.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/BufferView.h,v
-retrieving revision 1.183
-diff -u -r1.183 BufferView.h
---- src/BufferView.h 19 Jan 2005 15:03:26 -0000 1.183
-+++ src/BufferView.h 31 Jan 2005 11:15:54 -0000
-@@ -102,7 +102,10 @@
- Change const getCurrentChange();
-
- /// return the lyxtext we are using
-- LyXText * getLyXText() const;
-+ LyXText * getLyXText();
-+
-+ /// return the lyxtext we are using
-+ LyXText const * getLyXText() const;
-
- /// simple replacing. Use the font of the first selected character
- void replaceSelectionWithString(std::string const & str);
-Index: src/BufferView_pimpl.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/BufferView_pimpl.C,v
-retrieving revision 1.569
-diff -u -r1.569 BufferView_pimpl.C
---- src/BufferView_pimpl.C 27 Jan 2005 21:05:30 -0000 1.569
-+++ src/BufferView_pimpl.C 31 Jan 2005 12:25:38 -0000
-@@ -445,7 +445,6 @@
- t.redoParagraph(anchor_ref_);
- int const h = t.getPar(anchor_ref_).height();
- offset_ref_ = int((bar * t.paragraphs().size() - anchor_ref_) * h);
-- lyxerr << "scrolling: " << value << std::endl;
- update();
-
- if (!lyxrc.cursor_follows_scrollbar)
-@@ -612,6 +611,7 @@
-
- CoordCache backup;
- std::swap(theCoords, backup);
-+ theCoords.startUpdating();
- //
- ViewMetricsInfo vi = metrics();
-
-@@ -622,8 +622,11 @@
- if (forceupdate) {
- // second drawing step
- screen().redraw(*bv_, vi);
-- } else
-+ theCoords.doneUpdating();
-+ } else {
-+ // Abort updating of the coord cache - just restore the old one
- std::swap(theCoords, backup);
-+ }
- } else
- screen().greyOut();
-
-@@ -743,7 +746,7 @@
-
- void BufferView::Pimpl::center()
- {
-- CursorSlice const & bot = bv_->cursor().bottom();
-+ CursorSlice & bot = bv_->cursor().bottom();
- lyx::pit_type const pit = bot.pit();
- bot.text()->redoParagraph(pit);
- Paragraph const & par = bot.text()->paragraphs()[pit];
-@@ -1247,7 +1250,7 @@
- int y = y1;
- for (lyx::pit_type pit = pit1; pit <= pit2; ++pit) {
- y += text->getPar(pit).ascent();
-- theCoords.pars_[text][pit] = Point(0, y);
-+ theCoords.parPos()[text][pit] = Point(0, y);
- y += text->getPar(pit).descent();
- }
-
-Index: src/DepTable.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/DepTable.C,v
-retrieving revision 1.41
-diff -u -r1.41 DepTable.C
---- src/DepTable.C 13 Oct 2003 01:01:33 -0000 1.41
-+++ src/DepTable.C 19 Jan 2005 10:35:54 -0000
-@@ -26,7 +26,9 @@
- #include <fstream>
-
- #ifndef CXX_GLOBAL_CSTD
-+# ifndef _WIN32
- using std::time;
-+# endif
- #endif
-
- using lyx::support::ltrim;
-Index: src/RowList_fwd.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/RowList_fwd.h,v
-retrieving revision 1.5
-diff -u -r1.5 RowList_fwd.h
---- src/RowList_fwd.h 16 Nov 2004 20:41:37 -0000 1.5
-+++ src/RowList_fwd.h 27 Jan 2005 10:58:08 -0000
-@@ -16,6 +16,11 @@
-
- #include <vector>
-
-+/**
-+ * Each paragraph is broken up into a number of rows on the screen.
-+ * This is a list of such on-screen rows, ordered from the top row
-+ * downwards.
-+ */
- typedef std::vector<Row> RowList;
-
- #endif
-Index: src/buffer.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/buffer.C,v
-retrieving revision 1.609
-diff -u -r1.609 buffer.C
---- src/buffer.C 31 Jan 2005 10:42:17 -0000 1.609
-+++ src/buffer.C 31 Jan 2005 11:08:10 -0000
-@@ -77,7 +77,11 @@
- #include <boost/bind.hpp>
- #include <boost/filesystem/operations.hpp>
-
--#include <utime.h>
-+#ifdef _WIN32
-+# include <windows.h>
-+#else
-+# include <utime.h>
-+#endif
-
- #include <iomanip>
- #include <stack>
-Index: src/buffer.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/buffer.h,v
-retrieving revision 1.189
-diff -u -r1.189 buffer.h
---- src/buffer.h 17 Dec 2004 16:27:07 -0000 1.189
-+++ src/buffer.h 31 Jan 2005 09:58:01 -0000
-@@ -49,10 +49,15 @@
-
-
- /** The buffer object.
-- This is the buffer object. It contains all the informations about
-- a document loaded into LyX. I am not sure if the class is complete or
-- minimal, probably not.
-- \author Lars Gullik Bjønnes
-+ * This is the buffer object. It contains all the informations about
-+ * a document loaded into LyX.
-+ * The buffer object owns the LyXText (wrapped in an InsetText), which
-+ * contains the individual paragraphs of the document.
-+ *
-+ *
-+ * I am not sure if the class is complete or
-+ * minimal, probably not.
-+ * \author Lars Gullik Bjønnes
- */
- class Buffer {
- public:
-Index: src/bufferview_funcs.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/bufferview_funcs.C,v
-retrieving revision 1.146
-diff -u -r1.146 bufferview_funcs.C
---- src/bufferview_funcs.C 6 Jan 2005 16:39:21 -0000 1.146
-+++ src/bufferview_funcs.C 31 Jan 2005 11:54:25 -0000
-@@ -180,8 +180,8 @@
- Point getPos(DocIterator const & dit)
- {
- CursorSlice const & bot = dit.bottom();
-- CoordCache::InnerParPosCache & cache = theCoords.pars_[bot.text()];
-- CoordCache::InnerParPosCache::iterator it = cache.find(bot.pit());
-+ CoordCache::InnerParPosCache const & cache = theCoords.getParPos().find(bot.text())->second;
-+ CoordCache::InnerParPosCache::const_iterator it = cache.find(bot.pit());
- if (it == cache.end()) {
- //lyxerr << "cursor out of view" << std::endl;
- return Point(-1,-1);
-@@ -195,7 +195,7 @@
- // this could be used elsewhere as well?
- CurStatus status(BufferView const * bv, DocIterator const & dit)
- {
-- CoordCache::InnerParPosCache & cache = theCoords.pars_[dit.bottom().text()];
-+ CoordCache::InnerParPosCache const & cache = theCoords.getParPos().find(dit.bottom().text())->second;
-
- if (cache.find(dit.bottom().pit()) != cache.end())
- return CUR_INSIDE;
-Index: src/coordcache.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/coordcache.C,v
-retrieving revision 1.5
-diff -u -r1.5 coordcache.C
---- src/coordcache.C 12 Jan 2005 10:30:44 -0000 1.5
-+++ src/coordcache.C 31 Jan 2005 10:20:07 -0000
-@@ -21,20 +21,24 @@
- }
-
-
--void lyxaborter(int x, int y)
--{
-- lyxerr << "abort on x: " << x << " y: " << y << std::endl;
-- BOOST_ASSERT(false);
--}
--
--
- void CoordCache::clear()
- {
-+ BOOST_ASSERT(updating);
- arrays_.clear();
- insets_.clear();
- pars_.clear();
- }
-
-+void CoordCache::startUpdating() {
-+ BOOST_ASSERT(!updating);
-+ updating = true;
-+}
-+
-+
-+void CoordCache::doneUpdating() {
-+ BOOST_ASSERT(updating);
-+ updating = false;
-+}
-
- Point CoordCache::get(LyXText const * text, lyx::pit_type pit)
- {
-Index: src/coordcache.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/coordcache.h,v
-retrieving revision 1.6
-diff -u -r1.6 coordcache.h
---- src/coordcache.h 19 Jan 2005 15:03:29 -0000 1.6
-+++ src/coordcache.h 31 Jan 2005 12:23:49 -0000
-@@ -12,13 +12,7 @@
-
- #include <map>
-
--
--// All positions cached in this cache are only valid between subsequent
--// updated. (x,y) == (0,0) is the upper left screen corner, x increases
--// to the right, y increases downwords.
--
- void lyxbreaker(void const * data, const char * hint, int size);
--void lyxaborter(int x, int y);
-
- class Point {
- public:
-@@ -92,21 +86,55 @@
- cache_type data_;
- };
-
--
-+/**
-+ * A global cache that allows us to come from a paragraph in a document
-+ * to a position point on the screen.
-+ * All points cached in this cache are only valid between subsequent
-+ * updated. (x,y) == (0,0) is the upper left screen corner, x increases
-+ * to the right, y increases downwords.
-+ * The cache is built in BufferView::Pimpl::metrics which is called
-+ * from BufferView::Pimpl::update. The individual points are added
-+ * while we paint them. See for instance paintPar in RowPainter.C.
-+ */
- class CoordCache {
- public:
-+ CoordCache() : updating(false) { }
-+ /// In order to find bugs, we record when we start updating the cache
-+ void startUpdating();
-+ /// When we are done, we record that to help find bugs
-+ void doneUpdating();
-+
- void clear();
- Point get(LyXText const *, lyx::pit_type);
-
-+ /// A map from paragraph index number to screen point
-+ typedef std::map<lyx::pit_type, Point> InnerParPosCache;
-+ /// A map from a LyXText to the map of paragraphs to screen points
-+ typedef std::map<LyXText const *, InnerParPosCache> ParPosCache;
-+
-+ /// A map from MathArray to position on the screen
-+ CoordCacheBase<MathArray> & arrays() { BOOST_ASSERT(updating); return arrays_; }
-+ CoordCacheBase<MathArray> const & getArrays() const { return arrays_; }
-+ /// A map from insets to positions on the screen
-+ CoordCacheBase<InsetBase> & insets() { BOOST_ASSERT(updating); return insets_; }
-+ CoordCacheBase<InsetBase> const & getInsets() const { return insets_; }
-+ /// A map from (LyXText, paragraph) pair to screen positions
-+ ParPosCache & parPos() { BOOST_ASSERT(updating); return pars_; }
-+ ParPosCache const & getParPos() const { return pars_; }
-+private:
- CoordCacheBase<MathArray> arrays_;
-
- // all insets
- CoordCacheBase<InsetBase> insets_;
-
- // paragraph grouped by owning text
-- typedef std::map<lyx::pit_type, Point> InnerParPosCache;
-- typedef std::map<LyXText const *, InnerParPosCache> ParPosCache;
- ParPosCache pars_;
-+
-+ /**
-+ * Debugging flag only: Set to true while the cache is being built.
-+ * No changes to the structure are allowed unless we are updating.
-+ */
-+ bool updating;
- };
-
- extern CoordCache theCoords;
-Index: src/cursor.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/cursor.C,v
-retrieving revision 1.119
-diff -u -r1.119 cursor.C
---- src/cursor.C 18 Jan 2005 14:15:55 -0000 1.119
-+++ src/cursor.C 31 Jan 2005 11:08:09 -0000
-@@ -58,7 +58,9 @@
- using std::vector;
- using std::endl;
- #ifndef CXX_GLOBAL_CSTD
-+# ifndef _WIN32
- using std::isalpha;
-+# endif
- #endif
- using std::min;
- using std::swap;
-@@ -1086,7 +1088,7 @@
- if (operator[](s).text())
- break;
- CursorSlice const & sl = operator[](s);
-- LyXText & text = *sl.text();
-+ LyXText const & text = *sl.text();
- LyXFont font = text.getPar(sl.pit()).getFont(
- bv().buffer()->params(), sl.pos(), outerFont(sl.pit(), text.paragraphs()));
- return font.language()->encoding();
-@@ -1127,7 +1129,7 @@
- if (operator[](s).text())
- break;
- CursorSlice const & sl = operator[](s);
-- LyXText & text = *sl.text();
-+ LyXText const & text = *sl.text();
- LyXFont font = text.getPar(sl.pit()).getFont(
- bv().buffer()->params(),
- sl.pos(),
-Index: src/cursor_slice.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/cursor_slice.C,v
-retrieving revision 1.26
-diff -u -r1.26 cursor_slice.C
---- src/cursor_slice.C 24 Nov 2004 21:53:38 -0000 1.26
-+++ src/cursor_slice.C 31 Jan 2005 11:01:13 -0000
-@@ -104,7 +104,13 @@
- }
-
-
--LyXText * CursorSlice::text() const
-+LyXText * CursorSlice::text()
-+{
-+ BOOST_ASSERT(inset_);
-+ return inset_->getText(idx_);
-+}
-+
-+LyXText const * CursorSlice::text() const
- {
- BOOST_ASSERT(inset_);
- return inset_->getText(idx_);
-Index: src/cursor_slice.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/cursor_slice.h,v
-retrieving revision 1.20
-diff -u -r1.20 cursor_slice.h
---- src/cursor_slice.h 30 Nov 2004 01:59:33 -0000 1.20
-+++ src/cursor_slice.h 31 Jan 2005 11:01:13 -0000
-@@ -97,7 +97,9 @@
- /// see comment for the member
- bool & boundary() { return boundary_; }
- ///
-- LyXText * text() const;
-+ LyXText * text();
-+ ///
-+ LyXText const * text() const;
- ///
- UpdatableInset * asUpdatableInset() const;
- ///
-Index: src/dociterator.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/dociterator.C,v
-retrieving revision 1.21
-diff -u -r1.21 dociterator.C
---- src/dociterator.C 30 Nov 2004 01:59:33 -0000 1.21
-+++ src/dociterator.C 31 Jan 2005 11:11:59 -0000
-@@ -123,7 +123,13 @@
- }
-
-
--LyXText * DocIterator::text() const
-+LyXText * DocIterator::text()
-+{
-+ BOOST_ASSERT(!empty());
-+ return top().text();
-+}
-+
-+LyXText const * DocIterator::text() const
- {
- BOOST_ASSERT(!empty());
- return top().text();
-@@ -146,12 +152,14 @@
-
- Row & DocIterator::textRow()
- {
-+ BOOST_ASSERT(!paragraph().rows().empty());
- return paragraph().getRow(pos());
- }
-
-
- Row const & DocIterator::textRow() const
- {
-+ BOOST_ASSERT(!paragraph().rows().empty());
- return paragraph().getRow(pos());
- }
-
-@@ -233,7 +241,18 @@
- }
-
-
--LyXText * DocIterator::innerText() const
-+LyXText * DocIterator::innerText()
-+{
-+ BOOST_ASSERT(!empty());
-+ // go up until first non-0 text is hit
-+ // (innermost text is 0 in mathed)
-+ for (int i = size() - 1; i >= 0; --i)
-+ if (operator[](i).text())
-+ return operator[](i).text();
-+ return 0;
-+}
-+
-+LyXText const * DocIterator::innerText() const
- {
- BOOST_ASSERT(!empty());
- // go up until first non-0 text is hit
-Index: src/dociterator.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/dociterator.h,v
-retrieving revision 1.14
-diff -u -r1.14 dociterator.h
---- src/dociterator.h 30 Nov 2004 01:59:33 -0000 1.14
-+++ src/dociterator.h 31 Jan 2005 11:11:59 -0000
-@@ -151,11 +151,15 @@
- /// the row in the paragraph we're in
- Row const & textRow() const;
- ///
-- LyXText * text() const;
-+ LyXText * text();
-+ ///
-+ LyXText const * text() const;
- ///
- InsetBase * innerInsetOfType(int code) const;
- ///
-- LyXText * innerText() const;
-+ LyXText * innerText();
-+ ///
-+ LyXText const * innerText() const;
-
- //
- // elementary moving
-Index: src/ispell.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ispell.C,v
-retrieving revision 1.25
-diff -u -r1.25 ispell.C
---- src/ispell.C 20 Jan 2005 16:17:36 -0000 1.25
-+++ src/ispell.C 23 Jan 2005 12:09:37 -0000
-@@ -24,11 +24,17 @@
-
- #include "support/forkedcall.h"
-
-+#ifdef _WIN32
-+# include "support/os_win32.h"
-+#endif
-+
- // HP-UX 11.x doesn't have this header
- #ifdef HAVE_SYS_SELECT_H
- #include <sys/select.h>
- #endif
--#include <sys/time.h>
-+#ifndef _WIN32
-+# include <sys/time.h>
-+#endif
-
- using boost::shared_ptr;
-
-@@ -88,6 +94,7 @@
- }
-
- // child process
-+#ifndef _WIN32
- dup2(pipein[0], STDIN_FILENO);
- dup2(pipeout[1], STDOUT_FILENO);
- dup2(pipeerr[1], STDERR_FILENO);
-@@ -180,6 +187,7 @@
-
- lyxerr << "LyX: Failed to start ispell!" << endl;
- _exit(0);
-+#endif
- }
-
-
-@@ -191,6 +199,7 @@
- {
- lyxerr[Debug::GUI] << "Created ispell" << endl;
-
-+#ifndef _WIN32
- // static due to the setvbuf. Ugly.
- static char o_buf[BUFSIZ];
-
-@@ -275,6 +284,7 @@
- close(pipeerr[1]);
- child_->kill();
- child_.reset(0);
-+#endif
- }
-
-
-@@ -295,18 +305,23 @@
- fclose(out);
- }
-
-+#ifndef _WIN32
- close(pipein[0]);
- close(pipein[1]);
- close(pipeout[0]);
- close(pipeout[1]);
- close(pipeerr[0]);
- close(pipeerr[1]);
-+#endif
- delete [] str;
- }
-
-
- bool ISpell::select(bool & err_read)
- {
-+#ifdef _WIN32
-+ return false;
-+#else
- fd_set infds;
- struct timeval tv;
- int retval = 0;
-@@ -316,11 +331,15 @@
- tv.tv_sec = 2;
- tv.tv_usec = 0;
-
-+#ifdef HAVE_SELECT
- 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
- if (retval <= 0)
-@@ -335,6 +354,7 @@
- fgets(buf, BUFSIZ, in);
- err_read = false;
- return false;
-+#endif
- }
-
-
-Index: src/lyx_cb.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyx_cb.C,v
-retrieving revision 1.247
-diff -u -r1.247 lyx_cb.C
---- src/lyx_cb.C 31 Jan 2005 10:42:18 -0000 1.247
-+++ src/lyx_cb.C 31 Jan 2005 10:57:53 -0000
-@@ -44,6 +44,10 @@
- #include "support/path.h"
- #include "support/systemcall.h"
-
-+#ifdef _WIN32
-+# include "support/os_win32.h" // fork()
-+#endif
-+
- #include <boost/shared_ptr.hpp>
- #include <boost/filesystem/operations.hpp>
-
-Index: src/lyxlex_pimpl.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxlex_pimpl.h,v
-retrieving revision 1.22
-diff -u -r1.22 lyxlex_pimpl.h
---- src/lyxlex_pimpl.h 21 Jan 2005 08:39:13 -0000 1.22
-+++ src/lyxlex_pimpl.h 25 Jan 2005 12:40:01 -0000
-@@ -23,6 +23,7 @@
- #include <istream>
- #include <stack>
- #include <vector>
-+#include <fstream> // for std::filebuf
-
- ///
- class LyXLex::Pimpl : boost::noncopyable {
-Index: src/lyxrow.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxrow.h,v
-retrieving revision 1.42
-diff -u -r1.42 lyxrow.h
---- src/lyxrow.h 30 Nov 2004 01:59:34 -0000 1.42
-+++ src/lyxrow.h 27 Jan 2005 10:55:12 -0000
-@@ -17,7 +17,11 @@
-
- #include "support/types.h"
-
--///
-+/**
-+ * An on-screen row of text. A paragraph is broken into a
-+ * RowList for display. Each Row contains position pointers
-+ * into the first and last character positions of that row.
-+ */
- class Row {
- public:
- ///
-Index: src/lyxserver.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxserver.C,v
-retrieving revision 1.59
-diff -u -r1.59 lyxserver.C
---- src/lyxserver.C 20 Jan 2005 15:07:36 -0000 1.59
-+++ src/lyxserver.C 21 Jan 2005 09:47:31 -0000
-@@ -54,6 +54,10 @@
- #include <sys/stat.h>
- #include <fcntl.h>
-
-+#ifdef _WIN32
-+# include "support/os_win32.h" // F_SETFL, O_NONBLOCK, fcntl
-+#endif
-+
- #ifdef __EMX__
- #include <cstdlib>
- #include <io.h>
-@@ -182,6 +186,8 @@
- // Imported handles can be used both with OS/2 APIs and emx
- // library functions.
- fd = _imphandle(os2fd);
-+#elif defined(_WIN32)
-+
- #else
- if (::access(filename.c_str(), F_OK) == 0) {
- lyxerr << "LyXComm: Pipe " << filename << " already exists.\n"
-@@ -236,10 +242,12 @@
- }
- #endif
-
-+#ifndef _WIN32
- if (::close(fd) < 0) {
- lyxerr << "LyXComm: Could not close pipe " << filename
- << '\n' << strerror(errno) << endl;
- }
-+#endif
-
- // OS/2 pipes are deleted automatically
- #ifndef __EMX__
-@@ -275,7 +283,13 @@
- errno = 0;
- int status;
- // the single = is intended here.
-- while ((status = ::read(infd, charbuf, charbuf_size - 1))) {
-+ while ((status =
-+#ifndef _WIN32
-+ ::read(infd, charbuf, charbuf_size - 1)
-+#else
-+ -1
-+#endif
-+ )) {
-
- if (status > 0) {
- charbuf[status] = '\0'; // turn it into a c string
-@@ -332,6 +346,9 @@
-
- if (pipename.empty()) return;
-
-+#ifdef _WIN32
-+ return;
-+#else
- if (!ready) {
- lyxerr << "LyXComm: Pipes are closed. Could not send "
- << msg << endl;
-@@ -342,6 +359,7 @@
- closeConnection();
- openConnection();
- }
-+#endif
- #ifdef __EMX__
- APIRET rc;
- int errnum;
-Index: src/lyxsocket.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxsocket.C,v
-retrieving revision 1.6
-diff -u -r1.6 lyxsocket.C
---- src/lyxsocket.C 23 Jul 2004 19:01:48 -0000 1.6
-+++ src/lyxsocket.C 19 Jan 2005 11:18:01 -0000
-@@ -68,7 +68,9 @@
- LyXServerSocket::~LyXServerSocket()
- {
- lyx_gui::unregister_socket_callback(fd_);
-+#ifndef _WIN32
- ::close(fd_);
-+#endif
- lyx::support::unlink(address_);
- lyxerr[Debug::LYXSERVER] << "lyx: Server socket quitting" << endl;
- }
-@@ -155,7 +157,11 @@
- {
- string const linen(line + '\n');
- int const size = linen.size();
-+#ifndef _WIN32
- int const written = ::write(fd_, linen.c_str(), size);
-+#else
-+ int const written = -1;
-+#endif
- if (written < size) { // Allways mean end of connection.
- if ((written == -1) && (errno == EPIPE)) {
- // The program will also receive a SIGPIPE
-@@ -194,7 +200,9 @@
-
- LyXDataSocket::~LyXDataSocket()
- {
-+#ifndef _WIN32
- ::close(fd_);
-+#endif
-
- lyx_gui::unregister_socket_callback(fd_);
- lyxerr[Debug::LYXSERVER] << "lyx: Data socket " << fd_ << " quitting."
-@@ -216,7 +224,13 @@
- int count;
-
- // read and store characters in buffer
-- while ((count = ::read(fd_, charbuf, charbuf_size - 1)) > 0) {
-+ while ((count =
-+#ifndef _WIN32
-+ ::read(fd_, charbuf, charbuf_size - 1)
-+#else
-+ 0
-+#endif
-+ ) > 0) {
- buffer_.append(charbuf, charbuf + count);
- }
-
-@@ -250,7 +264,11 @@
- {
- string const linen(line + '\n');
- int const size = linen.size();
-+#ifndef _WIN32
- int const written = ::write(fd_, linen.c_str(), size);
-+#else
-+ int const written = -1;
-+#endif
- if (written < size) { // Allways mean end of connection.
- if ((written == -1) && (errno == EPIPE)) {
- // The program will also receive a SIGPIPE
-Index: src/lyxtext.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxtext.h,v
-retrieving revision 1.316
-diff -u -r1.316 lyxtext.h
---- src/lyxtext.h 17 Dec 2004 16:27:07 -0000 1.316
-+++ src/lyxtext.h 31 Jan 2005 09:58:00 -0000
-@@ -70,7 +70,7 @@
- bool toggleall);
-
- /// what you expect when pressing <enter> at cursor position
-- void breakParagraph(LCursor & cur, char keep_layout = 0);
-+ void breakParagraph(LCursor & cur, bool keep_layout = false);
-
- /// set layout over selection
- pit_type setLayout(pit_type start, pit_type end,
-@@ -124,7 +124,7 @@
- FuncStatus & status) const;
-
- /// access to out BufferView. This should go...
-- BufferView * bv();
-+// BufferView * bv();
- /// access to out BufferView. This should go...
- BufferView * bv() const;
-
-Index: src/paragraph.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/paragraph.C,v
-retrieving revision 1.400
-diff -u -r1.400 paragraph.C
---- src/paragraph.C 24 Jan 2005 17:12:18 -0000 1.400
-+++ src/paragraph.C 27 Jan 2005 12:17:23 -0000
-@@ -1795,6 +1795,8 @@
-
- Row & Paragraph::getRow(pos_type pos)
- {
-+ BOOST_ASSERT(!rows().empty());
-+
- RowList::iterator rit = rows_.end();
- RowList::iterator const begin = rows_.begin();
-
-@@ -1807,6 +1809,8 @@
-
- Row const & Paragraph::getRow(pos_type pos) const
- {
-+ BOOST_ASSERT(!rows().empty());
-+
- RowList::const_iterator rit = rows_.end();
- RowList::const_iterator const begin = rows_.begin();
-
-@@ -1819,6 +1823,8 @@
-
- size_t Paragraph::pos2row(pos_type pos) const
- {
-+ BOOST_ASSERT(!rows().empty());
-+
- RowList::const_iterator rit = rows_.end();
- RowList::const_iterator const begin = rows_.begin();
-
-@@ -1873,11 +1879,3 @@
- }
- }
-
--//void Paragraph::metrics(MetricsInfo & mi, Dimension & dim, LyXText & text)
--//{
--//}
--//
--//
--//void draw(PainterInfo & pi, int x, int y, LyXText & text) const
--//{
--//}
-Index: src/paragraph.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/paragraph.h,v
-retrieving revision 1.146
-diff -u -r1.146 paragraph.h
---- src/paragraph.h 19 Jan 2005 15:03:29 -0000 1.146
-+++ src/paragraph.h 27 Jan 2005 12:58:12 -0000
-@@ -134,7 +134,7 @@
- lyx::depth_type depth) const;
-
- /// Can we drop the standard paragraph wrapper?
-- bool Paragraph::emptyTag() const;
-+ bool emptyTag() const;
-
- /// Get the id of the paragraph, usefull for docbook and linuxdoc
- std::string getID(Buffer const & buf,
-@@ -293,7 +293,7 @@
- BOOST_ASSERT(pos < int(text_.size()));
- return text_[pos];
- }
-- ///
-+ /// Get the char, but mirror all bracket characters if it is right-to-left
- value_type getUChar(BufferParams const &, lyx::pos_type pos) const;
- /// The position must already exist.
- void setChar(lyx::pos_type pos, value_type c);
-@@ -326,6 +326,9 @@
- InsetBase * getInset(lyx::pos_type pos);
- ///
- InsetBase const * getInset(lyx::pos_type pos) const;
-+ ///
-+ InsetList insetlist;
-+
-
- ///
- bool isHfill(lyx::pos_type pos) const;
-@@ -344,7 +347,7 @@
- /// returns -1 if inset not found
- int getPositionOfInset(InsetBase const * inset) const;
-
-- ///
-+ /// Returns the number of line breaks and white-space stripped at the start
- int stripLeadingSpaces();
-
- /// return true if we allow multiple spaces
-@@ -352,7 +355,7 @@
-
- /// return true if we allow this par to stay empty
- bool allowEmpty() const;
-- ////
-+ ///
- unsigned char transformChar(unsigned char c, lyx::pos_type pos) const;
- ///
- ParagraphParameters & params();
-@@ -366,37 +369,34 @@
- ///
- size_t pos2row(lyx::pos_type pos) const;
-
-- ///
-- InsetList insetlist;
--
- /// total height of paragraph
- unsigned int height() const { return dim_.height(); }
- /// total width of paragraph, may differ from workwidth
- unsigned int width() const { return dim_.width(); }
- unsigned int ascent() const { return dim_.ascent(); }
- unsigned int descent() const { return dim_.descent(); }
-- ///
-+ /// LyXText updates the rows using this access point
- RowList & rows() { return rows_; }
-- ///
-+ /// The painter and others use this
- RowList const & rows() const { return rows_; }
-
-- // compute paragraph metrics
-- void metrics(MetricsInfo & mi, Dimension & dim, LyXText & text);
-- // draw paragraph
-- void draw(PainterInfo & pi, int x, int y, LyXText & text) const;
-- /// dump some information
-- void dump() const;
-+ /// LyXText::redoParagraph updates this
-+ Dimension & dim() { return dim_; }
-
-+ /// dump some information to lyxerr
-+ void dump() const;
-+private:
- /// cached dimensions of paragraph
- Dimension dim_;
-
--private:
- ///
- mutable RowList rows_;
- ///
- LyXLayout_ptr layout_;
-- /// keeping this here instead of in the pimpl makes LyX >10% faster
-- // for average tasks as buffer loading/switching etc.
-+ /**
-+ * Keeping this here instead of in the pimpl makes LyX >10% faster
-+ * for average tasks as buffer loading/switching etc.
-+ */
- TextContainer text_;
- /// end of label
- lyx::pos_type begin_of_body_;
-@@ -406,7 +406,6 @@
- friend class Paragraph::Pimpl;
- ///
- Pimpl * pimpl_;
--
- };
-
-
-Index: src/paragraph_funcs.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/paragraph_funcs.h,v
-retrieving revision 1.46
-diff -u -r1.46 paragraph_funcs.h
---- src/paragraph_funcs.h 30 Nov 2004 01:59:36 -0000 1.46
-+++ src/paragraph_funcs.h 27 Jan 2005 13:19:36 -0000
-@@ -21,8 +21,15 @@
- class Paragraph;
- class ParagraphList;
-
--
--///
-+/**
-+ * This breaks a paragraph at the specified position.
-+ * The new paragraph will:
-+ * get the default layout, when flag == 0
-+ * will inherit the existing one, except for depth, when flag == 1
-+ * will inherit the existing one, including depth, when flag == 2
-+ * Be aware that the old or new paragraph does not contain any rows
-+ * after this.
-+ */
- void breakParagraph(BufferParams const & bparams,
- ParagraphList & paragraphs,
- lyx::pit_type par,
-Index: src/rowpainter.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/rowpainter.C,v
-retrieving revision 1.140
-diff -u -r1.140 rowpainter.C
---- src/rowpainter.C 18 Jan 2005 14:15:55 -0000 1.140
-+++ src/rowpainter.C 31 Jan 2005 11:59:07 -0000
-@@ -58,7 +58,7 @@
- public:
- /// initialise and run painter
- RowPainter(PainterInfo & pi, LyXText const & text,
-- pit_type pit, Row & row, int x, int y);
-+ pit_type pit, Row const & row, int x, int y);
-
- // paint various parts
- void paintAppendix();
-@@ -101,7 +101,7 @@
- ParagraphList & pars_;
-
- /// The row to paint
-- Row & row_;
-+ Row const & row_;
-
- /// Row's paragraph
- pit_type const pit_;
-@@ -119,7 +119,7 @@
-
-
- RowPainter::RowPainter(PainterInfo & pi,
-- LyXText const & text, pit_type pit, Row & row, int x, int y)
-+ LyXText const & text, pit_type pit, Row const & row, int x, int y)
- : bv_(*pi.base.bv), pain_(pi.pain), text_(text), pars_(text.paragraphs()),
- row_(row), pit_(pit), par_(text.paragraphs()[pit]),
- xo_(x), yo_(y), width_(text_.width())
-@@ -178,7 +178,7 @@
- PainterInfo pi(const_cast<BufferView *>(&bv_), pain_);
- pi.base.font = getFont(pos);
- pi.ltr_pos = (text_.bidi.level(pos) % 2 == 0);
-- theCoords.insets_.add(inset, int(x_), yo_);
-+ theCoords.insets().add(inset, int(x_), yo_);
- inset->drawSelection(pi, int(x_), yo_);
- inset->draw(pi, int(x_), yo_);
- x_ += inset->width();
-@@ -738,12 +738,12 @@
-
- Paragraph & par = text.paragraphs()[pit];
-
-- RowList::iterator const rb = par.rows().begin();
-- RowList::iterator const re = par.rows().end();
-- theCoords.pars_[&text][pit] = Point(x, y);
-+ RowList::const_iterator const rb = par.rows().begin();
-+ RowList::const_iterator const re = par.rows().end();
-+ theCoords.parPos()[&text][pit] = Point(x, y);
-
- y -= rb->ascent();
-- for (RowList::iterator rit = rb; rit != re; ++rit) {
-+ for (RowList::const_iterator rit = rb; rit != re; ++rit) {
- y += rit->ascent();
- bool const inside = (y + rit->descent() >= 0
- && y - rit->ascent() < ww);
-@@ -801,12 +801,12 @@
- }
-
- // and grey out above (should not happen later)
-- lyxerr << "par ascent: " << text->getPar(vi.p1).ascent() << endl;
-+// lyxerr << "par ascent: " << text->getPar(vi.p1).ascent() << endl;
- if (vi.y1 > 0)
- pain.fillRectangle(0, 0, bv.workWidth(), vi.y1, LColor::bottomarea);
-
- // and possibly grey out below
-- lyxerr << "par descent: " << text->getPar(vi.p1).ascent() << endl;
-+// lyxerr << "par descent: " << text->getPar(vi.p1).ascent() << endl;
- if (vi.y2 < bv.workHeight())
- pain.fillRectangle(0, vi.y2, bv.workWidth(), bv.workHeight() - vi.y2, LColor::bottomarea);
- }
-Index: src/text.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text.C,v
-retrieving revision 1.592
-diff -u -r1.592 text.C
---- src/text.C 19 Jan 2005 08:42:32 -0000 1.592
-+++ src/text.C 31 Jan 2005 10:05:42 -0000
-@@ -376,12 +376,6 @@
- } // namespace anon
-
-
--BufferView * LyXText::bv()
--{
-- BOOST_ASSERT(bv_owner != 0);
-- return bv_owner;
--}
--
-
- BufferView * LyXText::bv() const
- {
-@@ -1017,7 +1011,7 @@
-
- }
-
--void LyXText::breakParagraph(LCursor & cur, char keep_layout)
-+void LyXText::breakParagraph(LCursor & cur, bool keep_layout)
- {
- BOOST_ASSERT(this == cur.text());
- // allow only if at start or end, or all previous is new text
-@@ -1045,25 +1039,30 @@
- if (cur.pos() != cur.lastpos() && cpar.isLineSeparator(cur.pos()))
- cpar.erase(cur.pos());
-
-- // break the paragraph
-+ // How should the layout for the new paragraph be?
-+ int preserve_layout = 0;
- if (keep_layout)
-- keep_layout = 2;
-+ preserve_layout = 2;
- else
-- keep_layout = layout->isEnvironment();
-+ preserve_layout = layout->isEnvironment();
-+
-+ // We need to remember this before we break the paragraph, because
-+ // that invalidates the layout variable
-+ bool sensitive = layout->labeltype == LABEL_SENSITIVE;
-
-- // we need to set this before we insert the paragraph. IMO the
-- // breakParagraph call should return a bool if it inserts the
-- // paragraph before or behind and we should react on that one
-- // but we can fix this in 1.3.0 (Jug 20020509)
-+ // we need to set this before we insert the paragraph.
- bool const isempty = cpar.allowEmpty() && cpar.empty();
-+
- ::breakParagraph(cur.buffer().params(), paragraphs(), cpit,
-- cur.pos(), keep_layout);
-+ cur.pos(), preserve_layout);
-+
-+ // After this, neither paragraph contains any rows!
-
- cpit = cur.pit();
- pit_type next_par = cpit + 1;
-
- // well this is the caption hack since one caption is really enough
-- if (layout->labeltype == LABEL_SENSITIVE) {
-+ if (sensitive) {
- if (cur.pos() == 0)
- // set to standard-layout
- pars_[cpit].applyLayout(tclass.defaultLayout());
-@@ -1072,16 +1071,6 @@
- pars_[next_par].applyLayout(tclass.defaultLayout());
- }
-
-- // if the cursor is at the beginning of a row without prior newline,
-- // move one row up!
-- // This touches only the screen-update. Otherwise we would may have
-- // an empty row on the screen
-- if (cur.pos() != 0 && cur.textRow().pos() == cur.pos()
-- && !pars_[cpit].isNewline(cur.pos() - 1))
-- {
-- cursorLeft(cur);
-- }
--
- while (!pars_[next_par].empty() && pars_[next_par].isNewline(0))
- pars_[next_par].erase(0);
-
-@@ -1172,8 +1161,8 @@
- cur.message(_("You cannot insert a space at the "
- "beginning of a paragraph. Please read the Tutorial."));
- sent_space_message = true;
-- return;
- }
-+ return;
- }
- BOOST_ASSERT(cur.pos() > 0);
- if (par.isLineSeparator(cur.pos() - 1)
-@@ -1686,7 +1675,7 @@
-
- dim.asc += par.rows()[0].ascent();
- dim.des -= par.rows()[0].ascent();
-- par.dim_ = dim;
-+ par.dim() = dim;
- //lyxerr << "redoParagraph: " << par.rows().size() << " rows\n";
- }
-
-Index: src/text2.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text2.C,v
-retrieving revision 1.594
-diff -u -r1.594 text2.C
---- src/text2.C 6 Jan 2005 16:39:30 -0000 1.594
-+++ src/text2.C 31 Jan 2005 12:01:19 -0000
-@@ -119,7 +119,7 @@
- InsetBase * inset = iit->inset;
- #if 1
- lyxerr << "examining inset " << inset << endl;
-- if (theCoords.insets_.has(inset))
-+ if (theCoords.getInsets().has(inset))
- lyxerr
- << " xo: " << inset->xo() << "..."
- << inset->xo() + inset->width()
-@@ -1122,8 +1122,8 @@
- pit_type LyXText::getPitNearY(int y) const
- {
- BOOST_ASSERT(!paragraphs().empty());
-- BOOST_ASSERT(theCoords.pars_.find(this) != theCoords.pars_.end());
-- CoordCache::InnerParPosCache const & cc = theCoords.pars_[this];
-+ BOOST_ASSERT(theCoords.getParPos().find(this) != theCoords.getParPos().end());
-+ CoordCache::InnerParPosCache const & cc = theCoords.getParPos().find(this)->second;
- lyxerr << "LyXText::getPitNearY: y: " << y << " cache size: "
- << cc.size() << endl;
-
-@@ -1282,8 +1282,6 @@
-
- void LyXText::cursorDown(LCursor & cur)
- {
--
--
- Paragraph const & par = cur.paragraph();
- int const row = par.pos2row(cur.pos());
- int const x = cur.targetX();
-Index: src/text3.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text3.C,v
-retrieving revision 1.280
-diff -u -r1.280 text3.C
---- src/text3.C 27 Jan 2005 21:05:34 -0000 1.280
-+++ src/text3.C 31 Jan 2005 12:11:17 -0000
-@@ -353,7 +353,7 @@
- void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
- {
- lyxerr[Debug::ACTION] << "LyXText::dispatch: cmd: " << cmd << endl;
-- //lyxerr << "*** LyXText::dispatch: cmd: " << cmd << endl;
-+ lyxerr << "*** LyXText::dispatch: cmd: " << cmd << endl;
-
- BOOST_ASSERT(cur.text() == this);
- BufferView * bv = &cur.bv();
-Index: src/client/client.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/client/client.C,v
-retrieving revision 1.7
-diff -u -r1.7 client.C
---- src/client/client.C 20 Jan 2005 15:38:13 -0000 1.7
-+++ src/client/client.C 21 Jan 2005 09:43:09 -0000
-@@ -25,12 +25,14 @@
- # include <unistd.h>
- #endif
-
-+#ifndef _WIN32
- // select()
--#include <sys/select.h>
-+# include <sys/select.h>
-
- // socket(), connect()
--#include <sys/socket.h>
--#include <sys/un.h>
-+# include <sys/socket.h>
-+# include <sys/un.h>
-+#endif
-
- // fcntl()
- #include <fcntl.h>
-Index: src/frontends/LyXView.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/LyXView.C,v
-retrieving revision 1.49
-diff -u -r1.49 LyXView.C
---- src/frontends/LyXView.C 20 Jan 2005 15:38:14 -0000 1.49
-+++ src/frontends/LyXView.C 21 Jan 2005 09:43:10 -0000
-@@ -39,7 +39,9 @@
-
- #include <boost/bind.hpp>
-
--#include <sys/time.h>
-+#ifndef _WIN32
-+# include <sys/time.h>
-+#endif
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif
-Index: src/frontends/qt2/QDialogView.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/QDialogView.h,v
-retrieving revision 1.10
-diff -u -r1.10 QDialogView.h
---- src/frontends/qt2/QDialogView.h 19 May 2004 15:11:33 -0000 1.10
-+++ src/frontends/qt2/QDialogView.h 25 Jan 2005 12:45:06 -0000
-@@ -13,6 +13,7 @@
- #define QDIALOGVIEW_H
-
- #include "Dialog.h"
-+
- #include <boost/scoped_ptr.hpp>
-
- #include <qapplication.h>
-@@ -110,7 +111,11 @@
- template <class GUIDialog>
- QDialog * QView<GUIDialog>::form() const
- {
-- return dialog_.get();
-+ /* Brain dead MSVC compiler wants to know the class hierarchy at the
-+ definition site of the template, rather than the instantation point
-+ to downcast correctly. So, rather than including all dialogs to
-+ provide that, we just cast it with the ugly hammer. */
-+ return (QDialog *) dialog_.get();
- }
-
-
-Index: src/frontends/qt2/QLPainter.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/QLPainter.C,v
-retrieving revision 1.34
-diff -u -r1.34 QLPainter.C
---- src/frontends/qt2/QLPainter.C 20 May 2004 09:36:27 -0000 1.34
-+++ src/frontends/qt2/QLPainter.C 31 Jan 2005 12:29:53 -0000
-@@ -202,8 +202,9 @@
- int tmpx = x;
- size_t ls = s.length();
- for (size_t i = 0; i < ls; ++i) {
-- QChar const c = s[i].upper();
-- if (c != s[i]) {
-+ // Brain-dead MSVC wants at(i) rather than operator[]
-+ QChar const c = s.at(i).upper();
-+ if (c != s.at(i)) {
- qp_->setFont(qsmallfont);
- qp_->drawText(tmpx, y, c);
- tmpx += qsmallfontm.width(c);
-@@ -229,7 +230,8 @@
- #if QT_VERSION >= 300
- str.setLength(ls);
- for (size_t i = 0; i < ls; ++i)
-- str[i] = QChar(encoding->ucs(s[i]));
-+ // Brain-dead MSVC wants at(i) rather than operator[]
-+ str.at(i) = QChar(encoding->ucs(s[i]));
- // HACK: QT3 refuses to show single compose characters
- if (ls == 1 && str[0].unicode() >= 0x05b0 && str[0].unicode() <= 0x05c2)
- str = ' ' + str;
-Index: src/frontends/qt2/lengthvalidator.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/lengthvalidator.h,v
-retrieving revision 1.4
-diff -u -r1.4 lengthvalidator.h
---- src/frontends/qt2/lengthvalidator.h 22 Nov 2004 12:22:19 -0000 1.4
-+++ src/frontends/qt2/lengthvalidator.h 23 Jan 2005 09:47:57 -0000
-@@ -19,7 +19,7 @@
- class QWidget;
-
-
--class Q_EXPORT LengthValidator : public QValidator
-+class LengthValidator : public QValidator
- {
- Q_OBJECT
- public:
-Index: src/insets/inset.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/inset.C,v
-retrieving revision 1.131
-diff -u -r1.131 inset.C
---- src/insets/inset.C 5 Jan 2005 20:21:26 -0000 1.131
-+++ src/insets/inset.C 31 Jan 2005 09:31:42 -0000
-@@ -79,5 +79,5 @@
- void InsetOld::setPosCache(PainterInfo const &, int x, int y) const
- {
- //lyxerr << "InsetOld:: position cache to " << x << " " << y << std::endl;
-- theCoords.insets_.add(this, x, y);
-+ theCoords.insets().add(this, x, y);
- }
-Index: src/insets/insetbase.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insetbase.C,v
-retrieving revision 1.39
-diff -u -r1.39 insetbase.C
---- src/insets/insetbase.C 19 Jan 2005 15:03:30 -0000 1.39
-+++ src/insets/insetbase.C 31 Jan 2005 12:01:20 -0000
-@@ -293,13 +293,13 @@
-
- int InsetBase::xo() const
- {
-- return theCoords.insets_.x(this);
-+ return theCoords.getInsets().x(this);
- }
-
-
- int InsetBase::yo() const
- {
-- return theCoords.insets_.y(this);
-+ return theCoords.getInsets().y(this);
- }
-
-
-@@ -310,7 +310,7 @@
- // << " x1: " << xo() << " x2: " << xo() + width()
- // << " y1: " << yo() - ascent() << " y2: " << yo() + descent()
- // << std::endl;
-- return theCoords.insets_.has(this)
-+ return theCoords.getInsets().has(this)
- && x >= xo()
- && x <= xo() + width()
- && y >= yo() - ascent()
-Index: src/insets/insettabular.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/insettabular.C,v
-retrieving revision 1.452
-diff -u -r1.452 insettabular.C
---- src/insets/insettabular.C 27 Jan 2005 21:05:42 -0000 1.452
-+++ src/insets/insettabular.C 31 Jan 2005 12:01:20 -0000
-@@ -1024,7 +1024,7 @@
- {
- int xx = 0;
- int yy = 0;
-- Point o = theCoords.insets_.xy(&inset);
-+ Point o = theCoords.getInsets().xy(&inset);
- int const xo = o.x_;
- int const yo = o.y_;
-
-@@ -1055,7 +1055,7 @@
- idx_type idx_min = 0;
- int dist_min = std::numeric_limits<int>::max();
- for (idx_type i = 0; i < nargs(); ++i) {
-- if (theCoords.insets_.has(tabular.getCellInset(i).get())) {
-+ if (theCoords.getInsets().has(tabular.getCellInset(i).get())) {
- int d = dist(*tabular.getCellInset(i), x, y);
- if (d < dist_min) {
- dist_min = d;
-Index: src/insets/updatableinset.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/insets/updatableinset.C,v
-retrieving revision 1.50
-diff -u -r1.50 updatableinset.C
---- src/insets/updatableinset.C 27 Jan 2005 21:05:43 -0000 1.50
-+++ src/insets/updatableinset.C 31 Jan 2005 12:01:20 -0000
-@@ -43,7 +43,7 @@
- }
-
- int const workW = bv.workWidth();
-- int xo_ = theCoords.insets_.x(this);
-+ int xo_ = theCoords.getInsets().x(this);
- int const tmp_xo_ = xo_ - scx;
-
- if (tmp_xo_ > 0 && tmp_xo_ + width() < workW)
-@@ -63,7 +63,7 @@
-
- void UpdatableInset::scroll(BufferView & bv, int offset) const
- {
-- int const xo_ = theCoords.insets_.x(this);
-+ int const xo_ = theCoords.getInsets().x(this);
- if (offset > 0) {
- if (!scx && xo_ >= 20)
- return;
-Index: src/mathed/math_data.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/mathed/math_data.C,v
-retrieving revision 1.59
-diff -u -r1.59 math_data.C
---- src/mathed/math_data.C 5 Jan 2005 20:21:27 -0000 1.59
-+++ src/mathed/math_data.C 31 Jan 2005 12:01:19 -0000
-@@ -411,17 +411,17 @@
- void MathArray::setXY(int x, int y) const
- {
- //lyxerr << "setting position cache for MathArray " << this << std::endl;
-- theCoords.arrays_.add(this, x, y);
-+ theCoords.arrays().add(this, x, y);
- }
-
-
- int MathArray::xo() const
- {
-- return theCoords.arrays_.x(this);
-+ return theCoords.getArrays().x(this);
- }
-
-
- int MathArray::yo() const
- {
-- return theCoords.arrays_.y(this);
-+ return theCoords.getArrays().y(this);
- }
-Index: src/mathed/math_diminset.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/mathed/math_diminset.C,v
-retrieving revision 1.23
-diff -u -r1.23 math_diminset.C
---- src/mathed/math_diminset.C 14 Aug 2004 14:03:42 -0000 1.23
-+++ src/mathed/math_diminset.C 31 Jan 2005 09:31:42 -0000
-@@ -40,5 +40,5 @@
- void MathDimInset::setPosCache(PainterInfo const &, int x, int y) const
- {
- //lyxerr << "MathDimInset: cache to " << x << " " << y << std::endl;
-- theCoords.insets_.add(this, x, y);
-+ theCoords.insets().add(this, x, y);
- }
-Index: src/mathed/math_nestinset.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/mathed/math_nestinset.C,v
-retrieving revision 1.143
-diff -u -r1.143 math_nestinset.C
---- src/mathed/math_nestinset.C 6 Jan 2005 16:07:01 -0000 1.143
-+++ src/mathed/math_nestinset.C 31 Jan 2005 12:01:19 -0000
-@@ -110,23 +110,23 @@
- // absolute again when actually drawing the cursor. What a mess.
- BOOST_ASSERT(ptr_cmp(&sl.inset(), this));
- MathArray const & ar = sl.cell();
-- if (!theCoords.arrays_.has(&ar)) {
-- // this can (semi-)legally happen if we jsut created this cell
-+ if (!theCoords.getArrays().has(&ar)) {
-+ // this can (semi-)legally happen if we just created this cell
- // and it never has been drawn before. So don't ASSERT.
- //lyxerr << "no cached data for array " << &ar << endl;
- x = 0;
- y = 0;
- return;
- }
-- Point const pt = theCoords.arrays_.xy(&ar);
-- if (!theCoords.insets_.has(this)) {
-+ Point const pt = theCoords.getArrays().xy(&ar);
-+ if (!theCoords.getInsets().has(this)) {
- // same as above
- //lyxerr << "no cached data for inset " << this << endl;
- x = 0;
- y = 0;
- return;
- }
-- Point const pt2 = theCoords.insets_.xy(this);
-+ Point const pt2 = theCoords.getInsets().xy(this);
- //lyxerr << "retrieving position cache for MathArray "
- // << pt.x_ << ' ' << pt.y_ << std::endl;
- x = pt.x_ - pt2.x_ + ar.pos2x(sl.pos());
-Index: src/support/chdir.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/chdir.C,v
-retrieving revision 1.10
-diff -u -r1.10 chdir.C
---- src/support/chdir.C 20 Jan 2005 15:38:14 -0000 1.10
-+++ src/support/chdir.C 25 Jan 2005 12:47:15 -0000
-@@ -16,11 +16,17 @@
- # include <unistd.h>
- #endif
-
-+#ifdef _WIN32
-+# include <windows.h>
-+#endif
-+
- int lyx::support::chdir(std::string const & name)
- {
--#ifndef __EMX__
-- return ::chdir(name.c_str());
--#else
-+#ifdef __EMX__
- return ::_chdir2(name.c_str());
-+#elif defined(_WIN32)
-+ return SetCurrentDirectory(name.c_str()) != 0 ? 0 : -1;
-+#else
-+ return ::chdir(name.c_str());
- #endif
- }
-Index: src/support/filetools.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/filetools.C,v
-retrieving revision 1.204
-diff -u -r1.204 filetools.C
---- src/support/filetools.C 31 Jan 2005 10:42:23 -0000 1.204
-+++ src/support/filetools.C 31 Jan 2005 11:08:10 -0000
-@@ -1153,6 +1153,11 @@
-
- cmd_ret const RunCommand(string const & cmd)
- {
-+#ifdef _WIN32
-+ // TODO: Implement this, or merge it into forkedcall.
-+ // Used for lyx2lyx in buffer.C, echo in math_extern and kpse in this file
-+ return make_pair(-1, string());
-+#else
- // FIXME: replace all calls to RunCommand with ForkedCall
- // (if the output is not needed) or the code in ispell.C
- // (if the output is needed).
-@@ -1193,6 +1198,7 @@
- sigprocmask(SIG_SETMASK, &oldMask, 0);
-
- return make_pair(pret, ret);
-+#endif
- }
-
-
-Index: src/support/forkedcall.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/forkedcall.C,v
-retrieving revision 1.21
-diff -u -r1.21 forkedcall.C
---- src/support/forkedcall.C 20 Jan 2005 15:38:14 -0000 1.21
-+++ src/support/forkedcall.C 25 Jan 2005 12:41:14 -0000
-@@ -30,6 +30,10 @@
- #include "support/lyxlib.h"
- #include "support/filetools.h"
- #include "support/os.h"
-+#ifdef _WIN32
-+#include "os_win32.h"
-+#include <process.h>
-+#endif
-
- #include "debug.h"
-
-@@ -41,7 +45,9 @@
- #include <csignal>
- #include <cstdlib>
- #include <sys/types.h>
--#include <sys/wait.h>
-+#ifndef _WIN32
-+# include <sys/wait.h>
-+#endif
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif
-@@ -70,7 +76,9 @@
- if (secs > 0) {
- new Murder(secs, pid);
- } else if (pid != 0) {
-+#ifdef SIGKILL
- lyx::support::kill(pid, SIGKILL);
-+#endif
- }
- }
-
-@@ -78,7 +86,9 @@
- void kill()
- {
- if (pid_ != 0) {
-+#ifdef SIGKILL
- lyx::support::kill(pid_, SIGKILL);
-+#endif
- }
- lyxerr << "Killed " << pid_ << std::endl;
- delete this;
-@@ -152,14 +162,16 @@
- if (!pid())
- return false;
-
-+#ifndef _WIN32
- // Un-UNIX like, but we don't have much use for
- // knowing if a zombie exists, so just reap it first.
- int waitstatus;
- waitpid(pid(), &waitstatus, WNOHANG);
-
- // Racy of course, but it will do.
-- if (::kill(pid(), 0) && errno == ESRCH)
-+ if (lyx::kill(pid(), 0) && errno == ESRCH)
- return false;
-+#endif
- return true;
- }
-
-@@ -178,6 +190,7 @@
- Murder::killItDead(0, pid());
-
- } else {
-+#ifdef SIGHUP
- int ret = lyx::support::kill(pid(), SIGHUP);
-
- // The process is already dead if wait_for_death is false
-@@ -186,6 +199,7 @@
- if (wait_for_death) {
- Murder::killItDead(tolerance, pid());
- }
-+#endif
- }
- }
-
-@@ -195,6 +209,7 @@
- {
- // We'll pretend that the child returns 1 on all error conditions.
- retval_ = 1;
-+#ifndef _WIN32
- int status;
- bool wait = true;
- while (wait) {
-@@ -223,6 +238,7 @@
- wait = false;
- }
- }
-+#endif
- return retval_;
- }
-
-@@ -299,7 +315,12 @@
- std::cout << *ait << std::endl;
- argv.push_back(0);
-
--#ifndef __EMX__
-+#ifdef __EMX
-+ pid_t const cpid = spawnvp(P_SESSION|P_DEFAULT|P_MINIMIZE|P_BACKGROUND,
-+ argv[0], &*argv.begin());
-+#elif defined(_WIN32)
-+ pid_t const cpid = spawnvp(_P_NOWAIT, argv[0], &*argv.begin());
-+#else
- pid_t const cpid = ::fork();
- if (cpid == 0) {
- // Child
-@@ -310,9 +331,6 @@
- << strerror(errno) << endl;
- _exit(1);
- }
--#else
-- pid_t const cpid = spawnvp(P_SESSION|P_DEFAULT|P_MINIMIZE|P_BACKGROUND,
-- argv[0], &*argv.begin());
- #endif
-
- if (cpid < 0) {
-Index: src/support/forkedcall.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/forkedcall.h,v
-retrieving revision 1.19
-diff -u -r1.19 forkedcall.h
---- src/support/forkedcall.h 26 Sep 2004 14:19:47 -0000 1.19
-+++ src/support/forkedcall.h 17 Jan 2005 12:17:09 -0000
-@@ -31,6 +31,10 @@
-
- #include <sys/types.h>
-
-+#ifdef _WIN32
-+typedef int pid_t;
-+#endif
-+
- namespace lyx {
- namespace support {
-
-Index: src/support/forkedcontr.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/forkedcontr.C,v
-retrieving revision 1.27
-diff -u -r1.27 forkedcontr.C
---- src/support/forkedcontr.C 20 Jan 2005 15:38:14 -0000 1.27
-+++ src/support/forkedcontr.C 21 Jan 2005 09:51:07 -0000
-@@ -19,14 +19,22 @@
-
- #include "debug.h"
-
-+#ifdef _WIN32
-+#include "os_win32.h"
-+#include <windows.h>
-+#endif
-+
- #include <boost/bind.hpp>
-
- #include <cerrno>
- #include <cstdlib>
-+
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif
--#include <sys/wait.h>
-+#ifndef _WIN32
-+# include <sys/wait.h>
-+#endif
-
- using boost::bind;
-
-@@ -176,7 +184,9 @@
- ForkedcallsController::Data & store =
- fcc.reaped_children[++fcc.current_child];
- // Clean up the child process.
-+#ifndef _WIN32
- store.pid = wait(&store.status);
-+#endif
- }
-
- } // namespace anon
-@@ -193,11 +203,12 @@
- ForkedcallsController::ForkedcallsController()
- : reaped_children(50), current_child(-1)
- {
-+#ifndef _WIN32
- signal(SIGCHLD, child_handler);
--
- sigemptyset(&oldMask);
- sigemptyset(&newMask);
- sigaddset(&newMask, SIGCHLD);
-+#endif
- }
-
-
-@@ -206,7 +217,9 @@
- // I want to print or something.
- ForkedcallsController::~ForkedcallsController()
- {
-+#ifndef _WIN32
- signal(SIGCHLD, SIG_DFL);
-+#endif
- }
-
-
-@@ -215,6 +228,7 @@
- forkedCalls.push_back(newcall.clone());
-
- if (forkedCalls.size() > reaped_children.size()) {
-+#ifndef _WIN32
- // Block the SIGCHLD signal.
- sigprocmask(SIG_BLOCK, &newMask, &oldMask);
-
-@@ -222,6 +236,7 @@
-
- // Unblock the SIGCHLD signal and restore the old mask.
- sigprocmask(SIG_SETMASK, &oldMask, 0);
-+#endif
- }
- }
-
-@@ -255,8 +270,10 @@
- if (current_child == -1)
- return;
-
-+#ifndef _WIN32
- // Block the SIGCHLD signal.
- sigprocmask(SIG_BLOCK, &newMask, &oldMask);
-+#endif
-
- for (int i = 0; i != 1 + current_child; ++i) {
- Data & store = reaped_children[i];
-@@ -312,8 +329,10 @@
- // Reset the counter
- current_child = -1;
-
-+#ifndef _WIN32
- // Unblock the SIGCHLD signal and restore the old mask.
- sigprocmask(SIG_SETMASK, &oldMask, 0);
-+#endif
- }
-
- } // namespace support
-Index: src/support/forkedcontr.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/forkedcontr.h,v
-retrieving revision 1.18
-diff -u -r1.18 forkedcontr.h
---- src/support/forkedcontr.h 7 Nov 2004 13:22:51 -0000 1.18
-+++ src/support/forkedcontr.h 23 Jan 2005 12:25:33 -0000
-@@ -19,7 +19,10 @@
- #include <boost/shared_ptr.hpp>
-
- #include <csignal>
--//#include <sys/types.h> // needed for pid_t
-+#ifdef _WIN32
-+typedef int pid_t;
-+#endif
-+#include <sys/types.h> // needed for pid_t
- #include <list>
- #include <vector>
-
-@@ -79,8 +82,10 @@
- /// The child processes
- ListType forkedCalls;
-
-+#ifndef _WIN32
- /// Used to block SIGCHLD signals.
- sigset_t newMask, oldMask;
-+#endif
- };
-
- } // namespace support
-Index: src/support/fs_extras.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/fs_extras.C,v
-retrieving revision 1.1
-diff -u -r1.1 fs_extras.C
---- src/support/fs_extras.C 31 Jan 2005 10:42:24 -0000 1.1
-+++ src/support/fs_extras.C 31 Jan 2005 11:31:39 -0000
-@@ -22,6 +22,10 @@
- # endif
- # endif
-
-+#ifdef BOOST_WINDOWS
-+# include <windows.h>
-+#endif
-+
- namespace fs = boost::filesystem;
-
- namespace boost {
-@@ -32,6 +36,12 @@
- #ifdef BOOST_POSIX
- return ::access(ph.string().c_str(), R_OK) == 0;
- #endif
-+#ifdef BOOST_WINDOWS
-+ DWORD const attr = ::GetFileAttributes( ph.string().c_str() );
-+ return attr != INVALID_FILE_ATTRIBUTES &&
-+ ( attr & FILE_ATTRIBUTE_DIRECTORY ) != FILE_ATTRIBUTE_DIRECTORY;
-+
-+#endif
- }
-
-
-@@ -40,14 +50,21 @@
- #ifdef BOOST_POSIX
- return ::access(ph.string().c_str(), W_OK) == 0;
- #endif
-+#ifdef BOOST_WINDOWS
-+ DWORD const attr = ::GetFileAttributes( ph.string().c_str() );
-+ if (attr != INVALID_FILE_ATTRIBUTES && (attr & FILE_ATTRIBUTE_READONLY) != 0) {
-+ // Read-only - no write access
-+ return false;
-+ }
-+ return attr != INVALID_FILE_ATTRIBUTES &&
-+ ( attr & FILE_ATTRIBUTE_DIRECTORY ) != FILE_ATTRIBUTE_DIRECTORY;
-+#endif
- }
-
-
- bool is_readonly(path const & ph)
- {
--#ifdef BOOST_POSIX
- return is_readable(ph) && !is_writable(ph);
--#endif
- }
-
-
-@@ -115,6 +132,16 @@
- "boost::filesystem::copy_file",
- source, target,
- fs::detail::system_error_code()));
-+#endif
-+
-+#ifdef BOOST_WINDOWS
-+ if (::CopyFile(source.string().c_str(), target.string().c_str(), FALSE) == 0) {
-+ boost::throw_exception(
-+ filesystem_error(
-+ "boost::filesystem::copy_file",
-+ source, target,
-+ fs::detail::system_error_code()));
-+ }
- #endif
- }
-
-Index: src/support/getcwd.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/getcwd.C,v
-retrieving revision 1.12
-diff -u -r1.12 getcwd.C
---- src/support/getcwd.C 20 Jan 2005 15:38:14 -0000 1.12
-+++ src/support/getcwd.C 21 Jan 2005 09:50:41 -0000
-@@ -19,6 +19,10 @@
- # include <unistd.h>
- #endif
-
-+#ifdef _WIN32
-+# include <windows.h>
-+#endif
-+
- using boost::scoped_array;
-
- using std::string;
-@@ -29,10 +33,13 @@
- inline
- char * l_getcwd(char * buffer, size_t size)
- {
--#ifndef __EMX__
-- return ::getcwd(buffer, size);
--#else
-+#ifdef __EMX
- return ::_getcwd2(buffer, size);
-+#elif defined(_WIN32)
-+ GetCurrentDirectory(size, buffer);
-+ return buffer;
-+#else
-+ return ::getcwd(buffer, size);
- #endif
- }
-
-Index: src/support/kill.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/kill.C,v
-retrieving revision 1.12
-diff -u -r1.12 kill.C
---- src/support/kill.C 7 Nov 2004 13:22:51 -0000 1.12
-+++ src/support/kill.C 20 Jan 2005 11:46:47 -0000
-@@ -15,7 +15,38 @@
- #include <sys/types.h>
- #include <csignal>
-
-+#ifdef _WIN32
-+#include "debug.h"
-+#include "os.h"
-+
-+#include <windows.h>
-+#include <errno.h>
-+
-+using std::endl;
-+#endif //_WIN32
-+
- int lyx::support::kill(int pid, int sig)
- {
-+#ifdef _WIN32
-+ if (pid == (int)GetCurrentProcessId()) {
-+ return -(raise(sig));
-+ } else {
-+ HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
-+ if (!hProcess) {
-+ 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/mkdir.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/mkdir.C,v
-retrieving revision 1.16
-diff -u -r1.16 mkdir.C
---- src/support/mkdir.C 20 Jan 2005 15:38:14 -0000 1.16
-+++ src/support/mkdir.C 25 Jan 2005 12:52:02 -0000
-@@ -18,6 +18,9 @@
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif
-+#ifdef _WIN32
-+# include <Windows.h>
-+#endif
-
- int lyx::support::mkdir(std::string const & pathname, unsigned long int mode)
- {
-@@ -30,12 +33,12 @@
- // POSIX
- return ::mkdir(pathname.c_str(), mode_t(mode));
- # endif
--#else
--# if HAVE__MKDIR
-+#elif defined(_WIN32)
- // plain Windows 32
-- return ::_mkdir(pathname.c_str());
--# else
--# error "Don't know how to create a directory on this system."
--# endif
-+ return CreateDirectory(pathname.c_str(), 0) != 0 ? 0 : -1;
-+#elif HAVE__MKDIR
-+ return ::_mkdir(pathname.c_str());
-+#else
-+# error "Don't know how to create a directory on this system."
- #endif
- }
-Index: src/support/os_win32.h
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/os_win32.h,v
-retrieving revision 1.1
-diff -u -r1.1 os_win32.h
---- src/support/os_win32.h 22 Jan 2005 15:36:53 -0000 1.1
-+++ src/support/os_win32.h 25 Jan 2005 12:40:09 -0000
-@@ -65,16 +65,6 @@
- #define O_NONBLOCK 0x4000
- inline int fcntl (int, int, ...) {return -1;}
-
--//signal.h
--#define SIGHUP 1
--#define SIGKILL 9
--
--//sys/time.h
--//struct timeval {
--// long tv_sec;
--// long tv_usec;
--//};
--
- //unistd.h
- inline int fork () {return -1;}
- #define pipe(a) _pipe(a,0,0)
-Index: src/support/rmdir.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/rmdir.C,v
-retrieving revision 1.8
-diff -u -r1.8 rmdir.C
---- src/support/rmdir.C 20 Jan 2005 15:38:14 -0000 1.8
-+++ src/support/rmdir.C 25 Jan 2005 12:13:39 -0000
-@@ -16,7 +16,15 @@
- # include <unistd.h>
- #endif
-
-+#ifdef _WIN32
-+# include <windows.h>
-+#endif
-+
- int lyx::support::rmdir(std::string const & dir)
- {
-- return ::rmdir(dir.c_str());
-+#ifdef _WIN32
-+ return ::RemoveDirectory(dir.c_str()) != 0 ? 0 : -1;
-+#else
-+ return :rmdir(dir.c_str());
-+#endif
- }
-Index: src/support/socktools.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/socktools.C,v
-retrieving revision 1.6
-diff -u -r1.6 socktools.C
---- src/support/socktools.C 20 Jan 2005 15:38:14 -0000 1.6
-+++ src/support/socktools.C 21 Jan 2005 09:43:42 -0000
-@@ -15,8 +15,10 @@
-
- #include "debug.h"
-
-+#ifndef _WIN32
- #include <sys/socket.h>
- #include <sys/un.h>
-+#endif
- #include <fcntl.h>
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
-@@ -48,6 +50,7 @@
- // special file 'name' will be created in the filesystem.
- int listen(string const & name, int queue)
- {
-+#ifndef _WIN32
- int fd; // File descriptor for the socket
- sockaddr_un addr; // Structure that hold the socket address
-
-@@ -105,14 +108,17 @@
- lyx::support::unlink(name);
- return -1;
- }
--
- return fd;
-+#else
-+ return -1;
-+#endif
- }
-
- // Returns a file descriptor for a new connection from the socket
- // descriptor 'sd' (or -1 in case of error)
- int accept(int sd)
- {
-+#ifndef _WIN32
- int fd;
-
- // Returns the new file descriptor or -1 in case of error
-@@ -132,6 +138,9 @@
- return -1;
- }
- return fd;
-+#else
-+ return -1;
-+#endif
- }
-
- } // namespace socktools
-Index: src/support/tempname.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/tempname.C,v
-retrieving revision 1.25
-diff -u -r1.25 tempname.C
---- src/support/tempname.C 20 Jan 2005 15:38:14 -0000 1.25
-+++ src/support/tempname.C 24 Jan 2005 07:51:08 -0000
-@@ -30,6 +30,10 @@
- # include <sys/stat.h>
- #endif
-
-+#ifdef _WIN32
-+# include <io.h>
-+#endif
-+
- using boost::scoped_array;
-
- using std::string;
-@@ -42,6 +46,9 @@
- {
- #if defined(HAVE_MKSTEMP)
- return ::mkstemp(templ);
-+#elif defined(_WIN32)
-+ ::_mktemp(templ);
-+ return (int) ::fopen(templ, "w");
- #elif defined(HAVE_MKTEMP)
- // This probably just barely works...
- ::mktemp(templ);
-@@ -58,7 +65,9 @@
- {
- string const tmpdir(dir.empty() ? package().temp_dir() : dir);
- string tmpfl(AddName(tmpdir, mask));
-+#ifndef _WIN32
- tmpfl += convert<string>(getpid());
-+#endif
- tmpfl += "XXXXXX";
-
- // The supposedly safe mkstemp version
-@@ -69,7 +78,11 @@
- int const tmpf = make_tempfile(tmpl.get());
- if (tmpf != -1) {
- string const t(tmpl.get());
-+#ifdef _WIN32
-+ ::fclose((FILE *) tmpf);
-+#else
- ::close(tmpf);
-+#endif
- lyxerr[Debug::FILES] << "Temporary file `" << t
- << "' created." << endl;
- return t;
-Index: src/support/userinfo.C
-===================================================================
-RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/userinfo.C,v
-retrieving revision 1.9
-diff -u -r1.9 userinfo.C
---- src/support/userinfo.C 20 Jan 2005 15:38:14 -0000 1.9
-+++ src/support/userinfo.C 21 Jan 2005 09:43:42 -0000
-@@ -15,7 +15,9 @@
-
- #include <boost/assert.hpp>
-
--#include <pwd.h>
-+#ifndef _WIN32
-+# include <pwd.h>
-+#endif
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif
-@@ -28,6 +30,7 @@
-
- string const user_name()
- {
-+#ifndef _WIN32
- struct passwd * pw(getpwuid(geteuid()));
- BOOST_ASSERT(pw);
-
-@@ -35,6 +38,9 @@
- if (name.empty())
- name = pw->pw_name;
- return name;
-+#else
-+ return "dummy";
-+#endif
- }
-
-
--- /dev/null
+Index: src/DepTable.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/DepTable.C,v
+retrieving revision 1.41
+diff -u -r1.41 DepTable.C
+--- src/DepTable.C 13 Oct 2003 01:01:33 -0000 1.41
++++ src/DepTable.C 19 Jan 2005 10:35:54 -0000
+@@ -26,7 +26,9 @@
+ #include <fstream>
+
+ #ifndef CXX_GLOBAL_CSTD
++# ifndef _WIN32
+ using std::time;
++# endif
+ #endif
+
+ using lyx::support::ltrim;
+Index: src/buffer.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/buffer.C,v
+retrieving revision 1.609
+diff -u -r1.609 buffer.C
+--- src/buffer.C 31 Jan 2005 10:42:17 -0000 1.609
++++ src/buffer.C 31 Jan 2005 11:08:10 -0000
+@@ -77,7 +77,11 @@
+ #include <boost/bind.hpp>
+ #include <boost/filesystem/operations.hpp>
+
+-#include <utime.h>
++#ifdef _WIN32
++# include <windows.h>
++#else
++# include <utime.h>
++#endif
+
+ #include <iomanip>
+ #include <stack>
+Index: src/cursor.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/cursor.C,v
+retrieving revision 1.119
+diff -u -r1.119 cursor.C
+--- src/cursor.C 18 Jan 2005 14:15:55 -0000 1.119
++++ src/cursor.C 31 Jan 2005 11:08:09 -0000
+@@ -58,7 +58,9 @@
+ using std::vector;
+ using std::endl;
+ #ifndef CXX_GLOBAL_CSTD
++# ifndef _WIN32
+ using std::isalpha;
++# endif
+ #endif
+ using std::min;
+ using std::swap;
+Index: src/ispell.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/ispell.C,v
+retrieving revision 1.25
+diff -u -r1.25 ispell.C
+--- src/ispell.C 20 Jan 2005 16:17:36 -0000 1.25
++++ src/ispell.C 23 Jan 2005 12:09:37 -0000
+@@ -24,11 +24,17 @@
+
+ #include "support/forkedcall.h"
+
++#ifdef _WIN32
++# include "support/os_win32.h"
++#endif
++
+ // HP-UX 11.x doesn't have this header
+ #ifdef HAVE_SYS_SELECT_H
+ #include <sys/select.h>
+ #endif
+-#include <sys/time.h>
++#ifndef _WIN32
++# include <sys/time.h>
++#endif
+
+ using boost::shared_ptr;
+
+@@ -88,6 +94,7 @@
+ }
+
+ // child process
++#ifndef _WIN32
+ dup2(pipein[0], STDIN_FILENO);
+ dup2(pipeout[1], STDOUT_FILENO);
+ dup2(pipeerr[1], STDERR_FILENO);
+@@ -180,6 +187,7 @@
+
+ lyxerr << "LyX: Failed to start ispell!" << endl;
+ _exit(0);
++#endif
+ }
+
+
+@@ -191,6 +199,7 @@
+ {
+ lyxerr[Debug::GUI] << "Created ispell" << endl;
+
++#ifndef _WIN32
+ // static due to the setvbuf. Ugly.
+ static char o_buf[BUFSIZ];
+
+@@ -275,6 +284,7 @@
+ close(pipeerr[1]);
+ child_->kill();
+ child_.reset(0);
++#endif
+ }
+
+
+@@ -295,18 +305,23 @@
+ fclose(out);
+ }
+
++#ifndef _WIN32
+ close(pipein[0]);
+ close(pipein[1]);
+ close(pipeout[0]);
+ close(pipeout[1]);
+ close(pipeerr[0]);
+ close(pipeerr[1]);
++#endif
+ delete [] str;
+ }
+
+
+ bool ISpell::select(bool & err_read)
+ {
++#ifdef _WIN32
++ return false;
++#else
+ fd_set infds;
+ struct timeval tv;
+ int retval = 0;
+@@ -316,11 +331,15 @@
+ tv.tv_sec = 2;
+ tv.tv_usec = 0;
+
++#ifdef HAVE_SELECT
+ 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
+ if (retval <= 0)
+@@ -335,6 +354,7 @@
+ fgets(buf, BUFSIZ, in);
+ err_read = false;
+ return false;
++#endif
+ }
+
+
+Index: src/lyx_cb.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyx_cb.C,v
+retrieving revision 1.247
+diff -u -r1.247 lyx_cb.C
+--- src/lyx_cb.C 31 Jan 2005 10:42:18 -0000 1.247
++++ src/lyx_cb.C 31 Jan 2005 10:57:53 -0000
+@@ -44,6 +44,10 @@
+ #include "support/path.h"
+ #include "support/systemcall.h"
+
++#ifdef _WIN32
++# include "support/os_win32.h" // fork()
++#endif
++
+ #include <boost/shared_ptr.hpp>
+ #include <boost/filesystem/operations.hpp>
+
+Index: src/lyxserver.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxserver.C,v
+retrieving revision 1.59
+diff -u -r1.59 lyxserver.C
+--- src/lyxserver.C 20 Jan 2005 15:07:36 -0000 1.59
++++ src/lyxserver.C 21 Jan 2005 09:47:31 -0000
+@@ -54,6 +54,10 @@
+ #include <sys/stat.h>
+ #include <fcntl.h>
+
++#ifdef _WIN32
++# include "support/os_win32.h" // F_SETFL, O_NONBLOCK, fcntl
++#endif
++
+ #ifdef __EMX__
+ #include <cstdlib>
+ #include <io.h>
+@@ -182,6 +186,8 @@
+ // Imported handles can be used both with OS/2 APIs and emx
+ // library functions.
+ fd = _imphandle(os2fd);
++#elif defined(_WIN32)
++
+ #else
+ if (::access(filename.c_str(), F_OK) == 0) {
+ lyxerr << "LyXComm: Pipe " << filename << " already exists.\n"
+@@ -236,10 +242,12 @@
+ }
+ #endif
+
++#ifndef _WIN32
+ if (::close(fd) < 0) {
+ lyxerr << "LyXComm: Could not close pipe " << filename
+ << '\n' << strerror(errno) << endl;
+ }
++#endif
+
+ // OS/2 pipes are deleted automatically
+ #ifndef __EMX__
+@@ -275,7 +283,13 @@
+ errno = 0;
+ int status;
+ // the single = is intended here.
+- while ((status = ::read(infd, charbuf, charbuf_size - 1))) {
++ while ((status =
++#ifndef _WIN32
++ ::read(infd, charbuf, charbuf_size - 1)
++#else
++ -1
++#endif
++ )) {
+
+ if (status > 0) {
+ charbuf[status] = '\0'; // turn it into a c string
+@@ -332,6 +346,9 @@
+
+ if (pipename.empty()) return;
+
++#ifdef _WIN32
++ return;
++#else
+ if (!ready) {
+ lyxerr << "LyXComm: Pipes are closed. Could not send "
+ << msg << endl;
+@@ -342,6 +359,7 @@
+ closeConnection();
+ openConnection();
+ }
++#endif
+ #ifdef __EMX__
+ APIRET rc;
+ int errnum;
+Index: src/lyxsocket.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/lyxsocket.C,v
+retrieving revision 1.6
+diff -u -r1.6 lyxsocket.C
+--- src/lyxsocket.C 23 Jul 2004 19:01:48 -0000 1.6
++++ src/lyxsocket.C 19 Jan 2005 11:18:01 -0000
+@@ -68,7 +68,9 @@
+ LyXServerSocket::~LyXServerSocket()
+ {
+ lyx_gui::unregister_socket_callback(fd_);
++#ifndef _WIN32
+ ::close(fd_);
++#endif
+ lyx::support::unlink(address_);
+ lyxerr[Debug::LYXSERVER] << "lyx: Server socket quitting" << endl;
+ }
+@@ -155,7 +157,11 @@
+ {
+ string const linen(line + '\n');
+ int const size = linen.size();
++#ifndef _WIN32
+ int const written = ::write(fd_, linen.c_str(), size);
++#else
++ int const written = -1;
++#endif
+ if (written < size) { // Allways mean end of connection.
+ if ((written == -1) && (errno == EPIPE)) {
+ // The program will also receive a SIGPIPE
+@@ -194,7 +200,9 @@
+
+ LyXDataSocket::~LyXDataSocket()
+ {
++#ifndef _WIN32
+ ::close(fd_);
++#endif
+
+ lyx_gui::unregister_socket_callback(fd_);
+ lyxerr[Debug::LYXSERVER] << "lyx: Data socket " << fd_ << " quitting."
+@@ -216,7 +224,13 @@
+ int count;
+
+ // read and store characters in buffer
+- while ((count = ::read(fd_, charbuf, charbuf_size - 1)) > 0) {
++ while ((count =
++#ifndef _WIN32
++ ::read(fd_, charbuf, charbuf_size - 1)
++#else
++ 0
++#endif
++ ) > 0) {
+ buffer_.append(charbuf, charbuf + count);
+ }
+
+@@ -250,7 +264,11 @@
+ {
+ string const linen(line + '\n');
+ int const size = linen.size();
++#ifndef _WIN32
+ int const written = ::write(fd_, linen.c_str(), size);
++#else
++ int const written = -1;
++#endif
+ if (written < size) { // Allways mean end of connection.
+ if ((written == -1) && (errno == EPIPE)) {
+ // The program will also receive a SIGPIPE
+Index: src/client/client.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/client/client.C,v
+retrieving revision 1.7
+diff -u -r1.7 client.C
+--- src/client/client.C 20 Jan 2005 15:38:13 -0000 1.7
++++ src/client/client.C 21 Jan 2005 09:43:09 -0000
+@@ -25,12 +25,14 @@
+ # include <unistd.h>
+ #endif
+
++#ifndef _WIN32
+ // select()
+-#include <sys/select.h>
++# include <sys/select.h>
+
+ // socket(), connect()
+-#include <sys/socket.h>
+-#include <sys/un.h>
++# include <sys/socket.h>
++# include <sys/un.h>
++#endif
+
+ // fcntl()
+ #include <fcntl.h>
+Index: src/frontends/LyXView.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/LyXView.C,v
+retrieving revision 1.49
+diff -u -r1.49 LyXView.C
+--- src/frontends/LyXView.C 20 Jan 2005 15:38:14 -0000 1.49
++++ src/frontends/LyXView.C 21 Jan 2005 09:43:10 -0000
+@@ -39,7 +39,9 @@
+
+ #include <boost/bind.hpp>
+
+-#include <sys/time.h>
++#ifndef _WIN32
++# include <sys/time.h>
++#endif
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif
+Index: src/support/filetools.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/filetools.C,v
+retrieving revision 1.204
+diff -u -r1.204 filetools.C
+--- src/support/filetools.C 31 Jan 2005 10:42:23 -0000 1.204
++++ src/support/filetools.C 31 Jan 2005 11:08:10 -0000
+@@ -1153,6 +1153,11 @@
+
+ cmd_ret const RunCommand(string const & cmd)
+ {
++#ifdef _WIN32
++ // TODO: Implement this, or merge it into forkedcall.
++ // Used for lyx2lyx in buffer.C, echo in math_extern and kpse in this file
++ return make_pair(-1, string());
++#else
+ // FIXME: replace all calls to RunCommand with ForkedCall
+ // (if the output is not needed) or the code in ispell.C
+ // (if the output is needed).
+@@ -1193,6 +1198,7 @@
+ sigprocmask(SIG_SETMASK, &oldMask, 0);
+
+ return make_pair(pret, ret);
++#endif
+ }
+
+
+Index: src/support/forkedcall.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/forkedcall.C,v
+retrieving revision 1.21
+diff -u -r1.21 forkedcall.C
+--- src/support/forkedcall.C 20 Jan 2005 15:38:14 -0000 1.21
++++ src/support/forkedcall.C 25 Jan 2005 12:41:14 -0000
+@@ -30,6 +30,10 @@
+ #include "support/lyxlib.h"
+ #include "support/filetools.h"
+ #include "support/os.h"
++#ifdef _WIN32
++#include "os_win32.h"
++#include <process.h>
++#endif
+
+ #include "debug.h"
+
+@@ -41,7 +45,9 @@
+ #include <csignal>
+ #include <cstdlib>
+ #include <sys/types.h>
+-#include <sys/wait.h>
++#ifndef _WIN32
++# include <sys/wait.h>
++#endif
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif
+@@ -70,7 +76,9 @@
+ if (secs > 0) {
+ new Murder(secs, pid);
+ } else if (pid != 0) {
++#ifdef SIGKILL
+ lyx::support::kill(pid, SIGKILL);
++#endif
+ }
+ }
+
+@@ -78,7 +86,9 @@
+ void kill()
+ {
+ if (pid_ != 0) {
++#ifdef SIGKILL
+ lyx::support::kill(pid_, SIGKILL);
++#endif
+ }
+ lyxerr << "Killed " << pid_ << std::endl;
+ delete this;
+@@ -152,14 +162,16 @@
+ if (!pid())
+ return false;
+
++#ifndef _WIN32
+ // Un-UNIX like, but we don't have much use for
+ // knowing if a zombie exists, so just reap it first.
+ int waitstatus;
+ waitpid(pid(), &waitstatus, WNOHANG);
+
+ // Racy of course, but it will do.
+- if (::kill(pid(), 0) && errno == ESRCH)
++ if (lyx::kill(pid(), 0) && errno == ESRCH)
+ return false;
++#endif
+ return true;
+ }
+
+@@ -178,6 +190,7 @@
+ Murder::killItDead(0, pid());
+
+ } else {
++#ifdef SIGHUP
+ int ret = lyx::support::kill(pid(), SIGHUP);
+
+ // The process is already dead if wait_for_death is false
+@@ -186,6 +199,7 @@
+ if (wait_for_death) {
+ Murder::killItDead(tolerance, pid());
+ }
++#endif
+ }
+ }
+
+@@ -195,6 +209,7 @@
+ {
+ // We'll pretend that the child returns 1 on all error conditions.
+ retval_ = 1;
++#ifndef _WIN32
+ int status;
+ bool wait = true;
+ while (wait) {
+@@ -223,6 +238,7 @@
+ wait = false;
+ }
+ }
++#endif
+ return retval_;
+ }
+
+@@ -299,7 +315,12 @@
+ std::cout << *ait << std::endl;
+ argv.push_back(0);
+
+-#ifndef __EMX__
++#ifdef __EMX
++ pid_t const cpid = spawnvp(P_SESSION|P_DEFAULT|P_MINIMIZE|P_BACKGROUND,
++ argv[0], &*argv.begin());
++#elif defined(_WIN32)
++ pid_t const cpid = spawnvp(_P_NOWAIT, argv[0], &*argv.begin());
++#else
+ pid_t const cpid = ::fork();
+ if (cpid == 0) {
+ // Child
+@@ -310,9 +331,6 @@
+ << strerror(errno) << endl;
+ _exit(1);
+ }
+-#else
+- pid_t const cpid = spawnvp(P_SESSION|P_DEFAULT|P_MINIMIZE|P_BACKGROUND,
+- argv[0], &*argv.begin());
+ #endif
+
+ if (cpid < 0) {
+Index: src/support/forkedcall.h
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/forkedcall.h,v
+retrieving revision 1.19
+diff -u -r1.19 forkedcall.h
+--- src/support/forkedcall.h 26 Sep 2004 14:19:47 -0000 1.19
++++ src/support/forkedcall.h 17 Jan 2005 12:17:09 -0000
+@@ -31,6 +31,10 @@
+
+ #include <sys/types.h>
+
++#ifdef _WIN32
++typedef int pid_t;
++#endif
++
+ namespace lyx {
+ namespace support {
+
+Index: src/support/forkedcontr.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/forkedcontr.C,v
+retrieving revision 1.27
+diff -u -r1.27 forkedcontr.C
+--- src/support/forkedcontr.C 20 Jan 2005 15:38:14 -0000 1.27
++++ src/support/forkedcontr.C 21 Jan 2005 09:51:07 -0000
+@@ -19,14 +19,22 @@
+
+ #include "debug.h"
+
++#ifdef _WIN32
++#include "os_win32.h"
++#include <windows.h>
++#endif
++
+ #include <boost/bind.hpp>
+
+ #include <cerrno>
+ #include <cstdlib>
++
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif
+-#include <sys/wait.h>
++#ifndef _WIN32
++# include <sys/wait.h>
++#endif
+
+ using boost::bind;
+
+@@ -176,7 +184,9 @@
+ ForkedcallsController::Data & store =
+ fcc.reaped_children[++fcc.current_child];
+ // Clean up the child process.
++#ifndef _WIN32
+ store.pid = wait(&store.status);
++#endif
+ }
+
+ } // namespace anon
+@@ -193,11 +203,12 @@
+ ForkedcallsController::ForkedcallsController()
+ : reaped_children(50), current_child(-1)
+ {
++#ifndef _WIN32
+ signal(SIGCHLD, child_handler);
+-
+ sigemptyset(&oldMask);
+ sigemptyset(&newMask);
+ sigaddset(&newMask, SIGCHLD);
++#endif
+ }
+
+
+@@ -206,7 +217,9 @@
+ // I want to print or something.
+ ForkedcallsController::~ForkedcallsController()
+ {
++#ifndef _WIN32
+ signal(SIGCHLD, SIG_DFL);
++#endif
+ }
+
+
+@@ -215,6 +228,7 @@
+ forkedCalls.push_back(newcall.clone());
+
+ if (forkedCalls.size() > reaped_children.size()) {
++#ifndef _WIN32
+ // Block the SIGCHLD signal.
+ sigprocmask(SIG_BLOCK, &newMask, &oldMask);
+
+@@ -222,6 +236,7 @@
+
+ // Unblock the SIGCHLD signal and restore the old mask.
+ sigprocmask(SIG_SETMASK, &oldMask, 0);
++#endif
+ }
+ }
+
+@@ -255,8 +270,10 @@
+ if (current_child == -1)
+ return;
+
++#ifndef _WIN32
+ // Block the SIGCHLD signal.
+ sigprocmask(SIG_BLOCK, &newMask, &oldMask);
++#endif
+
+ for (int i = 0; i != 1 + current_child; ++i) {
+ Data & store = reaped_children[i];
+@@ -312,8 +329,10 @@
+ // Reset the counter
+ current_child = -1;
+
++#ifndef _WIN32
+ // Unblock the SIGCHLD signal and restore the old mask.
+ sigprocmask(SIG_SETMASK, &oldMask, 0);
++#endif
+ }
+
+ } // namespace support
+Index: src/support/forkedcontr.h
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/forkedcontr.h,v
+retrieving revision 1.18
+diff -u -r1.18 forkedcontr.h
+--- src/support/forkedcontr.h 7 Nov 2004 13:22:51 -0000 1.18
++++ src/support/forkedcontr.h 23 Jan 2005 12:25:33 -0000
+@@ -19,7 +19,10 @@
+ #include <boost/shared_ptr.hpp>
+
+ #include <csignal>
+-//#include <sys/types.h> // needed for pid_t
++#ifdef _WIN32
++typedef int pid_t;
++#endif
++#include <sys/types.h> // needed for pid_t
+ #include <list>
+ #include <vector>
+
+@@ -79,8 +82,10 @@
+ /// The child processes
+ ListType forkedCalls;
+
++#ifndef _WIN32
+ /// Used to block SIGCHLD signals.
+ sigset_t newMask, oldMask;
++#endif
+ };
+
+ } // namespace support
+Index: src/support/socktools.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/socktools.C,v
+retrieving revision 1.6
+diff -u -r1.6 socktools.C
+--- src/support/socktools.C 20 Jan 2005 15:38:14 -0000 1.6
++++ src/support/socktools.C 21 Jan 2005 09:43:42 -0000
+@@ -15,8 +15,10 @@
+
+ #include "debug.h"
+
++#ifndef _WIN32
+ #include <sys/socket.h>
+ #include <sys/un.h>
++#endif
+ #include <fcntl.h>
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+@@ -48,6 +50,7 @@
+ // special file 'name' will be created in the filesystem.
+ int listen(string const & name, int queue)
+ {
++#ifndef _WIN32
+ int fd; // File descriptor for the socket
+ sockaddr_un addr; // Structure that hold the socket address
+
+@@ -105,14 +108,17 @@
+ lyx::support::unlink(name);
+ return -1;
+ }
+-
+ return fd;
++#else
++ return -1;
++#endif
+ }
+
+ // Returns a file descriptor for a new connection from the socket
+ // descriptor 'sd' (or -1 in case of error)
+ int accept(int sd)
+ {
++#ifndef _WIN32
+ int fd;
+
+ // Returns the new file descriptor or -1 in case of error
+@@ -132,6 +138,9 @@
+ return -1;
+ }
+ return fd;
++#else
++ return -1;
++#endif
+ }
+
+ } // namespace socktools
+Index: src/support/tempname.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/tempname.C,v
+retrieving revision 1.25
+diff -u -r1.25 tempname.C
+--- src/support/tempname.C 20 Jan 2005 15:38:14 -0000 1.25
++++ src/support/tempname.C 24 Jan 2005 07:51:08 -0000
+@@ -30,6 +30,10 @@
+ # include <sys/stat.h>
+ #endif
+
++#ifdef _WIN32
++# include <io.h>
++#endif
++
+ using boost::scoped_array;
+
+ using std::string;
+@@ -42,6 +46,9 @@
+ {
+ #if defined(HAVE_MKSTEMP)
+ return ::mkstemp(templ);
++#elif defined(_WIN32)
++ ::_mktemp(templ);
++ return (int) ::fopen(templ, "w");
+ #elif defined(HAVE_MKTEMP)
+ // This probably just barely works...
+ ::mktemp(templ);
+@@ -58,7 +65,9 @@
+ {
+ string const tmpdir(dir.empty() ? package().temp_dir() : dir);
+ string tmpfl(AddName(tmpdir, mask));
++#ifndef _WIN32
+ tmpfl += convert<string>(getpid());
++#endif
+ tmpfl += "XXXXXX";
+
+ // The supposedly safe mkstemp version
+@@ -69,7 +78,11 @@
+ int const tmpf = make_tempfile(tmpl.get());
+ if (tmpf != -1) {
+ string const t(tmpl.get());
++#ifdef _WIN32
++ ::fclose((FILE *) tmpf);
++#else
+ ::close(tmpf);
++#endif
+ lyxerr[Debug::FILES] << "Temporary file `" << t
+ << "' created." << endl;
+ return t;
+Index: src/support/userinfo.C
+===================================================================
+RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/support/userinfo.C,v
+retrieving revision 1.9
+diff -u -r1.9 userinfo.C
+--- src/support/userinfo.C 20 Jan 2005 15:38:14 -0000 1.9
++++ src/support/userinfo.C 21 Jan 2005 09:43:42 -0000
+@@ -15,7 +15,9 @@
+
+ #include <boost/assert.hpp>
+
+-#include <pwd.h>
++#ifndef _WIN32
++# include <pwd.h>
++#endif
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif
+@@ -28,6 +30,7 @@
+
+ string const user_name()
+ {
++#ifndef _WIN32
+ struct passwd * pw(getpwuid(geteuid()));
+ BOOST_ASSERT(pw);
+
+@@ -35,6 +38,9 @@
+ if (name.empty())
+ name = pw->pw_name;
+ return name;
++#else
++ return "dummy";
++#endif
+ }
+
+