From 00fdd9fc1b13a2d3dcbbc4e253609ffdf6c58772 Mon Sep 17 00:00:00 2001
From: Alexandre Julliard <julliard@winehq.org>
Date: Thu, 6 Nov 2003 00:26:43 +0000
Subject: [PATCH] AVM Computersysteme Vertriebs GmbH Implemented a CAPI20
 wrapper library for CAPI4Linux access.

Marcus Meissner <marcus@jet.franken.de>
Cleaned up, autoconfed.
---
 configure                   | 360 +++++++++++++++++++++++++++++++++++-
 configure.ac                |  12 ++
 dlls/Makefile.in            |  13 ++
 dlls/capi2032/.cvsignore    |   4 +
 dlls/capi2032/Makefile.in   |  13 ++
 dlls/capi2032/cap20wxx.c    | 209 +++++++++++++++++++++
 dlls/capi2032/cap20wxx.h    |  70 +++++++
 dlls/capi2032/capi2032.spec |  11 ++
 include/config.h.in         |   9 +
 9 files changed, 699 insertions(+), 2 deletions(-)
 create mode 100644 dlls/capi2032/.cvsignore
 create mode 100644 dlls/capi2032/Makefile.in
 create mode 100644 dlls/capi2032/cap20wxx.c
 create mode 100644 dlls/capi2032/cap20wxx.h
 create mode 100644 dlls/capi2032/capi2032.spec

diff --git a/configure b/configure
index ea7c554304a..8b987952be5 100755
--- a/configure
+++ b/configure
@@ -308,7 +308,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS WIN16_FILES WIN16_INSTALL LIBPTHREAD build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP TOOLSDIR X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS YACC LEX LEXLIB LEX_OUTPUT_ROOT XYACC XLEX AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP WINDRES ac_ct_WINDRES LN_S LN LDCONFIG INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LINT LINTFLAGS DB2HTML DB2PDF DB2PS DB2TXT JPEGLIB EGREP GIFLIB XLIB XFILES OPENGLFILES GLU32FILES OPENGL_LIBS NASLIBS CURSESLIBS sane_devel SANELIBS SANEINCL ICULIBS ft_devel ft_devel2 FREETYPEINCL ARTSCCONFIG ARTSLIBS ARTSINCL ALSALIBS AUDIOIOLIBS EXTRACFLAGS DLLEXT DLLFLAGS DLLIBS LDSHARED LDDLL LIBEXT IMPLIBEXT DLLTOOL ac_ct_DLLTOOL DLLWRAP ac_ct_DLLWRAP LDEXECFLAGS CROSSTEST CROSSCC CROSSWINDRES LDPATH CRTLIBS LDD ALLOCA LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS WIN16_FILES WIN16_INSTALL LIBPTHREAD build build_cpu build_vendor build_os host host_cpu host_vendor host_os SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP TOOLSDIR X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS YACC LEX LEXLIB LEX_OUTPUT_ROOT XYACC XLEX AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB STRIP ac_ct_STRIP WINDRES ac_ct_WINDRES LN_S LN LDCONFIG INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA LINT LINTFLAGS DB2HTML DB2PDF DB2PS DB2TXT JPEGLIB EGREP GIFLIB XLIB XFILES OPENGLFILES GLU32FILES OPENGL_LIBS NASLIBS CURSESLIBS sane_devel SANELIBS SANEINCL ICULIBS ft_devel ft_devel2 FREETYPEINCL ARTSCCONFIG ARTSLIBS ARTSINCL ALSALIBS AUDIOIOLIBS CAPI4LINUXLIBS EXTRACFLAGS DLLEXT DLLFLAGS DLLIBS LDSHARED LDDLL LIBEXT IMPLIBEXT DLLTOOL ac_ct_DLLTOOL DLLWRAP ac_ct_DLLWRAP LDEXECFLAGS CROSSTEST CROSSCC CROSSWINDRES LDPATH CRTLIBS LDD ALLOCA LIBOBJS LTLIBOBJS'
 ac_subst_files='MAKE_RULES MAKE_DLL_RULES MAKE_TEST_RULES MAKE_LIB_RULES MAKE_PROG_RULES'
 
 # Initialize some variables set by options.
@@ -10653,6 +10653,360 @@ done
 
 
 
