chiark / gitweb /
changelog: finalise 1.3.5 master
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 23 Dec 2021 13:27:05 +0000 (13:27 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Thu, 23 Dec 2021 13:27:05 +0000 (13:27 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
39 files changed:
.gitignore
Makefile
adns/adns.c
base/Makefile
base/extension.make
crypto/crypto.c
debian/changelog
debian/compat
debian/regenerate-autopkgtests [new file with mode: 0755]
debian/rules
debian/tests/adns--8.5 [new file with mode: 0755]
debian/tests/adns--8.6 [new file with mode: 0755]
debian/tests/adns--8.7 [new file with mode: 0755]
debian/tests/adns--def [new file with mode: 0755]
debian/tests/cdb--8.5 [new file with mode: 0755]
debian/tests/cdb--8.6 [new file with mode: 0755]
debian/tests/cdb--8.7 [new file with mode: 0755]
debian/tests/cdb--def [new file with mode: 0755]
debian/tests/control [new file with mode: 0644]
debian/tests/crypto--8.5 [new file with mode: 0755]
debian/tests/crypto--8.6 [new file with mode: 0755]
debian/tests/crypto--8.7 [new file with mode: 0755]
debian/tests/crypto--def [new file with mode: 0755]
debian/tests/dgram--8.5 [new file with mode: 0755]
debian/tests/dgram--8.6 [new file with mode: 0755]
debian/tests/dgram--8.7 [new file with mode: 0755]
debian/tests/dgram--def [new file with mode: 0755]
debian/tests/hbytes--8.5 [new file with mode: 0755]
debian/tests/hbytes--8.6 [new file with mode: 0755]
debian/tests/hbytes--8.7 [new file with mode: 0755]
debian/tests/hbytes--def [new file with mode: 0755]
debian/tests/tuntap--8.5 [new file with mode: 0755]
debian/tests/tuntap--8.6 [new file with mode: 0755]
debian/tests/tuntap--8.7 [new file with mode: 0755]
debian/tests/tuntap--def [new file with mode: 0755]
dgram/dgram.c
dgram/dgram.tct
dgram/runtest.tcl [new file with mode: 0644]
hbytes/hbytes.h

index 29e8596ba844eede1106564e3469878fd69e2895..99ee608d3cfd78d16b5be18a1b36bdc604777b14 100644 (file)
@@ -2,7 +2,8 @@
 *.o
 *.so
 *.d
-*.test.tcl
+test-load.tcl
+debian-substvars
 *+tcmdif.[ch]
 debian/files
 debian/libtcl-chiark-1
index 74fc544ad13fa7a8feb90bf7288f6ff5b7803427..77e9e48b1116be7fc79f2a7e63d6c929ecaf3021 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -11,7 +11,7 @@ endif
 
 default: all
 
-clean all:
+clean all debian-substvars:
        set -e; for d in $(SUBDIRS); do $(MAKE) -C $$d $@; done
 
 # To find undefined symbols when implementing, for example:
index 7dde69cfc2782b1ff039160c1e827ef49f130bd6..d0ee2955b94e09e26c36acde087faf81212173fd 100644 (file)
@@ -494,7 +494,7 @@ static int query_submit(Tcl_Interp *ip,
   
   if (op.reverseany || (op.sflags & oisf_reverse)) {
     const int *af;
-    for (af=aftry; af < af + sizeof(af)/sizeof(*af); af++) {
+    for (af=aftry; af < af + sizeof(aftry)/sizeof(*aftry); af++) {
       memset(&sa,0,sizeof(sa));
       sa.sa_family= *af;
       r= inet_pton(*af,domain,&sa);
index 1bbfd21c82ec28d35a30384cf706995484a2d0b6..30c4f8faa43516139367dba10ba1092f97c5c6fd 100644 (file)
@@ -28,5 +28,7 @@ SHLIB =               $(BASE_SHLIB)
 base+tcmdif.h: $(BASE_TCT) $(TCMDIFGEN)
                $(TCMDIFGEN) -wh -o$@ $<
 
+debian-substvars: all
+
 include shlib.make
 include final.make
index 0d63e4fc80f1b71cb40633b7cdb39fbb5e78b064..80239921c95053cd35337566800680ce6d48dcef 100644 (file)
@@ -41,18 +41,22 @@ TCMDIFARGS ?=       -p$(FAMILY)_$(EXTBASE) -o$@ $(BASE_TCT) $(OTHER_TCTS) $<
 %+tcmdif.h:    %.tct $(BASE_TCT) $(OTHER_TCTS) $(TCMDIFGEN)
                $(TCMDIFGEN) -wh $(TCMDIFARGS)
 
-OTHER_DIRS +=  ../base/
+OTHER_DIRS +=  $(BASE_DIR)
 OTHER_DIRS +=  $(addprefix ../,$(dir $(OTHER_EXTS)))
 OTHER_DIRS +=  .
 
 null :=
 space := $(null) #
 
-$(SHLIB).test.tcl:
+test-load.tcl:
                echo >$@ "load $(SHLIB).so"
 
-test-load:     $(SHLIB).so $(SHLIB).test.tcl
+test-load:     $(SHLIB).so test-load.tcl
                @set -x; LD_LIBRARY_PATH=$(subst $(space),:,$(strip $(OTHER_DIRS)))$${LD_LIBRARY_PATH+:}$${LD_LIBRARY_PATH} \
-               tclsh$(TCL_VERSION) $(SHLIB).test.tcl
+               tclsh$(TCL_VERSION) test-load.tcl
+
+debian-substvars: all
+               set -e; d=`pwd`; cd ..; \
+               dpkg-shlibdeps -T"$$d"/$@ "$$d"/$(SHLIB).so
 
 include                $(BASE_DIR)/final.make
index aee2556de1fcde705642944110a78a5bdd6cd1de..6efea24f325ce5b7079087e5b64082b33c32ce39 100644 (file)
@@ -252,6 +252,14 @@ static int blockcipher_prep(Tcl_Interp *ip, Tcl_Obj *key_obj,
   int rc;
   CiphKeyValue *key;
 
+  /* placate gcc, see Debian #968734 */
+  *key_r= 0;
+  *sched_r= 0;
+  *iv_r= 0;
+  *iv_lenbytes_r= 0;
+  *buffers_r= 0;
+  *nblocks_r= 0;
+
   if (data_len % alg->blocksize)
     return cht_staticerr(ip, "block cipher input not whole number of blocks",
                     "HBYTES BLOCKCIPHER LENGTH");
index 4dff38ab936ef820cc2cdac3024e36d46a6316c3..70097b77143ef6596d16e0e2d2eda6aeb945ec75 100644 (file)
@@ -1,10 +1,57 @@
-chiark-tcl (1.2.2~) unstable; urgency=medium
+chiark-tcl (1.3.5) unstable; urgency=medium
+
+  * blockcipher_prep: Initialise parameters to placate gcc.  Closes:#968734.
+  * debhelper: bump compat to 12.  Closes:#965452.
+
+ -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Thu, 23 Dec 2021 13:26:53 +0000
+
+chiark-tcl (1.3.4) unstable; urgency=medium
+
+  * debian/tests/control: Update to libnettle8.  Fixes DEP-8 failure.
+    (Reran debian/rules debian/tests/control.)
+
+ -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Mon, 17 Aug 2020 18:09:07 +0100
+
+chiark-tcl (1.3.3) unstable; urgency=medium
+
+  * hbytes.h: Add a missing `extern' on a data declaration.
+    Fixes GCC-10 FTBFS.  Closes:957087.
+
+ -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Mon, 17 Aug 2020 14:03:47 +0100
+
+chiark-tcl (1.3.2) unstable; urgency=medium
+
+  * changelog: start 1.3.2
+  * testing: Add skip-not-installable restriction to vsn-specific tests
+  * testing: Add tcl 8.7 to list of versions for testing
+
+ -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Sun, 14 Oct 2018 01:33:49 +0100
+
+chiark-tcl (1.3.1) unstable; urgency=medium
+
+  * autopkgtests: Drop tcl8.7 which is only in experimental now.
+
+ -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Sun, 19 Aug 2018 12:16:24 +0100
+
+chiark-tcl (1.3.0) unstable; urgency=medium
+
+  adns:
+  * Fix IPv6 PTR (reverse) lookups, and compilation with GCC-8.
+    Closes:#891544.
+
+  dgram:
+  * Provide `dgram-socket sockname S'.  Closes:#865451.
 
   tcmdifgen:
   * Turn on warnings and `use strict' and fix everything.
   * Replace deprecated `use IO;' with `use IO::File'.
 
- --
+  Makefiles and build system:
+  * Provide autopkgtests.
+  * Refer to $(BASE_DIR) rather than ../base/, making out-of-tree
+    extentions a bit easier.
+
+ -- Ian Jackson <ijackson@chiark.greenend.org.uk>  Sun, 19 Aug 2018 00:21:18 +0100
 
 chiark-tcl (1.2.1) unstable; urgency=high
 
index 7ed6ff82de6bcc2a78243fc9c54d3ef5ac14da69..48082f72f087ce7e6fa75b9c41d7387daecd447b 100644 (file)
@@ -1 +1 @@
-5
+12
diff --git a/debian/regenerate-autopkgtests b/debian/regenerate-autopkgtests
new file mode 100755 (executable)
index 0000000..dc465c3
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/bash
+set -e
+
+dt=debian/tests
+
+rm -rf $dt
+mkdir -p $dt
+
+exec 4>$dt/control.new
+
+for sv in */debian-substvars; do
+       d=${sv%/*}
+       if ! test -e "$sv"; then continue; fi
+       make -C "$d" test-load.tcl
+       printf "%s..." $d
+       for v in '' "$@"; do
+               vv=${v:-def}
+               t=$d--$vv
+               printf " %s" $vv
+               exec 3>$dt/$t
+               echo >&3 "#!/usr/bin/tclsh$v"
+               cat >&3 "$d"/test-load.tcl
+               echo >&3 'set t {'"$d"'/runtest.tcl}'
+               echo >&3 'if {[file exists $t]} { source $t }'
+               chmod +x $dt/$t
+               echo >&4 "Tests: $t"
+               sed "s/^shlibs:Depends=/Depends: tcl$v, /" >&4 $sv
+               case $v in
+               '')     ;;
+               ?*)     echo >&4 'Restrictions: skip-not-installable' ;;
+               esac
+               echo >&4
+       done
+       echo
+done
+
+mv $dt/control.new $dt/control
index 3675728eee9fcb4459de8b2e73df4b19a7bd9e8d..f065f68d4fb414ce649dab7becf63a018650d15e 100755 (executable)
@@ -26,6 +26,8 @@ docdir=usr/share/doc/$(docpackage)
 tclh:=$(firstword $(wildcard /usr/include/tcl8.*/tcl.h))
 tclversion:=$(patsubst /usr/include/tcl%/tcl.h,%,$(tclh))
 
+tcl_versions= 8.5 8.6 8.7
+
 march := $(shell dpkg-architecture -q DEB_HOST_MULTIARCH)
 libsubdir = /$(march)
 
@@ -104,4 +106,8 @@ checkroot:
        $(checkdir)
        dh_testroot
 
+debian/tests/control: debian/regenerate-autopkgtests debian/rules
+       $(MAKE) debian-substvars
+       $< $(tcl_versions)
+
 .PHONY: binary binary-arch binary-indep clean checkroot
diff --git a/debian/tests/adns--8.5 b/debian/tests/adns--8.5
new file mode 100755 (executable)
index 0000000..5dd2b82
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.5
+load chiark_tcl_adns-1.so
+set t {adns/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/adns--8.6 b/debian/tests/adns--8.6
new file mode 100755 (executable)
index 0000000..773e4bd
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.6
+load chiark_tcl_adns-1.so
+set t {adns/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/adns--8.7 b/debian/tests/adns--8.7
new file mode 100755 (executable)
index 0000000..b830354
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.7
+load chiark_tcl_adns-1.so
+set t {adns/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/adns--def b/debian/tests/adns--def
new file mode 100755 (executable)
index 0000000..c18bb01
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh
+load chiark_tcl_adns-1.so
+set t {adns/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/cdb--8.5 b/debian/tests/cdb--8.5
new file mode 100755 (executable)
index 0000000..1cc0b8c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.5
+load chiark_tcl_cdb-1.so
+set t {cdb/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/cdb--8.6 b/debian/tests/cdb--8.6
new file mode 100755 (executable)
index 0000000..44c52aa
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.6
+load chiark_tcl_cdb-1.so
+set t {cdb/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/cdb--8.7 b/debian/tests/cdb--8.7
new file mode 100755 (executable)
index 0000000..7ea7195
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.7
+load chiark_tcl_cdb-1.so
+set t {cdb/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/cdb--def b/debian/tests/cdb--def
new file mode 100755 (executable)
index 0000000..46fb5e8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh
+load chiark_tcl_cdb-1.so
+set t {cdb/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644 (file)
index 0000000..a075529
--- /dev/null
@@ -0,0 +1,90 @@
+Tests: adns--def
+Depends: tcl, libadns1 (>= 1.5.0~), libc6 (>= 2.2.5), libtcl-chiark-1
+
+Tests: adns--8.5
+Depends: tcl8.5, libadns1 (>= 1.5.0~), libc6 (>= 2.2.5), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: adns--8.6
+Depends: tcl8.6, libadns1 (>= 1.5.0~), libc6 (>= 2.2.5), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: adns--8.7
+Depends: tcl8.7, libadns1 (>= 1.5.0~), libc6 (>= 2.2.5), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: cdb--def
+Depends: tcl, libc6 (>= 2.14), libcdb1, libtcl-chiark-1
+
+Tests: cdb--8.5
+Depends: tcl8.5, libc6 (>= 2.14), libcdb1, libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: cdb--8.6
+Depends: tcl8.6, libc6 (>= 2.14), libcdb1, libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: cdb--8.7
+Depends: tcl8.7, libc6 (>= 2.14), libcdb1, libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: crypto--def
+Depends: tcl, libc6 (>= 2.14), libnettle8, libtcl-chiark-1
+
+Tests: crypto--8.5
+Depends: tcl8.5, libc6 (>= 2.14), libnettle8, libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: crypto--8.6
+Depends: tcl8.6, libc6 (>= 2.14), libnettle8, libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: crypto--8.7
+Depends: tcl8.7, libc6 (>= 2.14), libnettle8, libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: dgram--def
+Depends: tcl, libc6 (>= 2.14), libtcl-chiark-1
+
+Tests: dgram--8.5
+Depends: tcl8.5, libc6 (>= 2.14), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: dgram--8.6
+Depends: tcl8.6, libc6 (>= 2.14), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: dgram--8.7
+Depends: tcl8.7, libc6 (>= 2.14), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: hbytes--def
+Depends: tcl, libc6 (>= 2.14), libtcl-chiark-1
+
+Tests: hbytes--8.5
+Depends: tcl8.5, libc6 (>= 2.14), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: hbytes--8.6
+Depends: tcl8.6, libc6 (>= 2.14), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: hbytes--8.7
+Depends: tcl8.7, libc6 (>= 2.14), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: tuntap--def
+Depends: tcl, libc6 (>= 2.2.5), libtcl-chiark-1
+
+Tests: tuntap--8.5
+Depends: tcl8.5, libc6 (>= 2.2.5), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: tuntap--8.6
+Depends: tcl8.6, libc6 (>= 2.2.5), libtcl-chiark-1
+Restrictions: skip-not-installable
+
+Tests: tuntap--8.7
+Depends: tcl8.7, libc6 (>= 2.2.5), libtcl-chiark-1
+Restrictions: skip-not-installable
+
diff --git a/debian/tests/crypto--8.5 b/debian/tests/crypto--8.5
new file mode 100755 (executable)
index 0000000..0289eb6
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.5
+load chiark_tcl_crypto-1.so
+set t {crypto/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/crypto--8.6 b/debian/tests/crypto--8.6
new file mode 100755 (executable)
index 0000000..860089a
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.6
+load chiark_tcl_crypto-1.so
+set t {crypto/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/crypto--8.7 b/debian/tests/crypto--8.7
new file mode 100755 (executable)
index 0000000..a9ed1f8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.7
+load chiark_tcl_crypto-1.so
+set t {crypto/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/crypto--def b/debian/tests/crypto--def
new file mode 100755 (executable)
index 0000000..1b14b4f
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh
+load chiark_tcl_crypto-1.so
+set t {crypto/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/dgram--8.5 b/debian/tests/dgram--8.5
new file mode 100755 (executable)
index 0000000..ab23044
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.5
+load chiark_tcl_dgram-1.so
+set t {dgram/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/dgram--8.6 b/debian/tests/dgram--8.6
new file mode 100755 (executable)
index 0000000..cf3f9f8
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.6
+load chiark_tcl_dgram-1.so
+set t {dgram/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/dgram--8.7 b/debian/tests/dgram--8.7
new file mode 100755 (executable)
index 0000000..4f1d375
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.7
+load chiark_tcl_dgram-1.so
+set t {dgram/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/dgram--def b/debian/tests/dgram--def
new file mode 100755 (executable)
index 0000000..874cfd2
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh
+load chiark_tcl_dgram-1.so
+set t {dgram/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/hbytes--8.5 b/debian/tests/hbytes--8.5
new file mode 100755 (executable)
index 0000000..e512858
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.5
+load chiark_tcl_hbytes-1.so
+set t {hbytes/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/hbytes--8.6 b/debian/tests/hbytes--8.6
new file mode 100755 (executable)
index 0000000..5e737e5
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.6
+load chiark_tcl_hbytes-1.so
+set t {hbytes/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/hbytes--8.7 b/debian/tests/hbytes--8.7
new file mode 100755 (executable)
index 0000000..95e5d19
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.7
+load chiark_tcl_hbytes-1.so
+set t {hbytes/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/hbytes--def b/debian/tests/hbytes--def
new file mode 100755 (executable)
index 0000000..c437940
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh
+load chiark_tcl_hbytes-1.so
+set t {hbytes/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/tuntap--8.5 b/debian/tests/tuntap--8.5
new file mode 100755 (executable)
index 0000000..2f03f9c
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.5
+load chiark_tcl_tuntap-1.so
+set t {tuntap/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/tuntap--8.6 b/debian/tests/tuntap--8.6
new file mode 100755 (executable)
index 0000000..b1493c1
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.6
+load chiark_tcl_tuntap-1.so
+set t {tuntap/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/tuntap--8.7 b/debian/tests/tuntap--8.7
new file mode 100755 (executable)
index 0000000..1f58f36
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh8.7
+load chiark_tcl_tuntap-1.so
+set t {tuntap/runtest.tcl}
+if {[file exists $t]} { source $t }
diff --git a/debian/tests/tuntap--def b/debian/tests/tuntap--def
new file mode 100755 (executable)
index 0000000..58c5244
--- /dev/null
@@ -0,0 +1,4 @@
+#!/usr/bin/tclsh
+load chiark_tcl_tuntap-1.so
+set t {tuntap/runtest.tcl}
+if {[file exists $t]} { source $t }
index 24c5446c0b1625528f98fbb5ce4dceb664845f28..5ffe91ff5ae584ee17424c05e787f96b8540824a 100644 (file)
@@ -134,6 +134,18 @@ x_rc:
     Tcl_BackgroundError(ip);
 }
 
+int cht_do_dgramsocket_sockname(ClientData cd, Tcl_Interp *ip,
+                               void *sock_v, SockAddr_Value *result) {
+  DgramSocket *sock= sock_v;
+  int r;
+
+  socklen_t salen = sock->addr_buflen;
+  r= getsockname(sock->fd, sock->addr_buf, &salen);
+  if (r) return cht_posixerr(ip,errno,"getsockname");
+  cht_sockaddr_create(result, sock->addr_buf, salen);
+  return TCL_OK;
+}
+
 int cht_do_dgramsocket_on_receive(ClientData cd, Tcl_Interp *ip,
                               void *sock_v, Tcl_Obj *newscript) {
   DgramSocket *sock= sock_v;
index 119e3542675ffc2fe029f1ae6c846a3a49a3f160..938d0a3bf9a8f3f67a5dd8530cb92ce66480300e 100644 (file)
@@ -32,6 +32,9 @@ Table dgramsocket DgramSocket_SubCommand
                sock    iddata(&cht_dgram_socks)
                data    hb
                remote  sockaddr
+       sockname
+               sock    iddata(&cht_dgram_socks)
+               =>      sockaddr
        on-receive
                sock    iddata(&cht_dgram_socks)
                ?script obj
diff --git a/dgram/runtest.tcl b/dgram/runtest.tcl
new file mode 100644 (file)
index 0000000..9488d96
--- /dev/null
@@ -0,0 +1,2 @@
+set d [dgram-socket create *,*]
+dgram-socket sockname $d
index 0ed871c8f3d20a1e3ef9b64586fc4c878304d57e..2e5d658914c0286265fed4de858c7ee72e325ff7 100644 (file)
@@ -248,7 +248,7 @@ extern Tcl_ObjType cht_addrmap_type;
 
 /* from ulong.c */
 
-Tcl_ObjType cht_ulong_type;
+extern Tcl_ObjType cht_ulong_type;
 
 /* useful macros */