Skip to content

Commit 3e85dfd

Browse files
committed
applying netbsd-wizs-mod.patch from issue5510 -
fixes for netbsd (and dragonflybsd?)
1 parent b603d03 commit 3e85dfd

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

Modules/socketmodule.c

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ dup_socket(SOCKET handle)
379379
#define SOCKETCLOSE close
380380
#endif
381381

382-
#if (defined(HAVE_BLUETOOTH_H) || defined(HAVE_BLUETOOTH_BLUETOOTH_H)) && !defined(__NetBSD__)
382+
#if (defined(HAVE_BLUETOOTH_H) || defined(HAVE_BLUETOOTH_BLUETOOTH_H)) && !defined(__NetBSD__) && !defined(__DragonFly__)
383383
#define USE_BLUETOOTH 1
384384
#if defined(__FreeBSD__)
385385
#define BTPROTO_L2CAP BLUETOOTH_PROTO_L2CAP
@@ -393,11 +393,13 @@ dup_socket(SOCKET handle)
393393
#define _BT_L2_MEMB(sa, memb) ((sa)->l2cap_##memb)
394394
#define _BT_RC_MEMB(sa, memb) ((sa)->rfcomm_##memb)
395395
#define _BT_HCI_MEMB(sa, memb) ((sa)->hci_##memb)
396-
#elif defined(__NetBSD__)
396+
#elif defined(__NetBSD__) || defined(__DragonFly__)
397397
#define sockaddr_l2 sockaddr_bt
398398
#define sockaddr_rc sockaddr_bt
399399
#define sockaddr_hci sockaddr_bt
400400
#define sockaddr_sco sockaddr_bt
401+
#define SOL_HCI BTPROTO_HCI
402+
#define HCI_DATA_DIR SO_HCI_DIRECTION
401403
#define _BT_L2_MEMB(sa, memb) ((sa)->bt_##memb)
402404
#define _BT_RC_MEMB(sa, memb) ((sa)->bt_##memb)
403405
#define _BT_HCI_MEMB(sa, memb) ((sa)->bt_##memb)
@@ -1113,9 +1115,13 @@ makesockaddr(SOCKET_T sockfd, struct sockaddr *addr, size_t addrlen, int proto)
11131115
case BTPROTO_HCI:
11141116
{
11151117
struct sockaddr_hci *a = (struct sockaddr_hci *) addr;
1118+
#if defined(__NetBSD__) || defined(__DragonFly__)
1119+
return makebdaddr(&_BT_HCI_MEMB(a, bdaddr));
1120+
#else
11161121
PyObject *ret = NULL;
11171122
ret = Py_BuildValue("i", _BT_HCI_MEMB(a, dev));
11181123
return ret;
1124+
#endif
11191125
}
11201126

11211127
#if !defined(__FreeBSD__)
@@ -1399,12 +1405,25 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
13991405
case BTPROTO_HCI:
14001406
{
14011407
struct sockaddr_hci *addr = (struct sockaddr_hci *)addr_ret;
1408+
#if defined(__NetBSD__) || defined(__DragonFly__)
1409+
char *straddr = PyBytes_AS_STRING(args);
1410+
1411+
_BT_HCI_MEMB(addr, family) = AF_BLUETOOTH;
1412+
if (straddr == NULL) {
1413+
PyErr_SetString(socket_error, "getsockaddrarg: "
1414+
"wrong format");
1415+
return 0;
1416+
}
1417+
if (setbdaddr(straddr, &_BT_HCI_MEMB(addr, bdaddr)) < 0)
1418+
return 0;
1419+
#else
14021420
_BT_HCI_MEMB(addr, family) = AF_BLUETOOTH;
14031421
if (!PyArg_ParseTuple(args, "i", &_BT_HCI_MEMB(addr, dev))) {
14041422
PyErr_SetString(socket_error, "getsockaddrarg: "
14051423
"wrong format");
14061424
return 0;
14071425
}
1426+
#endif
14081427
*len_ret = sizeof *addr;
14091428
return 1;
14101429
}
@@ -4544,9 +4563,13 @@ PyInit__socket(void)
45444563
PyModule_AddIntConstant(m, "BTPROTO_L2CAP", BTPROTO_L2CAP);
45454564
PyModule_AddIntConstant(m, "BTPROTO_HCI", BTPROTO_HCI);
45464565
PyModule_AddIntConstant(m, "SOL_HCI", SOL_HCI);
4566+
#if !defined(__NetBSD__) && !defined(__DragonFly__)
45474567
PyModule_AddIntConstant(m, "HCI_FILTER", HCI_FILTER);
4568+
#endif
45484569
#if !defined(__FreeBSD__)
4570+
#if !defined(__NetBSD__) && !defined(__DragonFly__)
45494571
PyModule_AddIntConstant(m, "HCI_TIME_STAMP", HCI_TIME_STAMP);
4572+
#endif
45504573
PyModule_AddIntConstant(m, "HCI_DATA_DIR", HCI_DATA_DIR);
45514574
PyModule_AddIntConstant(m, "BTPROTO_SCO", BTPROTO_SCO);
45524575
#endif

0 commit comments

Comments
 (0)