Hi, Please find below a patch to the qcam backend to fix undefined symbols at runtime when dlopening the symbols on GNU/kFreeBSD (GNU libc with a FreeBSD kernel).
This platform uses a GNU libc, so <sys/io.h> is available. However the check in the source code is done on __linux__ and not on __GLIBC__. I would even change the line to #if defined(HAVE_SYS_IO_H) || defined(HAVE_ASM_IO_H) || defined(HAVE_SYS_HW_H) but they may have systems where one of those is defined and the where the associated functions inb and outb functions are not defined. Thanks, Aurelien --- sane-backends-1.0.17.orig/backend/qcam.c.orig 2006-01-07 04:29:14.000000000 +0100 +++ sane-backends-1.0.17/backend/qcam.c 2006-01-07 04:29:45.000000000 +0100 @@ -193,10 +193,10 @@ static const SANE_Range bw_y_range = { 0, 241, 1 }; static const SANE_Range odd_bw_y_range = { 1, 242, 1 }; -#if defined(__linux__) || defined (HAVE_SYS_HW_H) +#if defined(__GLIBC__) || defined (HAVE_SYS_HW_H) #ifdef HAVE_SYS_IO_H -# include <sys/io.h> /* GNU libc based Linux */ +# include <sys/io.h> /* GNU libc based OS */ #elif HAVE_ASM_IO_H # include <asm/io.h> /* older Linux */ #elif HAVE_SYS_HW_H @@ -209,7 +209,7 @@ #define write_lpdata(d,v) outb ((v), (d)->port) #define write_lpcontrol(d,v) outb ((v), (d)->port + 2) -#endif /* __linux__ */ +#endif /* __GLIBC__ */ static SANE_Status enable_ports (QC_Device * q) -- .''`. Aurelien Jarno | GPG: 1024D/F1BCDB73 : :' : Debian developer | Electrical Engineer `. `' aure...@debian.org | aurel...@aurel32.net `- people.debian.org/~aurel32 | www.aurel32.net