<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/97fb6180923348c1497da4cf20b3a6ca022873e4">https://github.com/macports/macports-ports/commit/97fb6180923348c1497da4cf20b3a6ca022873e4</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 97fb6180923 py-pypcap: fix pointer types, add py312/313
</span>97fb6180923 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 97fb6180923348c1497da4cf20b3a6ca022873e4
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Tue Jan 28 12:55:44 2025 +1100

<span style='display:block; white-space:pre;color:#404040;'>    py-pypcap: fix pointer types, add py312/313
</span>---
 python/py-pypcap/Portfile             |  2 +-
 python/py-pypcap/files/pcap.pyx.patch | 48 +++++++++++++++++++++++++----------
 python/py-pypcap/files/py3.patch      |  4 +--
 3 files changed, 38 insertions(+), 16 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pypcap/Portfile b/python/py-pypcap/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index f10ecdb6675..cd25b5e3078 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-pypcap/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pypcap/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -20,7 +20,7 @@ checksums               md5     034c3cbbfa81aa19e8f685b767c65764 \
</span>                         sha1    966f62deca16d5086e2ef6694b0c795f273da15c \
                         rmd160  119dcc393d42678e6fa8f0b0f8b82536ab1efb13
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-python.versions         310 311
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+python.versions         310 311 312 313
</span> 
 if {$subport ne $name} {
     depends_build-append    port:py${python.version}-cython
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pypcap/files/pcap.pyx.patch b/python/py-pypcap/files/pcap.pyx.patch
</span><span style='display:block; white-space:pre;color:#808080;'>index 93528bd2348..3f1a00c31e9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-pypcap/files/pcap.pyx.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pypcap/files/pcap.pyx.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,5 +1,5 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- pcap.pyx.orig  2005-10-17 09:00:11.000000000 +1000
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ pcap.pyx       2022-10-20 22:52:38.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- pcap.pyx.orig  2005-10-17 09:00:11
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ pcap.pyx       2025-01-28 12:50:18
</span> @@ -1,7 +1,7 @@
  #
  # pcap.pyx
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -25,7 +25,7 @@
</span>      
  cdef extern from "pcap.h":
      struct bpf_insn:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -42,6 +42,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -42,8 +42,12 @@
</span>          unsigned int caplen
      ctypedef struct pcap_t:
          int __xxx
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -34,8 +34,11 @@
</span> +        pcap_if_t *next
 +        char *name
  
<span style='display:block; white-space:pre;background:#ffe0e0;'>- ctypedef void (*pcap_handler)(void *arg, pcap_pkthdr *hdr, char *pkt)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-ctypedef void (*pcap_handler)(void *arg, pcap_pkthdr *hdr, char *pkt)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ctypedef void (*pcap_handler)(unsigned char *arg, const pcap_pkthdr *hdr, const unsigned char *pkt)
</span>  
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ cdef extern from "pcap.h":
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     pcap_t *pcap_open_live(char *device, int snaplen, int promisc,
</span> @@ -62,6 +66,13 @@
      char   *pcap_geterr(pcap_t *p)
      void    pcap_close(pcap_t *p)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -59,7 +62,26 @@
</span>      int     pcap_ex_compile_nopcap(int snaplen, int dlt,
                                     bpf_program *fp, char *str,
                                     int optimize, unsigned int netmask)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -134,16 +145,18 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -86,14 +97,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     void *args
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int   got_exc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-cdef void __pcap_handler(void *arg, pcap_pkthdr *hdr, char *pkt):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++cdef void __pcap_handler(unsigned char *arg, const pcap_pkthdr *hdr, const unsigned char *pkt):
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     cdef pcap_handler_ctx *ctx
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    cdef char *pktmem
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     cdef int gil
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ctx = <pcap_handler_ctx *>arg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    pktmem = <char *>pkt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     gil = PyGILState_Ensure()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     try:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         (<object>ctx.callback)(hdr.ts.tv_sec + (hdr.ts.tv_usec/1000000.0),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                               PyBuffer_FromMemory(pkt, hdr.caplen),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               PyBuffer_FromMemory(pktmem, hdr.caplen),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                *(<object>ctx.args))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     except:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         ctx.got_exc = 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -134,16 +147,18 @@
</span>              raise IOError, 'bad filter'
      def filter(self, buf):
          """Return boolean match for buf against our filter."""
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -81,7 +103,7 @@
</span>      
      Open a handle to a packet capture descriptor.
      
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -152,6 +165,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -152,6 +167,9 @@
</span>                   or None to open the first available up interface
      snaplen   -- maximum number of bytes to capture for each packet
      promisc   -- boolean to specify promiscuous mode sniffing
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -91,7 +113,7 @@
</span>      immediate -- disable buffering, if possible
      """
      cdef pcap_t *__pcap
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -161,7 +177,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -161,7 +179,7 @@
</span>      cdef int __dloff
      
      def __init__(self, name=None, snaplen=65535, promisc=True,
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -100,7 +122,7 @@
</span>          global dltoff
          cdef char *p
          
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -171,7 +187,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -171,7 +189,7 @@
</span>                  raise OSError, self.__ebuf
          else:
              p = name
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -109,7 +131,7 @@
</span>          self.__pcap = pcap_open_offline(p, self.__ebuf)
          if not self.__pcap:
              self.__pcap = pcap_open_live(pcap_ex_name(p), snaplen, promisc,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -184,7 +200,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -184,7 +202,7 @@
</span>          try: self.__dloff = dltoff[pcap_datalink(self.__pcap)]
          except KeyError: pass
          if immediate and pcap_ex_immediate(self.__pcap) < 0:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -118,7 +140,7 @@
</span>      
      property name:
          """Network interface or dumpfile name."""
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -243,16 +259,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -243,16 +261,6 @@
</span>          """Return datalink type (DLT_* values)."""
          return pcap_datalink(self.__pcap)
      
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -135,7 +157,7 @@
</span>      def __add_pkts(self, ts, pkt, pkts):
          pkts.append((ts, pkt))
      
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -288,30 +294,47 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -288,30 +296,47 @@
</span>              raise exc[0], exc[1], exc[2]
          return n
  
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -189,7 +211,7 @@
</span>      
      def geterr(self):
          """Return the last error message associated with this handle."""
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -334,12 +357,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -334,12 +359,13 @@
</span>          cdef char *pkt
          cdef int n
          while 1:
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -206,7 +228,7 @@
</span>              elif n == -1:
                  raise KeyboardInterrupt
              elif n == -2:
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -364,3 +388,36 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -364,3 +390,36 @@
</span>          raise OSError, ebuf
      return p
  
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-pypcap/files/py3.patch b/python/py-pypcap/files/py3.patch
</span><span style='display:block; white-space:pre;color:#808080;'>index dcb44f22bb6..4f7f8e45385 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-pypcap/files/py3.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-pypcap/files/py3.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -14,8 +14,8 @@
</span>      gil = PyGILState_Ensure()
      try:
          (<object>ctx.callback)(hdr.ts.tv_sec + (hdr.ts.tv_usec/1000000.0),
<span style='display:block; white-space:pre;background:#ffe0e0;'>--                               PyBuffer_FromMemory(pkt, hdr.caplen),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                               PyMemoryView_FromMemory(pkt, hdr.caplen, PyBUF_WRITE),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                               PyBuffer_FromMemory(pktmem, hdr.caplen),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               PyMemoryView_FromMemory(pktmem, hdr.caplen, PyBUF_WRITE),
</span>                                 *(<object>ctx.args))
      except:
          ctx.got_exc = 1
</pre><pre style='margin:0'>

</pre>