On Tuesday 24 January 2012, Chris Bagwell wrote: > On Mon, Jan 23, 2012 at 5:05 PM, Ruediger Meier <sweet_f_a at gmx.de> wrote: > > From: Ruediger Meier <ruediger.meier at ga-group.nl> > > > > We have to do this on win32 before doing winsock2 stuff. It affects > > the whole application so don't know wheather it's right to startup > > and clean it here within the net backend. > > Hmm, I wonder if the net.c backend can make more use of functions > defined sanei_tcp.c? I've added the same logic there to open and > close for use by TCP sockets in epson2 backend. Maybe the patch with > net_read() and net_write() could make use of something there as well?
Generally I'd also like to re-use code to avoid duplicates but here I'm not happy with sanei_tcp/udp because of several reasons. 1. sanei_tcp/udp does not support ipv6 2. sanei_tcp_read() is IMO broken since 581b94fb. 3. Most socket stuff is the same for udp and tcp so sanei_[tcp|udp] are IMO doomed anyway. Also switching to these global helpers would mix my win32-port changes with generic refactoring and increases the risk that anything I do could affect current bahavior. Nevertheless I'd really like to help fixing and cleaning up network stuff in separate patch-sets later. This would probably make even more backends portable (and ipv6 ready!). For now I hope it's ok to commit my net.c changes as they are. I've re-rolled them according to you other comments. Please pull from my private clone git://github.com/rudimeier/sane-backends.git branch win32/net-v3 or I can also post it again on the list if wanted. cu, Rudi > Chris > > > --- > > ?backend/net.c | ? 15 +++++++++++++++ > > ?1 files changed, 15 insertions(+), 0 deletions(-) > > > > diff --git a/backend/net.c b/backend/net.c > > index 0cd7f51..228bd59 100644 > > --- a/backend/net.c > > +++ b/backend/net.c > > @@ -1016,6 +1016,18 @@ sane_init (SANE_Int * version_code, > > SANE_Auth_Callback authorize) DBG (3, "sane_init: Client has little > > endian byte order\n"); } > > > > +#ifdef _WIN32 > > + ? ?{ > > + ? ? ?/* no much fun on win32 without WSAStartup but is this the > > right place? */ + ? ? ?WSADATA data; > > + ? ? ?int wsa_err = WSAStartup( MAKEWORD(2, 2), &data) != 0; > > + ? ? ?if ( wsa_err != 0 ) > > + ? ? ? { > > + ? ? ? ? DBG (1, "sane_init: WSAStartup failed with error %d\n", > > wsa_err ); + ? ? ? } > > + ? ?} > > +#endif > > + > > ?#ifndef NET_USES_AF_INDEP > > ? DBG (2, "sane_init: determining sane service port\n"); > > ? serv = getservbyname ("sane-port", "tcp"); > > @@ -1196,6 +1208,9 @@ sane_exit (void) > > ? ? ? ?} > > ? ? ? free (devlist); > > ? ? } > > +#ifdef _WIN32 > > + ?WSACleanup(); > > +#endif > > ? DBG (3, "sane_exit: finished.\n"); > > ?} > > > > -- > > 1.7.6.1 > > > > > > -- > > sane-devel mailing list: sane-devel at lists.alioth.debian.org > > http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/sane-devel > > Unsubscribe: Send mail with subject "unsubscribe your_password" > > ? ? ? ? ? ? to sane-devel-request at lists.alioth.debian.org