فهرست منبع

OpenBSD support by Anibal Limón

Stéphane Raimbault 14 سال پیش
والد
کامیت
811d134978
3فایلهای تغییر یافته به همراه17 افزوده شده و 3 حذف شده
  1. 1 0
      NEWS
  2. 10 2
      src/modbus.c
  3. 6 1
      src/modbus.h.in

+ 1 - 0
NEWS

@@ -15,6 +15,7 @@ libmodbus 2.1.1 (2010-XX-XX)
   Reported by aladdinwu.
 - Parity setting is now a single char ('N', 'E' or 'O')
 - Report slave ID server side
+- OpenBSD support by Anibal Limón.
 
 libmodbus 2.1.0 (2010-03-24)
 ============================

+ 10 - 2
src/modbus.c

@@ -45,11 +45,16 @@
 #include <limits.h>
 #include <fcntl.h>
 
+/* Add this for macros that defined unix flavor */
+#if (defined(__unix__) || defined(unix)) && !defined(USG)
+#include <sys/param.h>
+#endif
+
 /* TCP */
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/ioctl.h>
-#if defined(__FreeBSD__ ) && __FreeBSD__ < 5
+#if (defined OpenBSD) || (defined(__FreeBSD__ ) && __FreeBSD__ < 5)
 #include <netinet/in_systm.h>
 #endif
 #include <netinet/in.h>
@@ -1527,8 +1532,11 @@ modbus_t* modbus_new_rtu(const char *device,
 
     ctx->com = (modbus_rtu_t *) malloc(sizeof(modbus_rtu_t));
     ctx_rtu = (modbus_rtu_t *)ctx->com;
-
+#if defined(OpenBSD)
+    strlcpy(ctx_rtu->device, device, sizeof(ctx_rtu->device));
+#else
     strcpy(ctx_rtu->device, device);
+#endif
     ctx_rtu->baud = baud;
     if (parity == 'N' || parity == 'E' || parity == 'O') {
         ctx_rtu->parity = parity;

+ 6 - 1
src/modbus.h.in

@@ -18,6 +18,11 @@
 #ifndef _MODBUS_H_
 #define _MODBUS_H_
 
+/* Add this for macros that defined unix flavor */
+#if (defined(__unix__) || defined(unix)) && !defined(USG)
+#include <sys/param.h>
+#endif
+
 #ifdef HAVE_INTTYPES_H
 #include <inttypes.h>
 #endif
@@ -25,7 +30,7 @@
 #include <stdint.h>
 #endif
 #include <termios.h>
-#if defined(__FreeBSD__ ) && __FreeBSD__ < 5
+#if defined(OpenBSD) || (defined(__FreeBSD__ ) && __FreeBSD__ < 5)
 #include <netinet/in_systm.h>
 #endif
 #include <netinet/in.h>