On Tue, 23 Oct 2001, Michael S. Moulton wrote:
> I'm having major problems with the 10/4 Wine release. Currently the
only
> thing I really use Wine for is Eudora Light 3.0.5. The most stable
> release for me thus far has been wine-20010112, which is what I'm using
> right now. Most of the releases since then have had window problems with
> Eudora-- messages having too much blank space, strange things.
>
> So I tried 1004, and it has a new problem. Eudora _looks_ great, better
> than any previous release. However, I have two showstopping problems--
> first, Eudora can't seem to access the net with this release (this
makes
> e-mail quite difficult, as I'm sure you can imagine). Second, Eudora
> keeps popping up errors I've never seen before about not being able to
> modify mailbox files. However, it did manage to corrupt my inbox...
> (thank God for backups!). So, I'm not sure where to go from here...
> --Mike
Sockets were basically broken in that wine release, and fixed soon
after. The attached patch is what fixed it. In case you are not used
to patch, it can apply like so:
cd <wine>
cat sock.diff | patch -p 4
I like to test with --dry-run first to make sure I don't fat-finger
something and make a mess.
You can follow the cvs by mail with the wine-cvs ML and pick individual
patches by the URL if you like.
I have some little scripts and programs you might need if you want to do
something like that.
Lawson
---oof---
-------------- next part --------------
<!-- X-URL: http://cvs.winehq.com/patch.py?id=1002311145503006032668054
-->
<base
href="http://cvs.winehq.com/patch.py?id=1002311145503006032668054">
<html>
<title>Patch for root=/opt/cvs-commit,
id=1002311145503006032668054</title>
<body>
<pre>
ChangeSet ID: 1002311145503006032668054
CVSROOT: /opt/cvs-commit
Module name: wine
Changes by: julliard@wine2. 01/10/05 15:45:45
Modified files:
server : named_pipe.c sock.c
Log message:
Added get_file_info support to named pipes and sockets to avoid
breaking the get_handle_fd request.
Patch: http://cvs.winehq.com/patch.py?id=1002311145503006032668054
Revision Changes Path
1.5 +20 -1 wine/server/named_pipe.c
1.21 +20 -1 wine/server/sock.c
--- /opt/cvs-commit/wine/server/named_pipe.c 2001/08/27 19:03:42 1.4
+++ /opt/cvs-commit/wine/server/named_pipe.c 2001/10/05 19:45:45 1.5
@@ -84,6 +84,7 @@
static void pipe_user_dump( struct object *obj, int verbose );
static void pipe_user_destroy( struct object *obj);
static int pipe_user_get_fd( struct object *obj );
+static int pipe_user_get_info( struct object *obj, struct get_file_info_request
*req );
static const struct object_ops pipe_user_ops {
@@ -97,7 +98,7 @@
default_poll_event, /* poll_event */
pipe_user_get_fd, /* get_fd */
no_flush, /* flush */
- no_get_file_info, /* get_file_info */
+ pipe_user_get_info, /* get_file_info */
pipe_user_destroy /* destroy */
};
@@ -165,6 +166,24 @@
struct pipe_user *user = (struct pipe_user *)obj;
assert( obj->ops == &pipe_user_ops );
return user->obj.fd;
+}
+
+static int pipe_user_get_info( struct object *obj, struct get_file_info_request
*req )
+{
+ if (req)
+ {
+ req->type = FILE_TYPE_PIPE;
+ req->attr = 0;
+ req->access_time = 0;
+ req->write_time = 0;
+ req->size_high = 0;
+ req->size_low = 0;
+ req->links = 0;
+ req->index_high = 0;
+ req->index_low = 0;
+ req->serial = 0;
+ }
+ return FD_TYPE_DEFAULT;
}
static struct named_pipe *create_named_pipe( const WCHAR *name, size_t len )
--- /opt/cvs-commit/wine/server/sock.c 2001/08/24 19:14:56 1.20
+++ /opt/cvs-commit/wine/server/sock.c 2001/10/05 19:45:45 1.21
@@ -54,6 +54,7 @@
static int sock_get_poll_events( struct object *obj );
static void sock_poll_event( struct object *obj, int event );
static int sock_get_fd( struct object *obj );
+static int sock_get_info( struct object *obj, struct get_file_info_request *req
);
static void sock_destroy( struct object *obj );
static int sock_get_error( int err );
static void sock_set_error(void);
@@ -70,7 +71,7 @@
sock_poll_event, /* poll_event */
sock_get_fd, /* get_fd */
no_flush, /* flush */
- no_get_file_info, /* get_file_info */
+ sock_get_info, /* get_file_info */
sock_destroy /* destroy */
};
@@ -264,6 +265,24 @@
struct sock *sock = (struct sock *)obj;
assert( obj->ops == &sock_ops );
return sock->obj.fd;
+}
+
+static int sock_get_info( struct object *obj, struct get_file_info_request *req
)
+{
+ if (req)
+ {
+ req->type = FILE_TYPE_PIPE;
+ req->attr = 0;
+ req->access_time = 0;
+ req->write_time = 0;
+ req->size_high = 0;
+ req->size_low = 0;
+ req->links = 0;
+ req->index_high = 0;
+ req->index_low = 0;
+ req->serial = 0;
+ }
+ return FD_TYPE_DEFAULT;
}
static void sock_destroy( struct object *obj )
</pre>
</body>
</html>