public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
To: git-commits@fedoraproject.org
Subject: [rpms/hping3] rawhide: Port to TCL 9
Date: Fri, 10 Jul 2026 19:57:14 GMT	[thread overview]
Message-ID: <178371343456.1.2646521425644245781.rpms-hping3-6970bc514010@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/hping3
Branch : rawhide
Commit : 6970bc514010c7cba48eba5947ae0ba24881ef99
Author : Petr Písař <ppisar@redhat.com>
Date   : 2026-07-09T16:42:02+02:00
Stats  : +318/-1 in 2 file(s)
URL    : https://src.fedoraproject.org/rpms/hping3/c/6970bc514010c7cba48eba5947ae0ba24881ef99?branch=rawhide

Log:
Port to TCL 9

---
diff --git a/hping3-Port-to-TCL-9.patch b/hping3-Port-to-TCL-9.patch
new file mode 100644
index 0000000..57adf6b
--- /dev/null
+++ b/hping3-Port-to-TCL-9.patch
@@ -0,0 +1,312 @@
+From 6c7adaca6229171105c8d5f801bd95e49f101a6b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Thu, 9 Jul 2026 16:30:35 +0200
+Subject: [PATCH] Port to TCL 9
+
+TLC 9 changed API
+<https://core.tcl-lang.org/tcl/wiki?name=Migrating+C+extensions+to+Tcl+9>
+and this patch adapts to it.
+
+It intentionally keeps Tcl_GetIntFromObj() on some places, either
+because the retrieved number is later passed to functionc supporting
+32-bit integers only, or because the meaning does not need large
+values.
+---
+ script.c | 68 ++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 34 insertions(+), 34 deletions(-)
+
+diff --git a/script.c b/script.c
+index 8208f29..2cbf0a8 100644
+--- a/script.c
++++ b/script.c
+@@ -103,7 +103,7 @@ static struct recv_handler *HpingRecvGetHandler(struct recv_handler *ra, int len
+ /* ----------------------------- Sub commands ------------------------------- */
+ /* hping resolve hostname */
+ static int HpingResolveCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	struct sockaddr_in saddr;
+ 	char *hostname;
+@@ -157,7 +157,7 @@ static int rawsocket = -1;
+ 
+ /* hping send ?-nocompile? pktdescr */
+ static int HpingSendCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	struct ars_packet p;
+ 	int nocompile = 0;
+@@ -215,13 +215,13 @@ static int HpingSendCmd(ClientData clientData, Tcl_Interp *interp,
+ 
+ /* hping sendraw pktdata */
+ static int HpingSendRawCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	int error;
+ 	Tcl_Obj *result;
+ 	struct sockaddr_in sa;
+ 	char *pkt;
+-	int pktlen;
++	Tcl_Size pktlen;
+ 	struct ars_iphdr *ip;
+ 
+ 	if (objc != 3) {
+@@ -262,7 +262,7 @@ static int HpingSendRawCmd(ClientData clientData, Tcl_Interp *interp,
+ #define APD_MAX_LEN (65536*2+4096)
+ char *GetPacketDescription(char *data, int len, int hexdata)
+ {
+-	unsigned char *p = (char*)data;
++	unsigned char *p = (unsigned char*)data;
+ 	struct ars_packet pkt;
+ 	char *d = malloc(APD_MAX_LEN);
+ 	char *ret;
+@@ -383,7 +383,7 @@ static int HpingRecvPackets(struct recv_handler *ra, Tcl_Interp *interp, Tcl_Obj
+  *
+  * For default timeout is -1, maxpackets is 0 */
+ static int __HpingRecvCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[], int rapd, int hexdata)
++		int objc, Tcl_Obj *const objv[], int rapd, int hexdata)
+ {
+ 	Tcl_Obj *result;
+ 	struct recv_handler *ra;
+@@ -416,13 +416,13 @@ static int __HpingRecvCmd(ClientData clientData, Tcl_Interp *interp,
+ 
+ /* The two wrappers for the __HpingRecvRawCmd() */
+ static int HpingRecvRawCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	return __HpingRecvCmd(clientData, interp, objc, objv, 0, 0);
+ }
+ 
+ static int HpingRecvCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	char *firstarg;
+ 	int hexdata = 0;
+@@ -440,7 +440,7 @@ static int HpingRecvCmd(ClientData clientData, Tcl_Interp *interp,
+ 
+ /* hping getinterfaces */
+ static int HpingGetInterfacesCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	struct hpingif ifaces[HPING_IFACE_MAX];
+ 	int found, i;
+@@ -513,7 +513,7 @@ static int HpingGetInterfacesCmd(ClientData clientData, Tcl_Interp *interp,
+ 
+ /* hping outifaddr destaddr */
+ static int HpingGetOutIfAddrCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	struct sockaddr_in dest, ifaddr;
+ 	Tcl_Obj *result;
+@@ -541,7 +541,7 @@ static int HpingGetOutIfAddrCmd(ClientData clientData, Tcl_Interp *interp,
+ 
+ /* hping getfield layer field ?skip? packet */
+ static int HpingGetFieldCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	char *layer, *field, *value, *packet;
+ 	int skip = 0;
+@@ -570,7 +570,7 @@ static int HpingGetFieldCmd(ClientData clientData, Tcl_Interp *interp,
+ 
+ /* hping hasfield layer field ?skip? packet */
+ static int HpingHasFieldCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	char *layer, *field, *packet;
+ 	int skip = 0;
+@@ -598,7 +598,7 @@ static int HpingHasFieldCmd(ClientData clientData, Tcl_Interp *interp,
+ 
+ /* hping setfield layer field value ?skip? packet */
+ static int HpingSetFieldCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	char *layer, *field, *value, *packet;
+ 	int skip = 0, vstart, vend;
+@@ -630,7 +630,7 @@ static int HpingSetFieldCmd(ClientData clientData, Tcl_Interp *interp,
+ 
+ /* hping delfield layer field ?skip? packet */
+ static int HpingDelFieldCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	char *layer, *field, *packet;
+ 	int skip = 0, fstart, vend;
+@@ -669,12 +669,12 @@ static int HpingDelFieldCmd(ClientData clientData, Tcl_Interp *interp,
+ 
+ /* hping checksum string */
+ static int HpingChecksumCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	Tcl_Obj *result;
+ 	u_int16_t cksum;
+ 	char *data;
+-	int len;
++	Tcl_Size len;
+ 
+ 	result = Tcl_GetObjResult(interp);
+ 
+@@ -690,7 +690,7 @@ static int HpingChecksumCmd(ClientData clientData, Tcl_Interp *interp,
+ 
+ /* hping setfilter ifname filter */
+ static int HpingSetFilterCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	struct recv_handler *ra;
+ 	struct bpf_program bpfp;
+@@ -736,12 +736,12 @@ void HpingEventHandler(void *clientData, int mask)
+ 
+ /* hping event ifname ?script? */
+ static int HpingEventCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	struct recv_handler *ra;
+ 	char *ifname;
+ 	Tcl_Obj *result;
+-	int scriptlen;
++	Tcl_Size scriptlen;
+ 
+ 	result = Tcl_GetObjResult(interp);
+ 	if (objc != 3 && objc != 4) {
+@@ -784,7 +784,7 @@ static int HpingEventCmd(ClientData clientData, Tcl_Interp *interp,
+ #if 0
+ /* hping setfilter ifname filter */
+ static int HpingSoftrealtimeCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	struct sched_param sp;
+ 	int min, max, virtual_priority;
+@@ -817,7 +817,7 @@ static int HpingSoftrealtimeCmd(ClientData clientData, Tcl_Interp *interp,
+ /* ---------------------- hping command implementation ---------------------- */
+ struct subcmd {
+ 	char *name;
+-	int (*proc)(ClientData cd, Tcl_Interp *i, int, Tcl_Obj *CONST objv[]);
++	int (*proc)(ClientData cd, Tcl_Interp *i, int, Tcl_Obj *const objv[]);
+ } subcmds[] = {
+ 	{ "resolve", HpingResolveCmd },
+ 	{ "send", HpingSendCmd },
+@@ -840,7 +840,7 @@ struct subcmd {
+ };
+ 
+ static int HpingObjCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	int i = 0;
+ 	char *scmd;
+@@ -881,7 +881,7 @@ static int HpingObjCmd(ClientData clientData, Tcl_Interp *interp,
+  * time to improve on this in the future if needed, without to break the API. */
+ 
+ static int BigBasicObjCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	Tcl_Obj *result;
+ 	mpz_t res, t;
+@@ -970,12 +970,12 @@ struct Tcl_ObjType tclMpzType = {
+  * 'val'. If 'val' == NULL, the mpz object is set to zero. */
+ void Tcl_SetMpzObj(Tcl_Obj *objPtr, mpz_ptr val)
+ {
+-	Tcl_ObjType *typePtr;
++	const Tcl_ObjType *typePtr;
+ 	mpz_ptr mpzPtr;
+ 
+ 	/* It's not a good idea to set a shared object... */
+ 	if (Tcl_IsShared(objPtr)) {
+-		panic("Tcl_SetMpzObj called with shared object");
++		Tcl_Panic("Tcl_SetMpzObj called with shared object");
+ 	}
+ 	/* Free the old object private data and invalidate the string
+ 	 * representation. */
+@@ -988,7 +988,7 @@ void Tcl_SetMpzObj(Tcl_Obj *objPtr, mpz_ptr val)
+ 	mpzPtr = (mpz_ptr) ckalloc(sizeof(struct struct_sbnz));
+ 	mpz_init(mpzPtr);
+ 	if (val && mpz_set(mpzPtr, val) != SBN_OK) {
+-		panic("Out of memory in Tcl_SetMpzObj");
++		Tcl_Panic("Out of memory in Tcl_SetMpzObj");
+ 	}
+ 	/* Set it as object private data, and type */
+ 	objPtr->typePtr = &tclMpzType;
+@@ -1041,7 +1041,7 @@ void DupMpzInternalRep(Tcl_Obj *srcPtr, Tcl_Obj *copyPtr)
+ 	mpz_init(mpzCopyPtr);
+ 	mpzSrcPtr = (mpz_ptr) srcPtr->internalRep.otherValuePtr;
+ 	if (mpz_set(mpzCopyPtr, mpzSrcPtr) != SBN_OK)
+-		panic("Out of memory inside DupMpzInternalRep()");
++		Tcl_Panic("Out of memory inside DupMpzInternalRep()");
+ 	copyPtr->internalRep.otherValuePtr = (void*) mpzCopyPtr;
+ 	copyPtr->typePtr = &tclMpzType;
+ }
+@@ -1066,7 +1066,7 @@ int SetMpzFromAny(struct Tcl_Interp* interp, Tcl_Obj *objPtr)
+ 	char *s;
+ 	mpz_t t;
+ 	mpz_ptr mpzPtr;
+-	Tcl_ObjType *typePtr;
++	const Tcl_ObjType *typePtr;
+ 
+ 	if (objPtr->typePtr == &tclMpzType)
+ 		return TCL_OK;
+@@ -1101,7 +1101,7 @@ int SetMpzFromAny(struct Tcl_Interp* interp, Tcl_Obj *objPtr)
+ /* --------------- the actual commands for multipreicision math ------------- */
+ 
+ static int BigBasicObjCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	Tcl_Obj *result;
+ 	mpz_t res;
+@@ -1169,7 +1169,7 @@ oom:
+ }
+ 
+ static int BigCmpObjCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	Tcl_Obj *result;
+ 	mpz_ptr a, b;
+@@ -1222,7 +1222,7 @@ static int BigCmpObjCmd(ClientData clientData, Tcl_Interp *interp,
+ }
+ 
+ static int BigRandObjCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	Tcl_Obj *result;
+ 	int len = 1;
+@@ -1247,10 +1247,10 @@ static int BigRandObjCmd(ClientData clientData, Tcl_Interp *interp,
+ }
+ 
+ static int BigSrandObjCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	char *seed;
+-	int len;
++	Tcl_Size len;
+ 
+ 	if (objc != 2) {
+ 		Tcl_WrongNumArgs(interp, 1, objv, "seed-string");
+@@ -1262,7 +1262,7 @@ static int BigSrandObjCmd(ClientData clientData, Tcl_Interp *interp,
+ }
+ 
+ static int BigPowObjCmd(ClientData clientData, Tcl_Interp *interp,
+-		int objc, Tcl_Obj *CONST objv[])
++		int objc, Tcl_Obj *const objv[])
+ {
+ 	Tcl_Obj *result;
+ 	int mpzerr;
+-- 
+2.55.0
+

diff --git a/hping3.spec b/hping3.spec
index ac4d756..2aec06a 100644
--- a/hping3.spec
+++ b/hping3.spec
@@ -1,7 +1,7 @@
 %define  cvs 20051105
 Name:    hping3
 Version: 0.0.%{cvs}
-Release: 49%{?dist}
+Release: 50%{?dist}
 Summary: TCP/IP stack auditing and much more
 
 # Automatically converted from old format: GPLv2 - review is highly recommended.
@@ -15,6 +15,7 @@ Patch3: hping3-cflags.patch
 Patch4: hping3-man.patch
 Patch5: hping3-20051105-typo.patch
 Patch6: hping3-common.patch
+Patch7: hping3-Port-to-TCL-9.patch
 BuildRequires:  gcc
 BuildRequires: libpcap-devel, tcl-devel
 BuildRequires: make
@@ -38,6 +39,7 @@ Since version 3, hping implements scripting capabilties
 %patch -P4 -p0 -b .man
 %patch -P5 -p1
 %patch -P6 -p1 -b .common
+%patch -P7 -p1
 
 %build
 %configure --force-libpcap
@@ -62,6 +64,9 @@ ln -sf hping3 $RPM_BUILD_ROOT%{_sbindir}/hping2
 %{_mandir}/man8/*
 
 %changelog
+* Thu Jul 09 2026 Petr Pisar <ppisar@redhat.com> - 0.0.20051105-50
+- Port to TCL 9 (bug #2337715)
+
 * Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 0.0.20051105-49
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
 

                 reply	other threads:[~2026-07-10 19:57 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178371343456.1.2646521425644245781.rpms-hping3-6970bc514010@fedoraproject.org \
    --to=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox