Re: dlls: add wpcap

2006-11-22 Thread James Hawkins

On 11/22/06, Tomas Carnecky <[EMAIL PROTECTED]> wrote:

James Hawkins wrote:
> +@ stdcall pcap_setbuff(ptr long) wine_pcap_setbuff
>
> As I said before, you don't need to forward these, just name the APIs
> like they are in the spec file and it should work.
>

You can see that wine_pcap_close() calls pcap_close() which is a
function implemented in the pcap library (see www.tcpdump.org), so
naming the functions pcap_?? is not possible.



Yea, saw that later :)

--
James Hawkins




Re: dlls: add wpcap

2006-11-22 Thread Tomas Carnecky
James Hawkins wrote:
> +@ stdcall pcap_setbuff(ptr long) wine_pcap_setbuff
> 
> As I said before, you don't need to forward these, just name the APIs
> like they are in the spec file and it should work.
> 

You can see that wine_pcap_close() calls pcap_close() which is a
function implemented in the pcap library (see www.tcpdump.org), so
naming the functions pcap_?? is not possible.

tom





Re: dlls: add wpcap

2006-11-22 Thread James Hawkins

On 11/21/06, mengzhuo li <[EMAIL PROTECTED]> wrote:

Changlog: add wpcap.dll.so in wine, there are some wpcap functions added,
not all.
note: before configure, you should use autoreconf to generate a new
configure file.



Why are you adding this dll?  Does it fix some app?  I just looked
around and wpcap.dll is a third-party library used for packet
capturing.  This does not need to be implemented in Wine if that's the
case, but I've added comments below for future reference.

diff -uNr wine.orig/configure.ac wine/configure.ac
--- wine.orig/configure.ac  2006-11-21 16:28:25.0 +0800
+++ wine/configure.ac   2006-11-21 16:30:51.0 +0800
@@ -1669,6 +1669,7 @@
dlls/ntdsapi/Makefile
dlls/objsel/Makefile
dlls/odbc32/Makefile
+dlls/wpcap/Makefile
dlls/odbccp32/Makefile
dlls/ole32/Makefile
dlls/ole32/tests/Makefile
diff -uNr wine.orig/dlls/Makefile.in wine/dlls/Makefile.in
--- wine.orig/dlls/Makefile.in  2006-11-21 16:27:59.0 +0800
+++ wine/dlls/Makefile.in   2006-11-21 16:30:51.0 +0800
@@ -125,6 +125,7 @@
ntdsapi \
objsel \
odbc32 \
+   wpcap \
odbccp32 \
ole32 \
oleacc \
@@ -559,6 +560,7 @@
ntdll/libntdll.$(IMPLIBEXT) \
ntdsapi/libntdsapi.$(IMPLIBEXT) \
odbc32/libodbc32.$(IMPLIBEXT) \
+   wpcap/libwpcap.$(IMPLIBEXT) \
odbccp32/libodbccp32.$(IMPLIBEXT) \
ole32/libole32.$(IMPLIBEXT) \
oleacc/liboleacc.$(IMPLIBEXT) \
@@ -820,6 +822,9 @@
odbc32/libodbc32.$(IMPLIBEXT): odbc32/odbc32.spec $(WINEBUILD)
@cd odbc32 && $(MAKE) libodbc32.$(IMPLIBEXT)

+wpcap/libwpcap.$(IMPLIBEXT): wpcap/wpcap.spec $(WINEBUILD)
+   @cd wpcap && $(MAKE) libwpcap.$(IMPLIBEXT)
+
odbccp32/libodbccp32.$(IMPLIBEXT): odbccp32/odbccp32.spec $(WINEBUILD)
@cd odbccp32 && $(MAKE) libodbccp32.$(IMPLIBEXT)

diff -uNr wine.orig/dlls/wpcap/Makefile.in wine/dlls/wpcap/Makefile.in
--- wine.orig/dlls/wpcap/Makefile.in1970-01-01 08:00:00.0 +0800
+++ wine/dlls/wpcap/Makefile.in 2006-11-21 16:30:51.0 +0800
@@ -0,0 +1,16 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR= @srcdir@
+VPATH = @srcdir@
+MODULE= wpcap.dll
+IMPORTLIB = libwpcap.$(IMPLIBEXT)
+IMPORTS   = kernel32 ntdll
+EXTRAINCL = @X_CFLAGS@
+EXTRALIBS = @X_LIBS@ @X_PRE_LIBS@ @XLIB@ @X_EXTRA_LIBS@ @OPENGL_LIBS@ -lpcap
+

I'm not a Makefile pro by any means, but why do you need all thse
EXTRALIBS?  Also, you're going to have to add a configure check for
-lpcap.

+C_SRCS = \
+   wpcap.c
+
[EMAIL PROTECTED]@
+
+### Dependencies:
diff -uNr wine.orig/dlls/wpcap/wpcap.c wine/dlls/wpcap/wpcap.c
--- wine.orig/dlls/wpcap/wpcap.c1970-01-01 08:00:00.0 +0800
+++ wine/dlls/wpcap/wpcap.c 2006-11-21 16:30:51.0 +0800
@@ -0,0 +1,73 @@
+#ifdef WIN32
+#undef WIN32
+#endif
+#include 

You need to add the GPL license to the top of every source file.
Check out any other source file in the code base for examples.

+void wine_pcap_close(pcap_t * a)
+{
+   pcap_close(a);
+}
+

Assuming the name of the API is pcap_close, you'll have to define it like this:

void WINAPI pcap_close(pcap_t *a)

WINAPI is needed, but the wine_ prefix is not.

+pcap_t * wine_pcap_open_live(const char * a, int b, int c , int d , char * e )
+{
+   return pcap_open_live(a,b,c,d,e);
+}
+
+int wine_pcap_findalldevs(pcap_if_t ** a, char * b)
+{
+   return pcap_findalldevs(a,b);
+}
+
+void wine_pcap_freealldevs(pcap_if_t * a)
+{
+   pcap_freealldevs(a);
+}
+
+int  wine_pcap_compile(pcap_t * a, struct bpf_program * b, char * c,
int d, bpf_u_int32 e )
+{
+   return pcap_compile(a,b,c,d,e);
+}
+
+int wine_pcap_setfilter(pcap_t * a, struct bpf_program * b)
+{
+   return pcap_setfilter(a,b);
+}
+
+int wine_pcap_datalink(pcap_t * a)
+{
+   return pcap_datalink(a);
+}
+
+const u_char* wine_pcap_next(pcap_t * a, struct pcap_pkthdr * b)
+{
+   return pcap_next(a,b);
+}
+
+int wine_pcap_setbuff(pcap_t * p, int dim)
+{
+   //return pcap_setbuff(p ,dim);
+   return 0;
+#if 0
+#ifdef HAVE_REMOTE
+if (p->rmt_clientside)
+{
+/* Currently, this is a bug: the capture buffer
cannot be set with remote capture */
+return 0;
+}
+#endif  /* HAVE_REMOTE */
+
+if (p->adapter==NULL)
+{
+snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "The kernel
buffer size cannot be set while reading from a file");
+return -1;
+}
+
+if(PacketSetBuff(p->adapter,dim)==FALSE)
+{
+snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "driver error:
not enough memory to allocate the kernel buffer");
+return -1;
+}
+return 0;
+#endif
+}
+
+
diff -uNr wine.orig/dlls/wpcap/wpcap.spec wine/dlls/wpcap/wpcap.spec
--- wine.orig/dlls/wpcap/wpcap.spec 1970-01-01 08:00:00.0 +0800
+++ wine/dlls/wpcap/wpcap.spec  2006-11-21 16:30:51.0 +0800
@@ -0,0 +1,9 @@
+@ stdcall pca