+
+for ac_header in capi20.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+
+for ac_header in linux/capi.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+else
+  # Is the header compilable?
+echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest.$ac_objext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_header_compiler=no
+fi
+rm -f conftest.$ac_objext conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6
+
+# Is the header present?
+echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
+  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null; then
+  if test -s conftest.err; then
+    ac_cpp_err=$ac_c_preproc_warn_flag
+  else
+    ac_cpp_err=
+  fi
+else
+  ac_cpp_err=yes
+fi
+if test -z "$ac_cpp_err"; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+rm -f conftest.err conftest.$ac_ext
+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc in
+  yes:no )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+  no:yes )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    (
+      cat <<\_ASBOX
+## ------------------------------------ ##
+## Report this to bug-autoconf@gnu.org. ##
+## ------------------------------------ ##
+_ASBOX
+    ) |
+      sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
+if eval "test \"\${$as_ac_Header+set}\" = set"; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=$ac_header_preproc"
+fi
+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+		echo "$as_me:$LINENO: checking for capi20_register in -lcapi20" >&5
+echo $ECHO_N "checking for capi20_register in -lcapi20... $ECHO_C" >&6
+if test "${ac_cv_lib_capi20_capi20_register+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcapi20  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+#line $LINENO "configure"
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+/* We use char because int might match the return type of a gcc2
+   builtin and then its argument prototype would still apply.  */
+char capi20_register ();
+int
+main ()
+{
+capi20_register ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+         { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_lib_capi20_capi20_register=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_cv_lib_capi20_capi20_register=no
+fi
+rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+echo "$as_me:$LINENO: result: $ac_cv_lib_capi20_capi20_register" >&5
+echo "${ECHO_T}$ac_cv_lib_capi20_capi20_register" >&6
+if test $ac_cv_lib_capi20_capi20_register = yes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CAPI4LINUX 1
+_ACEOF
+
+			CAPI4LINUXLIBS="-lcapi20"
+
+
+fi
+
+
+fi
+
+done
+
+
+fi
+
+done
+
+
+
 echo "$as_me:$LINENO: checking whether mmap64 works defined as mmap" >&5
 echo $ECHO_N "checking whether mmap64 works defined as mmap... $ECHO_C" >&6
 if test "${ac_cv_mmap64_works+set}" = set; then
@@ -16571,7 +16925,7 @@ MAKE_LIB_RULES=libs/Makelib.rules
 MAKE_PROG_RULES=programs/Makeprog.rules
 
 
-                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules dlls/Maketest.rules libs/Makelib.rules programs/Makeprog.rules Makefile dlls/Makefile dlls/advapi32/Makefile dlls/advapi32/tests/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/cabinet/Makefile dlls/cfgmgr32/Makefile dlls/comcat/Makefile dlls/comctl32/Makefile dlls/comctl32/tests/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/ctl3d/Makefile dlls/d3d8/Makefile dlls/d3d9/Makefile dlls/d3dim/Makefile dlls/d3dx8/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dinput8/Makefile dlls/dmband/Makefile dlls/dmcompos/Makefile dlls/dmime/Makefile dlls/dmloader/Makefile dlls/dmscript/Makefile dlls/dmstyle/Makefile dlls/dmsynth/Makefile dlls/dmusic/Makefile dlls/dmusic32/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dpnhpast/Makefile dlls/dsound/Makefile dlls/dsound/tests/Makefile dlls/gdi/Makefile dlls/gdi/tests/Makefile dlls/glu32/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/iphlpapi/Makefile dlls/kernel/Makefile dlls/kernel/tests/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msadp32/Makefile dlls/msacm/msg711/Makefile dlls/msacm/winemp3/Makefile dlls/msdmo/Makefile dlls/mshtml/Makefile dlls/msi/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msvcrt/Makefile dlls/msvcrt/tests/Makefile dlls/msvcrt20/Makefile dlls/msvcrtd/Makefile dlls/msvideo/Makefile dlls/msvideo/msrle32/Makefile dlls/mswsock/Makefile dlls/netapi32/Makefile dlls/netapi32/tests/Makefile dlls/ntdll/Makefile dlls/ntdll/tests/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/oleacc/Makefile dlls/oleaut32/Makefile dlls/oleaut32/tests/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/rpcrt4/tests/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shell32/tests/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/shlwapi/tests/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/urlmon/tests/Makefile dlls/user/Makefile dlls/user/tests/Makefile dlls/uxtheme/Makefile dlls/version/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/wininet/tests/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/tests/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winealsa/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineaudioio/Makefile dlls/winmm/winenas/Makefile dlls/winmm/winejack/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winsock/tests/Makefile dlls/winspool/Makefile dlls/winspool/tests/Makefile dlls/wintab32/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile include/Makefile libs/Makefile libs/port/Makefile libs/unicode/Makefile libs/uuid/Makefile libs/wine/Makefile libs/wpp/Makefile miscemu/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/expand/Makefile programs/notepad/Makefile programs/osversioncheck/Makefile programs/progman/Makefile programs/regapi/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/regtest/Makefile programs/rpcss/Makefile programs/rundll32/Makefile programs/start/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineboot/Makefile programs/winecfg/Makefile programs/wineconsole/Makefile programs/winedbg/Makefile programs/winefile/Makefile programs/winemenubuilder/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winevdm/Makefile programs/winhelp/Makefile programs/winver/Makefile server/Makefile tools/Makefile tools/widl/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/winegcc/Makefile tools/wmc/Makefile tools/wrc/Makefile"
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ac_config_files="$ac_config_files Make.rules dlls/Makedll.rules dlls/Maketest.rules libs/Makelib.rules programs/Makeprog.rules Makefile dlls/Makefile dlls/advapi32/Makefile dlls/advapi32/tests/Makefile dlls/avicap32/Makefile dlls/avifil32/Makefile dlls/cabinet/Makefile dlls/capi2032/Makefile dlls/cfgmgr32/Makefile dlls/comcat/Makefile dlls/comctl32/Makefile dlls/comctl32/tests/Makefile dlls/commdlg/Makefile dlls/crtdll/Makefile dlls/crypt32/Makefile dlls/ctl3d/Makefile dlls/d3d8/Makefile dlls/d3d9/Makefile dlls/d3dim/Makefile dlls/d3dx8/Makefile dlls/dciman32/Makefile dlls/ddraw/Makefile dlls/devenum/Makefile dlls/dinput/Makefile dlls/dinput8/Makefile dlls/dmband/Makefile dlls/dmcompos/Makefile dlls/dmime/Makefile dlls/dmloader/Makefile dlls/dmscript/Makefile dlls/dmstyle/Makefile dlls/dmsynth/Makefile dlls/dmusic/Makefile dlls/dmusic32/Makefile dlls/dplay/Makefile dlls/dplayx/Makefile dlls/dpnhpast/Makefile dlls/dsound/Makefile dlls/dsound/tests/Makefile dlls/gdi/Makefile dlls/gdi/tests/Makefile dlls/glu32/Makefile dlls/icmp/Makefile dlls/imagehlp/Makefile dlls/imm32/Makefile dlls/iphlpapi/Makefile dlls/kernel/Makefile dlls/kernel/tests/Makefile dlls/lzexpand/Makefile dlls/mapi32/Makefile dlls/mpr/Makefile dlls/msacm/Makefile dlls/msacm/imaadp32/Makefile dlls/msacm/msadp32/Makefile dlls/msacm/msg711/Makefile dlls/msacm/winemp3/Makefile dlls/msdmo/Makefile dlls/mshtml/Makefile dlls/msi/Makefile dlls/msimg32/Makefile dlls/msisys/Makefile dlls/msnet32/Makefile dlls/msvcrt/Makefile dlls/msvcrt/tests/Makefile dlls/msvcrt20/Makefile dlls/msvcrtd/Makefile dlls/msvideo/Makefile dlls/msvideo/msrle32/Makefile dlls/mswsock/Makefile dlls/netapi32/Makefile dlls/netapi32/tests/Makefile dlls/ntdll/Makefile dlls/ntdll/tests/Makefile dlls/odbc32/Makefile dlls/ole32/Makefile dlls/oleacc/Makefile dlls/oleaut32/Makefile dlls/oleaut32/tests/Makefile dlls/olecli/Makefile dlls/oledlg/Makefile dlls/olepro32/Makefile dlls/olesvr/Makefile dlls/opengl32/Makefile dlls/psapi/Makefile dlls/qcap/Makefile dlls/quartz/Makefile dlls/rasapi32/Makefile dlls/richedit/Makefile dlls/rpcrt4/Makefile dlls/rpcrt4/tests/Makefile dlls/serialui/Makefile dlls/setupapi/Makefile dlls/shdocvw/Makefile dlls/shell32/Makefile dlls/shell32/tests/Makefile dlls/shfolder/Makefile dlls/shlwapi/Makefile dlls/shlwapi/tests/Makefile dlls/snmpapi/Makefile dlls/sti/Makefile dlls/tapi32/Makefile dlls/ttydrv/Makefile dlls/twain/Makefile dlls/url/Makefile dlls/urlmon/Makefile dlls/urlmon/tests/Makefile dlls/user/Makefile dlls/user/tests/Makefile dlls/uxtheme/Makefile dlls/version/Makefile dlls/win32s/Makefile dlls/winaspi/Makefile dlls/winedos/Makefile dlls/wineps/Makefile dlls/wininet/Makefile dlls/wininet/tests/Makefile dlls/winmm/Makefile dlls/winmm/joystick/Makefile dlls/winmm/mcianim/Makefile dlls/winmm/mciavi/Makefile dlls/winmm/mcicda/Makefile dlls/winmm/mciseq/Makefile dlls/winmm/mciwave/Makefile dlls/winmm/midimap/Makefile dlls/winmm/tests/Makefile dlls/winmm/wavemap/Makefile dlls/winmm/winealsa/Makefile dlls/winmm/winearts/Makefile dlls/winmm/wineaudioio/Makefile dlls/winmm/winenas/Makefile dlls/winmm/winejack/Makefile dlls/winmm/wineoss/Makefile dlls/winnls/Makefile dlls/winsock/Makefile dlls/winsock/tests/Makefile dlls/winspool/Makefile dlls/winspool/tests/Makefile dlls/wintab32/Makefile dlls/wintrust/Makefile dlls/wow32/Makefile dlls/wsock32/Makefile dlls/x11drv/Makefile documentation/Makefile include/Makefile libs/Makefile libs/port/Makefile libs/unicode/Makefile libs/uuid/Makefile libs/wine/Makefile libs/wpp/Makefile miscemu/Makefile programs/Makefile programs/avitools/Makefile programs/clock/Makefile programs/cmdlgtst/Makefile programs/control/Makefile programs/expand/Makefile programs/notepad/Makefile programs/osversioncheck/Makefile programs/progman/Makefile programs/regapi/Makefile programs/regedit/Makefile programs/regsvr32/Makefile programs/regtest/Makefile programs/rpcss/Makefile programs/rundll32/Makefile programs/start/Makefile programs/uninstaller/Makefile programs/view/Makefile programs/wcmd/Makefile programs/wineboot/Makefile programs/winecfg/Makefile programs/wineconsole/Makefile programs/winedbg/Makefile programs/winefile/Makefile programs/winemenubuilder/Makefile programs/winemine/Makefile programs/winepath/Makefile programs/winevdm/Makefile programs/winhelp/Makefile programs/winver/Makefile server/Makefile tools/Makefile tools/widl/Makefile tools/winapi/Makefile tools/winebuild/Makefile tools/winedump/Makefile tools/winegcc/Makefile tools/wmc/Makefile tools/wrc/Makefile"
 
 
 cat >confcache <<\_ACEOF
@@ -17113,6 +17467,7 @@ do
   "dlls/avicap32/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/avicap32/Makefile" ;;
   "dlls/avifil32/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/avifil32/Makefile" ;;
   "dlls/cabinet/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/cabinet/Makefile" ;;
+  "dlls/capi2032/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/capi2032/Makefile" ;;
   "dlls/cfgmgr32/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/cfgmgr32/Makefile" ;;
   "dlls/comcat/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/comcat/Makefile" ;;
   "dlls/comctl32/Makefile" ) CONFIG_FILES="$CONFIG_FILES dlls/comctl32/Makefile" ;;
@@ -17487,6 +17842,7 @@ s,@ARTSLIBS@,$ARTSLIBS,;t t
 s,@ARTSINCL@,$ARTSINCL,;t t
 s,@ALSALIBS@,$ALSALIBS,;t t
 s,@AUDIOIOLIBS@,$AUDIOIOLIBS,;t t
+s,@CAPI4LINUXLIBS@,$CAPI4LINUXLIBS,;t t
 s,@EXTRACFLAGS@,$EXTRACFLAGS,;t t
 s,@DLLEXT@,$DLLEXT,;t t
 s,@DLLFLAGS@,$DLLFLAGS,;t t
diff --git a/configure.ac b/configure.ac
index 8e19ab4a533..8dab8ffe7fb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -624,6 +624,17 @@ AC_CHECK_HEADERS(libaudioio.h,
                   [AUDIOIOLIBS="-laudioio"
                    AC_DEFINE(HAVE_LIBAUDIOIO, 1, [Define if you have libaudioIO])])])
 
