Package: gpsim
Version: 0.20.14-7.2
Severity: important
Tags: patch
Hi,
gpsim fails to build on GNU/kFreeBSD because the code to access to the
parallel port is Linux specific. Please find attached a patch to add
support for GNU/kFreeBSD. It should also work on plain FreeBSD, so the
upstream may be interested in it.
Could you please apply this patch in the next upload?
Thanks in advance,
Aurelien
-- System Information:
Debian Release: testing/unstable
Architecture: kfreebsd-i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: GNU/kFreeBSD 5.4-1-686
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Versions of packages gpsim depends on:
ii libc0.1 2.3-1+kbsd.15 GNU C Library: Shared libraries an
ii libgcc1 1:4.0.2-5 GCC support library
ii libglib1.2 1.2.10-10+libtool The GLib library of C routines
ii libgtk1.2 1.2.10-18 The GIMP Toolkit set of widgets fo
ii libgtkextra17 0.99.17-2.2 A useful set of widgets for GTK+
ii libpopt0 1.7-5+libtool lib for parsing cmdline parameters
ii libreadline5 5.1-4 GNU readline and history libraries
ii libstdc++6 4.0.2-5 The GNU Standard C++ Library v3
ii libx11-6 6.8.2.dfsg.1-11 X Window System protocol client li
ii libxext6 6.8.2.dfsg.1-11 X Window System miscellaneous exte
ii libxi6 6.8.2.dfsg.1-11 X Window System Input extension li
ii xlibs 6.8.2.dfsg.1-11 X Window System client libraries m
Versions of packages gpsim recommends:
ii gputils 0.13.3-1 GNU PIC utilities
-- no debconf information
Status: in BTS
Author: aurel32
diff -u gpsim-0.20.14/modules/paraface.cc gpsim-0.20.14/modules/paraface.cc
--- gpsim-0.20.14/modules/paraface.cc
+++ gpsim-0.20.14/modules/paraface.cc
@@ -41,9 +41,20 @@
#include <sys/stat.h>
#include <fcntl.h>
+#if defined(__linux__)
#include <linux/parport.h>
#include <linux/ppdev.h>
-
+#elif defined(__FreeBSD_kernel__) || defined(__FreeBSD__)
+#include <dev/ppbus/ppi.h>
+#include <dev/ppbus/ppbconf.h>
+#define PPRSTATUS PPIGSTATUS
+#define PPWDATA PPISDATA
+#define PARPORT_STATUS_ACK nACK
+#define PARPORT_STATUS_BUSY nBUSY
+#define PARPORT_STATUS_PAPEROUT PERROR
+#define PARPORT_STATUS_SELECT SELECT
+#define PARPORT_STATUS_ERROR nFAULT
+#endif
#include <errno.h>
#include <stdlib.h>
@@ -345,14 +356,17 @@
perror ("open");
return -1;
}
-
+
+#if defined(PPCLAIM)
if (ioctl (fd, PPCLAIM)) {
perror ("PPCLAIM");
close (fd);
fd=-1;
return -1;
}
+#endif
+#if defined(PPNEGOT)
/* Switch to compatibility mode. (In fact we don't need
* to do this, since we start off in compatibility mode
* anyway, but this demonstrates PPNEGOT.)*/
@@ -364,6 +378,19 @@
return -1;
}
return 0; // SUCCESS
+#elif defined(PPISECR)
+ /* Switch to compatibility mode. (In fact we don't need
+ * to do this, since we start off in compatibility mode
+ * anyway, but this demonstrates PPISECR.)*/
+ mode = PPB_COMPATIBLE;
+ if (ioctl (fd, PPISECR, &mode)) {
+ perror ("PPISECR");
+ close (fd);
+ fd=-1;
+ return -1;
+ }
+ return 0; // SUCCESS
+#endif
}
// Return low five bits containing: