update Fri Oct 30 12:37:00 PDT 2009
[pkgsrc.git] / wip / python31 / patches / patch-ap
1 $NetBSD: patch-ap,v 1.2 2009/04/24 01:32:50 hasso Exp $
2
3 --- Modules/socketmodule.c.orig 2009-03-31 21:20:48 +0300
4 +++ Modules/socketmodule.c      2009-04-20 16:16:04 +0300
5 @@ -379,7 +379,7 @@ const char *inet_ntop(int af, const void
6  #define SOCKETCLOSE close
7  #endif
8  
9 -#if defined(HAVE_BLUETOOTH_H) || defined(HAVE_BLUETOOTH_BLUETOOTH_H) &&  !defined(__NetBSD__)
10 +#if defined(HAVE_BLUETOOTH_H) || defined(HAVE_BLUETOOTH_BLUETOOTH_H) &&  !defined(__NetBSD__) && !defined(__DragonFly__)
11  #define USE_BLUETOOTH 1
12  #if defined(__FreeBSD__)
13  #define BTPROTO_L2CAP BLUETOOTH_PROTO_L2CAP
14 @@ -393,11 +393,13 @@ const char *inet_ntop(int af, const void
15  #define _BT_L2_MEMB(sa, memb) ((sa)->l2cap_##memb)
16  #define _BT_RC_MEMB(sa, memb) ((sa)->rfcomm_##memb)
17  #define _BT_HCI_MEMB(sa, memb) ((sa)->hci_##memb)
18 -#elif defined(__NetBSD__)
19 +#elif defined(__NetBSD__) || defined(__DragonFly__)
20  #define sockaddr_l2 sockaddr_bt
21  #define sockaddr_rc sockaddr_bt
22  #define sockaddr_hci sockaddr_bt
23  #define sockaddr_sco sockaddr_bt
24 +#define SOL_HCI BTPROTO_HCI
25 +#define HCI_DATA_DIR SO_HCI_DIRECTION
26  #define _BT_L2_MEMB(sa, memb) ((sa)->bt_##memb)
27  #define _BT_RC_MEMB(sa, memb) ((sa)->bt_##memb)
28  #define _BT_HCI_MEMB(sa, memb) ((sa)->bt_##memb)
29 @@ -1076,9 +1078,13 @@ makesockaddr(int sockfd, struct sockaddr
30                 case BTPROTO_HCI:
31                 {
32                         struct sockaddr_hci *a = (struct sockaddr_hci *) addr;
33 +#if defined(__NetBSD__) || defined(__DragonFly__)
34 +                       return makebdaddr(&_BT_HCI_MEMB(a, bdaddr));
35 +#else
36                         PyObject *ret = NULL;
37                         ret = Py_BuildValue("i", _BT_HCI_MEMB(a, dev));
38                         return ret;
39 +#endif
40                 }
41  
42  #if !defined(__FreeBSD__)
43 @@ -1345,12 +1351,25 @@ getsockaddrarg(PySocketSockObject *s, Py
44                 case BTPROTO_HCI:
45                 {
46                         struct sockaddr_hci *addr = (struct sockaddr_hci *)addr_ret;
47 +#if defined(__NetBSD__) || defined(__DragonFly__)
48 +                       char *straddr = _PyUnicode_AsString(args);
49 +
50 +                       _BT_HCI_MEMB(addr, family) = AF_BLUETOOTH;
51 +                       if (straddr == NULL) {
52 +                               PyErr_SetString(socket_error, "getsockaddrarg: "
53 +                                               "wrong format");
54 +                               return 0;
55 +                       }
56 +                       if (setbdaddr(straddr, &_BT_HCI_MEMB(addr, bdaddr)) < 0)
57 +                               return 0;
58 +#else
59                         _BT_HCI_MEMB(addr, family) = AF_BLUETOOTH;
60                         if (!PyArg_ParseTuple(args, "i", &_BT_HCI_MEMB(addr, dev))) {
61                                 PyErr_SetString(socket_error, "getsockaddrarg: "
62                                                 "wrong format");
63                                 return 0;
64                         }
65 +#endif
66                         *len_ret = sizeof *addr;
67                         return 1;
68                 }
69 @@ -4564,9 +4583,13 @@ init_socket(void)
70         PyModule_AddIntConstant(m, "BTPROTO_L2CAP", BTPROTO_L2CAP);
71         PyModule_AddIntConstant(m, "BTPROTO_HCI", BTPROTO_HCI);
72         PyModule_AddIntConstant(m, "SOL_HCI", SOL_HCI);
73 +#if !defined(__NetBSD__) && !defined(__DragonFly__)
74         PyModule_AddIntConstant(m, "HCI_FILTER", HCI_FILTER);
75 +#endif
76  #if !defined(__FreeBSD__)
77 +#if !defined(__NetBSD__) && !defined(__DragonFly__)
78         PyModule_AddIntConstant(m, "HCI_TIME_STAMP", HCI_TIME_STAMP);
79 +#endif
80         PyModule_AddIntConstant(m, "HCI_DATA_DIR", HCI_DATA_DIR);
81         PyModule_AddIntConstant(m, "BTPROTO_SCO", BTPROTO_SCO);
82  #endif