+dnl **** Check for capi4linux ****
+
+AC_CHECK_HEADERS(capi20.h,[
+	AC_CHECK_HEADERS(linux/capi.h,[
+		AC_CHECK_LIB(capi20,capi20_register,[
+			AC_DEFINE(HAVE_CAPI4LINUX,1,[Define if you have capi4linux libs and headers])
+			AC_SUBST(CAPI4LINUXLIBS,"-lcapi20")
+		])
+	])
+])
+
 dnl **** Check for broken glibc mmap64 ****
 
 AC_CACHE_CHECK( [whether mmap64 works defined as mmap], ac_cv_mmap64_works,
@@ -1414,6 +1425,7 @@ dlls/advapi32/tests/Makefile
 dlls/avicap32/Makefile
 dlls/avifil32/Makefile
 dlls/cabinet/Makefile
+dlls/capi2032/Makefile
 dlls/cfgmgr32/Makefile
 dlls/comcat/Makefile
 dlls/comctl32/Makefile
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 64df12cdf6f..d43fe08e390 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -19,6 +19,7 @@ BASEDIRS = \
 	avicap32 \
 	avifil32 \
 	cabinet \
+	capi2032 \
 	cfgmgr32 \
 	comcat \
 	comctl32 \
@@ -205,6 +206,7 @@ SYMLINKS = \
 	avicap32.dll$(DLLEXT) \
 	avifil32.dll$(DLLEXT) \
 	cabinet.dll$(DLLEXT) \
+	capi2032.dll$(DLLEXT) \
 	cfgmgr32.dll$(DLLEXT) \
 	comcat.dll$(DLLEXT) \
 	comctl32.dll$(DLLEXT) \
@@ -334,6 +336,9 @@ avifil32.dll$(DLLEXT) avifile.dll$(DLLEXT): avifil32/avifil32.dll$(DLLEXT)
 cabinet.dll$(DLLEXT): cabinet/cabinet.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) cabinet/cabinet.dll$(DLLEXT) $@
 
+capi2032.dll$(DLLEXT): capi2032/capi2032.dll$(DLLEXT)
+	$(RM) $@ && $(LN_S) capi2032/capi2032.dll$(DLLEXT) $@
+
 cfgmgr32.dll$(DLLEXT): cfgmgr32/cfgmgr32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) cfgmgr32/cfgmgr32.dll$(DLLEXT) $@
 
@@ -699,6 +704,7 @@ IMPORT_LIBS = \
 	libavicap32 \
 	libavifil32 \
 	libcabinet \
+	libcapi2032 \
 	libcfgmgr32 \
 	libcomcat \
 	libcomctl32 \
@@ -818,6 +824,11 @@ libcabinet.def: cabinet/cabinet.spec.def
 libcabinet.a: cabinet/cabinet.spec.def
 	$(DLLTOOL) -k -l $@ -d cabinet/cabinet.spec.def
 
+libcapi2032.def: capi2032/capi2032.spec.def
+	$(RM) $@ && $(LN_S) capi2032/capi2032.spec.def $@
+libcapi2032.a: capi2032/capi2032.spec.def
+	$(DLLTOOL) -k -l $@ -d capi2032/capi2032.spec.def
+
 libcfgmgr32.def: cfgmgr32/cfgmgr32.spec.def
 	$(RM) $@ && $(LN_S) cfgmgr32/cfgmgr32.spec.def $@
 libcfgmgr32.a: cfgmgr32/cfgmgr32.spec.def
@@ -1312,6 +1323,7 @@ advapi32/advapi32.spec.def: $(WINEBUILD)
 avicap32/avicap32.spec.def: $(WINEBUILD)
 avifil32/avifil32.spec.def: $(WINEBUILD)
 cabinet/cabinet.spec.def: $(WINEBUILD)
+capi2032/capi2032.spec.def: $(WINEBUILD)
 cfgmgr32/cfgmgr32.spec.def: $(WINEBUILD)
 comcat/comcat.spec.def: $(WINEBUILD)
 comctl32/comctl32.spec.def: $(WINEBUILD)
@@ -1421,6 +1433,7 @@ advapi32/advapi32.dll$(DLLEXT): advapi32
 avicap32/avicap32.dll$(DLLEXT): avicap32
 avifil32/avifil32.dll$(DLLEXT): avifil32
 cabinet/cabinet.dll$(DLLEXT): cabinet
+capi2032/capi2032.dll$(DLLEXT): capi2032
 cfgmgr32/cfgmgr32.dll$(DLLEXT): cfgmgr32
 comcat/comcat.dll$(DLLEXT): comcat
 comctl32/comctl32.dll$(DLLEXT): comctl32
diff --git a/dlls/capi2032/.cvsignore b/dlls/capi2032/.cvsignore
new file mode 100644
index 00000000000..c7c7d037384
--- /dev/null
+++ b/dlls/capi2032/.cvsignore
@@ -0,0 +1,4 @@
+Makefile
+capi2032.dll.dbg.c
+capi2032.spec.c
+capi2032.spec.def
diff --git a/dlls/capi2032/Makefile.in b/dlls/capi2032/Makefile.in
new file mode 100644
index 00000000000..a5adb8adb04
--- /dev/null
+++ b/dlls/capi2032/Makefile.in
@@ -0,0 +1,13 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = capi2032.dll
+IMPORTS   = kernel32
+EXTRALIBS = @CAPI4LINUXLIBS@
+
+C_SRCS = cap20wxx.c
+
+@MAKE_DLL_RULES@
+
+### Dependencies:
diff --git a/dlls/capi2032/cap20wxx.c b/dlls/capi2032/cap20wxx.c
new file mode 100644
index 00000000000..2f720138549
--- /dev/null
+++ b/dlls/capi2032/cap20wxx.c
@@ -0,0 +1,209 @@
+/*
+ * cap20wxx.c
+ *
+ * Copyright 2002-2003 AVM Computersysteme Vertriebs GmbH
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+/*---------------------------------------------------------------------------*\
+ * Modul : cap20wxx.cpp created at Thu 06-Jul-2000 14:54:47 by RStolz/DFriedel
+ *
+ * Id: cap20wxx.cpp 1.9 2002/12/04 09:43:07Z rstolz Exp 
+ *
+ * Log: cap20wxx.cpp 
+ * Revision 1.9  2002/12/04 09:43:07Z  rstolz
+ * - RStolz: max. MessageBufferSize 65535; CCDI interface removed
+ * Revision 1.8  2002/08/27 11:44:31Z  rstolz
+ * - RStolz: crt bugfix for CAPI2032
+ * Revision 1.7  2002/08/27 09:32:15Z  rstolz
+ * - RStolz: new incarnation AVMCDDI.dll supports PNP notifications
+ * Revision 1.6  2001/10/24 12:01:50Z  rstolz
+ * - RStolz: Bugfix - Release failed.
+ * Revision 1.5  2001/08/24 11:14:10Z  rstolz
+ * - RStolz: Failure with error status interpretion in Release fixed
+ * Revision 1.4  2000/12/05 15:52:10Z  rstolz
+ * -RStolz: CAppl-Objekt wurde nicht richtig geloescht
+ * Revision 1.3  2000/10/18 14:53:48Z  rstolz
+ * - RStolz: PnP-Unterstuetzung
+ * Revision 1.2  2000/09/07 12:19:32Z  DFriedel
+ * - Diego: Klammer fehlte
+ * Revision 1.1  2000/09/07 11:02:41Z  DFriedel
+ * Initial revision
+\*---------------------------------------------------------------------------*/
+#define __NO_CAPIUTILS__
+
+#include "config.h"
+
+#include <stdio.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#ifdef HAVE_LINUX_CAPI_H
+# include <linux/capi.h>
+#endif
+#ifdef HAVE_CAPI20_H
+# include <capi20.h>
+#endif
+#include "wine/debug.h"
+#include "cap20wxx.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(capi);
+
+/*===========================================================================*\
+\*===========================================================================*/
+
+DWORD APIENTRY wrapCAPI_REGISTER (DWORD MessageBufferSize, DWORD maxLogicalConnection, DWORD maxBDataBlocks, DWORD maxBDataLen, DWORD *pApplID) {
+#ifdef HAVE_CAPI4LINUX
+    unsigned aid = 0;
+    DWORD fret = capi20_register (maxLogicalConnection, maxBDataBlocks, maxBDataLen, &aid);
+    FIXME ( "(), no CAPI4LINUX support compiled into WINE.\n" );
+    *pApplID   = aid;
+    TRACE ( "(%lx) -> %lx\n", *pApplID, fret);
+    return fret;
+#else
+    return 0x1009;
+#endif
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+DWORD APIENTRY wrapCAPI_RELEASE (DWORD ApplID) {
+#ifdef HAVE_CAPI4LINUX
+    DWORD fret = capi20_release (ApplID);
+    TRACE ("(%lx) -> %lx\n", ApplID, fret);
+    return fret;
+#else
+    return 0x1109;
+#endif
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+DWORD APIENTRY wrapCAPI_PUT_MESSAGE (DWORD ApplID, PVOID pCAPIMessage) {
+#ifdef HAVE_CAPI4LINUX
+    DWORD fret = capi20_put_message (ApplID, pCAPIMessage);
+    TRACE ("(%lx) -> %lx\n", ApplID, fret);
+    return fret;
+#else
+    return 0x1109;
+#endif
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+DWORD APIENTRY wrapCAPI_GET_MESSAGE (DWORD ApplID, PVOID *ppCAPIMessage) {
+#ifdef HAVE_CAPI4LINUX
+    DWORD fret = capi20_get_message (ApplID, (unsigned char **)ppCAPIMessage);
+    TRACE ("(%lx) -> %lx\n", ApplID, fret);
+    return fret;
+#else
+    return 0x1109;
+#endif
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+DWORD APIENTRY wrapCAPI_WAIT_FOR_SIGNAL (DWORD ApplID) {
+#ifdef HAVE_CAPI4LINUX
+    struct timeval tv;
+    TRACE ("(%lx)\n", ApplID);
+    tv.tv_sec  = 5;
+    tv.tv_usec = 0;
+    return capi20_waitformessage (ApplID, &tv);
+#else
+    return 0x1109;
+#endif
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+DWORD APIENTRY wrapCAPI_GET_MANUFACTURER (char *SzBuffer) {
+#ifdef HAVE_CAPI4LINUX
+    DWORD fret = (capi20_get_manufacturer (0, SzBuffer) != 0) ? 0 : 0x1108;
+    if (!strncmp (SzBuffer, "AVM", 3)) {
+        strcpy (SzBuffer, "AVM-GmbH");
+    }
+    TRACE ("(%s) -> %lx\n", SzBuffer, fret);
+    return fret;
+#else
+    return 0x1109;
+#endif
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+DWORD APIENTRY wrapCAPI_GET_VERSION (DWORD *pCAPIMajor, DWORD *pCAPIMinor, DWORD *pManufacturerMajor, DWORD *pManufacturerMinor) {
+#ifdef HAVE_CAPI4LINUX
+    unsigned char version[4 * sizeof (unsigned)];
+    DWORD fret = (capi20_get_version (0, version) != 0) ? 0 : 0x1108;
+    *pCAPIMajor         = *(unsigned *)(version + 0 * sizeof (unsigned));
+    *pCAPIMinor         = *(unsigned *)(version + 1 * sizeof (unsigned));
+    *pManufacturerMajor = *(unsigned *)(version + 2 * sizeof (unsigned));
+    *pManufacturerMinor = *(unsigned *)(version + 3 * sizeof (unsigned));
+    TRACE ("(%lx.%lx,%lx.%lx) -> %lx\n", *pCAPIMajor, *pCAPIMinor, *pManufacturerMajor,
+             *pManufacturerMinor, fret);
+    return fret;
+#else
+    return 0x1109;
+#endif
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+DWORD APIENTRY wrapCAPI_GET_SERIAL_NUMBER (char *SzBuffer) {
+#ifdef HAVE_CAPI4LINUX
+    DWORD fret = (capi20_get_serial_number (0, SzBuffer) != 0) ? 0 : 0x1108;
+    TRACE ("(%s) -> %lx\n", SzBuffer, fret);
+    return fret;
+#else
+    return 0x1109;
+#endif
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+DWORD APIENTRY wrapCAPI_GET_PROFILE (PVOID SzBuffer, DWORD CtlrNr) {
+#ifdef HAVE_CAPI4LINUX
+    DWORD fret = capi20_get_profile (CtlrNr, SzBuffer);
+    TRACE ("(%lx,%x) -> %lx\n", CtlrNr, *(unsigned short *)SzBuffer, fret);
+    return fret;
+#else
+    return 0x1109;
+#endif
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+DWORD APIENTRY wrapCAPI_INSTALLED (void) {
+#ifdef HAVE_CAPI4LINUX
+    DWORD fret = capi20_isinstalled();
+    TRACE ("() -> %lx\n", fret);
+    return fret;
+#else
+    return 0x1109;
+#endif
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+DWORD APIENTRY wrapCAPI_MANUFACTURER (DWORD Class, DWORD Function, DWORD Ctlr, PVOID pParams, DWORD ParamsLen) {
+    FIXME ("(), not supported!\n");
+    return 0x1109;
+}
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
diff --git a/dlls/capi2032/cap20wxx.h b/dlls/capi2032/cap20wxx.h
new file mode 100644
index 00000000000..b8c71f66280
--- /dev/null
+++ b/dlls/capi2032/cap20wxx.h
@@ -0,0 +1,70 @@
+/*
+ * cap20wxx.c
+ *
+ * Copyright 2002-2003 AVM Computersysteme Vertriebs GmbH
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ */
+
+/*---------------------------------------------------------------------------*\
+ * Modul : cap20wxx.h created at Thu 06-Jul-2000 19:58:17 by RStolz
+ *
+ * Id: cap20wxx.h 1.3 2002/12/04 09:43:22Z rstolz Exp 
+ *
+ * Log: cap20wxx.h 
+ * Revision 1.3  2002/12/04 09:43:22Z  rstolz
+ * - RStolz: CCDI interface removed
+ * Revision 1.2  2002/08/27 09:32:15Z  rstolz
+ * - RStolz: new incarnation AVMCDDI.dll supports PNP notifications
+ * Revision 1.1  2000/09/07 11:02:40Z  DFriedel
+ * Initial revision
+ *
+ * CAPI 2.0-Schnittstelle f〉 Windows-Programme 32 und 64 Bit
+\*---------------------------------------------------------------------------*/
+#ifndef _cap20wxx_h
+#define _cap20wxx_h
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+#include <windef.h>
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+
+DWORD APIENTRY wrapCAPI_REGISTER          (DWORD MessageBufferSize, DWORD maxLogicalConnection, DWORD maxBDataBlocks, DWORD maxBDataLen, DWORD *pApplID);
+DWORD APIENTRY wrapCAPI_RELEASE           (DWORD ApplID);
+DWORD APIENTRY wrapCAPI_PUT_MESSAGE       (DWORD ApplID, PVOID pCAPIMessage);
+DWORD APIENTRY wrapCAPI_GET_MESSAGE       (DWORD ApplID, PVOID *ppCAPIMessage);
+DWORD APIENTRY wrapCAPI_WAIT_FOR_SIGNAL   (DWORD ApplID);
+DWORD APIENTRY wrapCAPI_GET_MANUFACTURER  (char *SzBuffer);
+DWORD APIENTRY wrapCAPI_GET_VERSION       (DWORD *pCAPIMajor, DWORD *pCAPIMinor, DWORD *pManufacturerMajor, DWORD *pManufacturerMinor);
+DWORD APIENTRY wrapCAPI_GET_SERIAL_NUMBER (char *SzBuffer);
+DWORD APIENTRY wrapCAPI_GET_PROFILE       (PVOID SzBuffer, DWORD CtrlNr);
+DWORD APIENTRY wrapCAPI_INSTALLED         (void);
+DWORD APIENTRY wrapCAPI_MANUFACTURER      (DWORD Class, DWORD Function, DWORD Ctlr, PVOID pParams, DWORD ParamsLen);
+
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+#ifdef __cplusplus
+}
+#endif
+/*---------------------------------------------------------------------------*\
+\*---------------------------------------------------------------------------*/
+#endif
diff --git a/dlls/capi2032/capi2032.spec b/dlls/capi2032/capi2032.spec
new file mode 100644
index 00000000000..d21ae1f4156
--- /dev/null
+++ b/dlls/capi2032/capi2032.spec
@@ -0,0 +1,11 @@
+ 1 stdcall CAPI_REGISTER          (long long long long ptr) wrapCAPI_REGISTER
+ 2 stdcall CAPI_RELEASE           (long)                    wrapCAPI_RELEASE
+ 3 stdcall CAPI_PUT_MESSAGE       (long ptr)                wrapCAPI_PUT_MESSAGE
+ 4 stdcall CAPI_GET_MESSAGE       (long ptr)                wrapCAPI_GET_MESSAGE
+ 5 stdcall CAPI_WAIT_FOR_SIGNAL   (long)                    wrapCAPI_WAIT_FOR_SIGNAL
+ 6 stdcall CAPI_GET_MANUFACTURER  (str)                     wrapCAPI_GET_MANUFACTURER
+ 7 stdcall CAPI_GET_VERSION       (ptr ptr ptr ptr)         wrapCAPI_GET_VERSION
+ 8 stdcall CAPI_GET_SERIAL_NUMBER (str)                     wrapCAPI_GET_SERIAL_NUMBER
+ 9 stdcall CAPI_GET_PROFILE       (ptr long)                wrapCAPI_GET_PROFILE
+10 stdcall CAPI_INSTALLED         ()                        wrapCAPI_INSTALLED
+99 stdcall CAPI_MANUFACTURER      (long long long ptr long) wrapCAPI_MANUFACTURER
diff --git a/include/config.h.in b/include/config.h.in
index b5322e8e069..3008ff46c76 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -38,6 +38,12 @@
 /* Define to 1 if you have the <audio/soundlib.h> header file. */
 #undef HAVE_AUDIO_SOUNDLIB_H
 
+/* Define to 1 if you have the <capi20.h> header file. */
+#undef HAVE_CAPI20_H
+
+/* Define if you have capi4linux libs and headers */
+#undef HAVE_CAPI4LINUX
+
 /* Define to 1 if you have the `chsize' function. */
 #undef HAVE_CHSIZE
 
@@ -275,6 +281,9 @@
 /* Define if <linux/joystick.h> defines the Linux 2.2 joystick API */
 #undef HAVE_LINUX_22_JOYSTICK_API
 
+/* Define to 1 if you have the <linux/capi.h> header file. */
+#undef HAVE_LINUX_CAPI_H
+
 /* Define to 1 if you have the <linux/cdrom.h> header file. */
 #undef HAVE_LINUX_CDROM_H
 
-- 
GitLab