diff -Nru anet-0.4.1/anet_common.gpr anet-0.4.2/anet_common.gpr --- anet-0.4.1/anet_common.gpr 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/anet_common.gpr 2019-10-30 14:36:44.000000000 +0000 @@ -41,7 +41,6 @@ Compiler_Switches := ("-gnatygAdISuxo", "-gnatVa", - "-gnat05", "-gnatf", "-fstack-check", "-gnato", diff -Nru anet-0.4.1/debian/changelog anet-0.4.2/debian/changelog --- anet-0.4.1/debian/changelog 2018-10-27 13:09:39.000000000 +0000 +++ anet-0.4.2/debian/changelog 2020-02-25 13:48:31.000000000 +0000 @@ -1,3 +1,25 @@ +anet (0.4.2-2) unstable; urgency=medium + + * Reupload to unstable for gnat-9 transition. + * Standards-Version 4.5.0. + + -- Nicolas Boulenguez Tue, 25 Feb 2020 14:48:31 +0100 + +anet (0.4.2-1) experimental; urgency=medium + + * New upstream release, built with gcc-9. + Rename -dev and lib packages accordingly. + * Debhelper 12 does not compress examples anymore. + * Adapt to asciidoctor doc build. Closes: #894194. + * Standards-Version: 4.4.1. + * Repackage and format documentation without special fonts + (partially cherry-picked upstream). + * Enable all linker warnings. + * Update AUTOPKGTEST_TMP variable name. + * Update upstream signing key. + + -- Nicolas Boulenguez Thu, 21 Nov 2019 17:17:40 +0100 + anet (0.4.1-2) unstable; urgency=medium * Rebuild in unstable for gnat-8 transition. diff -Nru anet-0.4.1/debian/compat anet-0.4.2/debian/compat --- anet-0.4.1/debian/compat 2018-08-09 13:26:07.000000000 +0000 +++ anet-0.4.2/debian/compat 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -11 diff -Nru anet-0.4.1/debian/control anet-0.4.2/debian/control --- anet-0.4.1/debian/control 2018-08-09 13:26:07.000000000 +0000 +++ anet-0.4.2/debian/control 2020-02-25 13:48:31.000000000 +0000 @@ -4,20 +4,22 @@ Maintainer: Reto Buerki Uploaders: Adrian-Ken Rueegsegger , Nicolas Boulenguez -Build-Depends: asciidoc, debhelper (>= 11), - gnat, gnat-8, -# This line is parsed by debian/rules. +Build-Depends: + asciidoctor, + debhelper-compat (= 12), dh-ada-library, + gnat, gnat-9, +# This line is parsed by debian/rules. gprbuild, - libahven7-dev, - source-highlight -Standards-Version: 4.1.5 + libahven8-dev, + ruby-pygments.rb, +Standards-Version: 4.5.0 Rules-Requires-Root: no Homepage: https://www.codelabs.ch/anet/ Vcs-Browser: https://git.codelabs.ch/?p=anet.git Vcs-Git: https://git.codelabs.ch/git/anet.git -b debian -Package: libanet0.4.1 +Package: libanet0.4.2 Architecture: any Multi-Arch: same Depends: ${shlibs:Depends}, ${misc:Depends} @@ -26,7 +28,7 @@ provides a BSD socket implementation with a high level of abstraction and an extendable socket type hierarchy. -Package: libanet3-dev +Package: libanet4-dev # This line is parsed by debian/rules. Section: libdevel Architecture: any diff -Nru anet-0.4.1/debian/copyright anet-0.4.2/debian/copyright --- anet-0.4.1/debian/copyright 2018-08-09 13:26:07.000000000 +0000 +++ anet-0.4.2/debian/copyright 2020-01-03 19:21:51.000000000 +0000 @@ -4,14 +4,29 @@ Reto Buerki Adrian-Ken Rueegsegger Source: https://www.codelabs.ch/download/ +# Make the source ten times smaller and remove various licenses. +Files-Excluded: + doc/css/font-awesome.css + doc/fonts Files: * Copyright: - (C) 2011-2018 secunet Security Networks AG - (C) 2011-2018 Reto Buerki - (C) 2011-2018 Adrian-Ken Rueegsegger + (C) 2011-2019 secunet Security Networks AG + (C) 2011-2019 Reto Buerki + (C) 2011-2019 Adrian-Ken Rueegsegger (C) 2016 Stefan Berghofer License: GPL-2+ with Ada exception + +Files: debian/* +Copyright: + (C) 2011-2019 secunet Security Networks AG + (C) 2011-2019 Reto Buerki + (C) 2011-2019 Adrian-Ken Rueegsegger + (C) 2018-2019 Nicolas Boulenguez + (C) 2016 Stefan Berghofer +License: GPL-2+ with Ada exception + +License: GPL-2+ with Ada exception This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 diff -Nru anet-0.4.1/debian/patches/0001-Disable-socket-tests.patch anet-0.4.2/debian/patches/0001-Disable-socket-tests.patch --- anet-0.4.1/debian/patches/0001-Disable-socket-tests.patch 2018-08-09 13:26:07.000000000 +0000 +++ anet-0.4.2/debian/patches/0001-Disable-socket-tests.patch 2020-02-25 13:48:31.000000000 +0000 @@ -11,11 +11,9 @@ tests/common_tests.adb | 6 ------ 1 file changed, 6 deletions(-) -diff --git a/tests/common_tests.adb b/tests/common_tests.adb -index 73715c4..11526d2 100644 --- a/tests/common_tests.adb +++ b/tests/common_tests.adb -@@ -27,8 +27,6 @@ with Ahven.Text_Runner; +@@ -27,8 +27,6 @@ with Type_Tests; with OS_Tests; with Util_Tests; @@ -24,14 +22,14 @@ with ARP_Tests; with UDP_Tests; with IP_Tests; -@@ -52,10 +50,6 @@ package body Common_Tests is - T => new OS_Tests.Testcase); +@@ -53,10 +51,6 @@ Add_Test (Suite => Suite.all, T => new Util_Tests.Testcase); -- Add_Test (Suite => Suite.all, + Add_Test (Suite => Suite.all, - T => new Socket_Tests.IP.Testcase); - Add_Test (Suite => Suite.all, - T => new Socket_Tests.Unix.Testcase); - Add_Test (Suite => Suite.all, +- Add_Test (Suite => Suite.all, T => new ARP_Tests.Testcase); Add_Test (Suite => Suite.all, + T => new UDP_Tests.Testcase); diff -Nru anet-0.4.1/debian/patches/doc-no-fonts.diff anet-0.4.2/debian/patches/doc-no-fonts.diff --- anet-0.4.1/debian/patches/doc-no-fonts.diff 1970-01-01 00:00:00.000000000 +0000 +++ anet-0.4.2/debian/patches/doc-no-fonts.diff 2020-01-03 19:26:56.000000000 +0000 @@ -0,0 +1,20 @@ +Description: local documentation does not need fancy fonts +Forwarded: not-needed +Author: Nicolas Boulenguez + +--- a/doc/Makefile ++++ b/doc/Makefile +@@ -2,13 +2,9 @@ + + all: $(DESTDIR)/index.html + +-$(DESTDIR)/index.html: $(DESTDIR)/fonts + $(DESTDIR)/index.html: index ../README css/styles.css | $(DESTDIR) + asciidoctor $< -o $@ + +-$(DESTDIR)/fonts: fonts | $(DESTDIR) +- cp -R $< $@ +- + $(DESTDIR): + mkdir $@ + diff -Nru anet-0.4.1/debian/patches/get-rid-of-awesome.diff anet-0.4.2/debian/patches/get-rid-of-awesome.diff --- anet-0.4.1/debian/patches/get-rid-of-awesome.diff 1970-01-01 00:00:00.000000000 +0000 +++ anet-0.4.2/debian/patches/get-rid-of-awesome.diff 2020-01-03 19:26:56.000000000 +0000 @@ -0,0 +1,32 @@ +Description: get rid of font-awesome +Origin: upstream commit:b182291b7da92e1f1d32ce406be086a1307e4aa0 + +Not required for now. + +--- a/doc/Makefile ++++ b/doc/Makefile +@@ -2,14 +2,10 @@ + + all: $(DESTDIR)/index.html + +-$(DESTDIR)/index.html: $(DESTDIR)/fonts $(DESTDIR)/css/font-awesome.css ++$(DESTDIR)/index.html: $(DESTDIR)/fonts + $(DESTDIR)/index.html: index ../README css/styles.css | $(DESTDIR) + asciidoctor $< -o $@ + +-$(DESTDIR)/css/font-awesome.css: css/font-awesome.css | $(DESTDIR) +- mkdir -p $(DESTDIR)/css +- cp $< $@ +- + $(DESTDIR)/fonts: fonts | $(DESTDIR) + cp -R $< $@ + +--- a/doc/index ++++ b/doc/index +@@ -1,6 +1,4 @@ + :description: Ada Networking Library +-:iconfont-remote!: +-:icons: font + :sectanchors: + :source-highlighter: pygments + :stylesdir: css diff -Nru anet-0.4.1/debian/patches/series anet-0.4.2/debian/patches/series --- anet-0.4.1/debian/patches/series 2018-08-09 13:26:07.000000000 +0000 +++ anet-0.4.2/debian/patches/series 2020-02-25 13:48:31.000000000 +0000 @@ -1 +1,4 @@ 0001-Disable-socket-tests.patch +simplify-doc-makefile.diff +get-rid-of-awesome.diff +doc-no-fonts.diff diff -Nru anet-0.4.1/debian/patches/simplify-doc-makefile.diff anet-0.4.2/debian/patches/simplify-doc-makefile.diff --- anet-0.4.1/debian/patches/simplify-doc-makefile.diff 1970-01-01 00:00:00.000000000 +0000 +++ anet-0.4.2/debian/patches/simplify-doc-makefile.diff 2020-01-03 19:26:56.000000000 +0000 @@ -0,0 +1,58 @@ +Description: Simplify build of documentation +Origin: upstream commit:b182291b7da92e1f1d32ce406be086a1307e4aa0 + +- Create DESTDIR using order-only prereq +- Show 'mkdir' and 'rm' commands in the log +- Move asciidoctor attributes to source +- Stop setting TZ=UTC (asciidoctor now deals with SOURCE_DATE_EPOCH) + +--- a/doc/Makefile ++++ b/doc/Makefile +@@ -1,26 +1,20 @@ + DESTDIR ?= html +-PREPARE := $(shell mkdir -p $(DESTDIR)) +- +-ASCIIDOC_OPTS = \ +- -a icons=font \ +- -a iconfont-remote! \ +- -a stylesdir=css \ +- -a stylesheet=styles.css \ +- -a sectanchors \ +- -o - + + all: $(DESTDIR)/index.html + + $(DESTDIR)/index.html: $(DESTDIR)/fonts $(DESTDIR)/css/font-awesome.css +-$(DESTDIR)/index.html: index ../README css/styles.css +- TZ=UTC asciidoctor $(ASCIIDOC_OPTS) $< > $@ ++$(DESTDIR)/index.html: index ../README css/styles.css | $(DESTDIR) ++ asciidoctor $< -o $@ + +-$(DESTDIR)/css/font-awesome.css: css/font-awesome.css ++$(DESTDIR)/css/font-awesome.css: css/font-awesome.css | $(DESTDIR) + mkdir -p $(DESTDIR)/css + cp $< $@ + +-$(DESTDIR)/fonts: fonts ++$(DESTDIR)/fonts: fonts | $(DESTDIR) + cp -R $< $@ + ++$(DESTDIR): ++ mkdir $@ ++ + clean: +- @rm -rf $(DESTDIR) ++ rm -rf $(DESTDIR) +--- a/doc/index ++++ b/doc/index +@@ -1,5 +1,10 @@ + :description: Ada Networking Library ++:iconfont-remote!: ++:icons: font ++:sectanchors: + :source-highlighter: pygments ++:stylesdir: css ++:stylesheet: styles.css + + include::../README[] + diff -Nru anet-0.4.1/debian/rules anet-0.4.2/debian/rules --- anet-0.4.1/debian/rules 2018-08-09 13:26:07.000000000 +0000 +++ anet-0.4.2/debian/rules 2020-02-25 13:48:31.000000000 +0000 @@ -6,6 +6,8 @@ ' debian/control),$(eval $(line))) DEB_BUILD_MAINT_OPTIONS := hardening=+all +DEB_LDFLAGS_MAINT_APPEND := -Wl,--no-undefined \ + -Wl,--no-copy-dt-needed-entries -Wl,--no-allow-shlib-undefined include /usr/share/dpkg/architecture.mk include /usr/share/dpkg/buildflags.mk include /usr/share/ada/debian_packaging-$(gnat_version).mk @@ -54,10 +56,6 @@ dh_installexamples -p$(dev_pkg) examples/* dh_installexamples --remaining-packages -.PHONY: override_dh_compress -override_dh_compress: - dh_compress -X.ads -X.adb -XMakefile - .PHONY: override_dh_clean override_dh_clean: dh_clean debian/$(dev_pkg).doc-base diff -Nru anet-0.4.1/debian/template_libanet-dev.doc-base anet-0.4.2/debian/template_libanet-dev.doc-base --- anet-0.4.1/debian/template_libanet-dev.doc-base 2018-08-09 13:26:07.000000000 +0000 +++ anet-0.4.2/debian/template_libanet-dev.doc-base 2020-01-03 19:18:46.000000000 +0000 @@ -8,4 +8,4 @@ Format: HTML Index: /usr/share/doc/@dev_pkg@/index.html -Files: /usr/share/doc/@dev_pkg@/asciidoc.css +Files: /usr/share/doc/@dev_pkg@/index.html diff -Nru anet-0.4.1/debian/tests/link-with-shared anet-0.4.2/debian/tests/link-with-shared --- anet-0.4.1/debian/tests/link-with-shared 2018-08-09 13:26:07.000000000 +0000 +++ anet-0.4.2/debian/tests/link-with-shared 2020-01-03 19:17:30.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/sh set -C -e -f -u -cd "$ADTTMP" +cd "$AUTOPKGTEST_TMP" cat > p.gpr < p { - margin-top: 0; -} -ul > li { color: #aaa; } -ul > li > * { color: black; } - -pre { - padding: 0; - margin: 0; -} - -#author { - color: #527bbd; - font-weight: bold; - font-size: 1.1em; -} -#email { -} -#revnumber, #revdate, #revremark { -} - -#footer { - font-size: x-small; - margin-bottom: 4.0em; -} -#footer-text { - background-color: #666262; - color: #f1f1f1; - float: right; - padding-bottom: 0.5em; - margin-right: 4px; -} -#footer-badges { - float: right; - padding-bottom: 0.5em; -} - -#preamble { - margin-top: 1.5em; - margin-bottom: 1.5em; -} -div.imageblock, div.exampleblock, div.verseblock, -div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock, -div.admonitionblock { - margin-top: 1.0em; - margin-bottom: 1.5em; -} -div.admonitionblock { - margin-top: 2.0em; - margin-bottom: 2.0em; - margin-right: 10%; - color: #606060; -} - -div.content { /* Block element content. */ - padding: 0; -} - -/* Block element titles. */ -div.title, caption.title { - color: #527bbd; - font-weight: bold; - text-align: left; - margin-top: 1.0em; - margin-bottom: 0.5em; -} -div.title + * { - margin-top: 0; -} - -td div.title:first-child { - margin-top: 0.0em; -} -div.content div.title:first-child { - margin-top: 0.0em; -} -div.content + div.title { - margin-top: 0.0em; -} - -div.sidebarblock > div.content { - background: #ffffee; - border: 1px solid #dddddd; - border-left: 4px solid #f0f0f0; - padding: 0.5em; -} - -div.listingblock > div.content { - border: 1px solid #dddddd; - border-left: 5px solid #f0f0f0; - background: #f8f8f8; - padding: 0.5em; -} - -div.quoteblock, div.verseblock { - padding-left: 1.0em; - margin-left: 1.0em; - margin-right: 10%; - border-left: 5px solid #f0f0f0; - color: #888; -} - -div.quoteblock > div.attribution { - padding-top: 0.5em; - text-align: right; -} - -div.verseblock > pre.content { - font-family: inherit; - font-size: inherit; -} -div.verseblock > div.attribution { - padding-top: 0.75em; - text-align: left; -} - -div.admonitionblock .icon { - vertical-align: top; - font-size: 1.1em; - font-weight: bold; - text-decoration: underline; - color: #527bbd; - padding-right: 0.5em; -} -div.admonitionblock td.content { - padding-left: 0.5em; - border-left: 3px solid #dddddd; -} - -div.exampleblock > div.content { - border-left: 3px solid #dddddd; - padding-left: 0.5em; -} - -div.imageblock div.content { padding-left: 0; } -span.image img { border-style: none; } - -dl { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -dt { - margin-top: 0.5em; - margin-bottom: 0; - font-style: normal; - color: gray; -} -dd > *:first-child { - margin-top: 0.1em; -} - -ul, ol { - list-style-position: outside; -} -ol.arabic { - list-style-type: decimal; -} -ol.loweralpha { - list-style-type: lower-alpha; -} -ol.upperalpha { - list-style-type: upper-alpha; -} -ol.lowerroman { - list-style-type: lower-roman; -} -ol.upperroman { - list-style-type: upper-roman; -} - -div.compact ul, div.compact ol, -div.compact p, div.compact p, -div.compact div, div.compact div { - margin-top: 0.1em; - margin-bottom: 0.1em; -} - -tfoot { - font-weight: bold; -} -td > div.verse { - white-space: pre; -} - -div.hdlist { - margin-top: 0.8em; - margin-bottom: 0.8em; -} -div.hdlist tr { - padding-bottom: 15px; -} -dt.hdlist1.strong, td.hdlist1.strong { - font-weight: bold; -} -td.hdlist1 { - vertical-align: top; - font-style: normal; - padding-right: 0.8em; - color: gray; -} -td.hdlist2 { - vertical-align: top; -} -div.hdlist.compact tr { - margin: 0; - padding-bottom: 0; -} - -.comment { - background: yellow; -} - -.footnote, .footnoteref { - font-size: 0.8em; -} - -span.footnote, span.footnoteref { - vertical-align: super; -} - -#footnotes { - margin: 20px 0 20px 0; - padding: 7px 0 0 0; -} - -#footnotes div.footnote { - margin: 0 0 5px 0; -} - -#footnotes hr { - border: none; - border-top: 1px solid silver; - height: 1px; - text-align: left; - margin-left: 0; - width: 20%; - min-width: 100px; -} - -div.colist td { - padding-right: 0.5em; - padding-bottom: 0.3em; - vertical-align: top; -} -div.colist td img { - margin-top: 0.3em; -} - -@media print { - #footer-badges { display: none; } -} - -#toc { - margin-bottom: 2.5em; -} - -#toctitle { - color: #527bbd; - font-size: 1.1em; - font-weight: bold; - margin-top: 1.0em; - margin-bottom: 0.1em; -} - -div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 { - margin-top: 0; - margin-bottom: 0; -} -div.toclevel2 { - margin-left: 2em; - font-size: 0.9em; -} -div.toclevel3 { - margin-left: 4em; - font-size: 0.9em; -} -div.toclevel4 { - margin-left: 6em; - font-size: 0.9em; -} - -span.big { font-size: 2em; } -span.small { font-size: 0.6em; } - -span.underline { text-decoration: underline; } -span.overline { text-decoration: overline; } -span.line-through { text-decoration: line-through; } - - -/* - * xhtml11 specific - * - * */ - -tt { - font-family: monospace; - font-size: inherit; - color: gray; -} - -div.tableblock { - margin-top: 1.0em; - margin-bottom: 1.5em; -} -div.tableblock > table { - border: 3px solid #527bbd; -} -thead, p.table.header { - font-weight: bold; - color: #527bbd; -} -p.table { - margin-top: 0; -} -/* Because the table frame attribute is overriden by CSS in most browsers. */ -div.tableblock > table[frame="void"] { - border-style: none; -} -div.tableblock > table[frame="hsides"] { - border-left-style: none; - border-right-style: none; -} -div.tableblock > table[frame="vsides"] { - border-top-style: none; - border-bottom-style: none; -} - - -/* - * html5 specific - * - * */ - -.monospaced { - font-family: monospace; - font-size: inherit; - color: gray; -} - -table.tableblock { - margin-top: 1.0em; - margin-bottom: 1.5em; -} -thead, p.tableblock.header { - font-weight: bold; - color: #527bbd; -} -p.tableblock { - margin-top: 0; -} -table.tableblock { - border-width: 3px; - border-spacing: 0px; - border-style: solid; - border-color: #527bbd; - border-collapse: collapse; -} -th.tableblock, td.tableblock { - border-width: 1px; - padding: 4px; - border-style: solid; - border-color: #527bbd; -} - -table.tableblock.frame-topbot { - border-left-style: hidden; - border-right-style: hidden; -} -table.tableblock.frame-sides { - border-top-style: hidden; - border-bottom-style: hidden; -} -table.tableblock.frame-none { - border-style: hidden; -} - -th.tableblock.halign-left, td.tableblock.halign-left { - text-align: left; -} -th.tableblock.halign-center, td.tableblock.halign-center { - text-align: center; -} -th.tableblock.halign-right, td.tableblock.halign-right { - text-align: right; -} - -th.tableblock.valign-top, td.tableblock.valign-top { - vertical-align: top; -} -th.tableblock.valign-middle, td.tableblock.valign-middle { - vertical-align: middle; -} -th.tableblock.valign-bottom, td.tableblock.valign-bottom { - vertical-align: bottom; -} diff -Nru anet-0.4.1/doc/css/styles.css anet-0.4.2/doc/css/styles.css --- anet-0.4.1/doc/css/styles.css 1970-01-01 00:00:00.000000000 +0000 +++ anet-0.4.2/doc/css/styles.css 2019-10-30 14:36:44.000000000 +0000 @@ -0,0 +1,408 @@ +/* Sligthly modified Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */ +@import "fonts/fonts.css"; +article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block} +audio,canvas,video{display:inline-block} +audio:not([controls]){display:none;height:0} +[hidden],template{display:none} +script{display:none!important} +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} +body{margin:0} +a{background:transparent;word-wrap:break-word} +a:focus{outline:thin dotted} +a:active,a:hover{outline:0} +h1{color:rgba(255,255,255,.8);font-size:2em;margin:.67em 0} +h1:after{font-size:70%;content:"\A Ada Networking Library";white-space:pre} +abbr[title]{border-bottom:1px dotted} +b,strong{font-weight:bold} +dfn{font-style:italic} +hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0} +mark{background:#ff0;color:#000} +code,kbd,pre,samp{font-family:monospace;font-size:1em} +pre{white-space:pre-wrap} +q{quotes:"\201C" "\201D" "\2018" "\2019"} +small{font-size:80%} +sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sup{top:-.5em} +sub{bottom:-.25em} +img{border:0} +svg:not(:root){overflow:hidden} +figure{margin:0} +fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} +legend{border:0;padding:0} +button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} +button,input{line-height:normal} +button,select{text-transform:none} +button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer} +button[disabled],html input[disabled]{cursor:default} +input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0} +input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box} +input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none} +button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} +textarea{overflow:auto;vertical-align:top} +table{border-collapse:collapse;border-spacing:0} +*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box} +html,body{font-size:100%} +body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto} +a:hover{cursor:pointer} +img,object,embed{max-width:100%;height:auto} +object,embed{height:100%} +img{-ms-interpolation-mode:bicubic} +.left{float:left!important} +.right{float:right!important} +.text-left{text-align:left!important} +.text-right{text-align:right!important} +.text-center{text-align:center!important} +.text-justify{text-align:justify!important} +.hide{display:none} +body{-webkit-font-smoothing:antialiased} +img,object,svg{display:inline-block;vertical-align:middle} +textarea{height:auto;min-height:50px} +select{width:100%} +.center{margin-left:auto;margin-right:auto} +.spread{width:100%} +p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{line-height:1.6} +.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} +div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr} +a{color:#2156a5;text-decoration:underline;line-height:inherit} +a:hover,a:focus{color:#1d4b8f} +a img{border:none} +p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} +p aside{font-size:.875em;line-height:1.35;font-style:italic} +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em} +h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0} +h1{font-size:2.125em} +h2{font-size:1.6875em} +h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} +h4,h5{font-size:1.125em} +h6{font-size:1em} +hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0} +em,i{font-style:italic;line-height:inherit} +strong,b{font-weight:bold;line-height:inherit} +small{font-size:60%;line-height:inherit} +code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} +ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} +ul,ol,ul.no-bullet,ol.no-bullet{margin-left:1.5em} +ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em} +ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} +ul.square{list-style-type:square} +ul.circle{list-style-type:circle} +ul.disc{list-style-type:disc} +ul.no-bullet{list-style:none} +ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} +dl dt{margin-bottom:.3125em;font-weight:bold} +dl dd{margin-bottom:1.25em} +abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help} +abbr{text-transform:none} +blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} +blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)} +blockquote cite:before{content:"\2014 \0020"} +blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)} +blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} +@media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} +h1{font-size:2.75em} +h2{font-size:2.3125em} +h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} +h4{font-size:1.4375em}} +table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede} +table thead,table tfoot{background:#f7f8f7;font-weight:bold} +table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} +table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} +table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7} +table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6} +body{tab-size:4} +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} +h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} +.clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table} +.clearfix:after,.float-group:after{clear:both} +*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed} +pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed} +.keyseq{color:rgba(51,51,51,.8)} +kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap} +.keyseq kbd:first-child{margin-left:0} +.keyseq kbd:last-child{margin-right:0} +.menuseq,.menu{color:rgba(0,0,0,.8)} +b.button:before,b.button:after{position:relative;top:-1px;font-weight:400} +b.button:before{content:"[";padding:0 3px 0 2px} +b.button:after{content:"]";padding:0 2px 0 3px} +p a>code:hover{color:rgba(0,0,0,.9)} +#header{text-align:center;width:100%;background-color:rgba(0,0,0,.8);padding:1.25em} +#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em} +#header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table} +#header:after,#content:after,#footnotes:after,#footer:after{clear:both} +#content{margin-top:1.25em} +#content:before{content:none} +#header>h1:first-child{color:rgba(255,255,255,.8);margin-top:2.25rem;margin-bottom:0} +#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8} +#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){padding-bottom:8px} +#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap} +#header .details span:first-child{margin-left:-.125em} +#header .details span.email a{color:rgba(0,0,0,.85)} +#header .details br{display:none} +#header .details br+span:before{content:"\00a0\2013\00a0"} +#header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} +#header .details br+span#revremark:before{content:"\00a0|\00a0"} +#header #revnumber{text-transform:capitalize} +#header #revnumber:after{content:"\00a0"} +#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem} +#toc{border-bottom:1px solid #efefed;padding-bottom:.5em} +#toc>ul{margin-left:.125em} +#toc ul.sectlevel0>li>a{font-style:italic} +#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} +#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} +#toc li{line-height:1.3334;margin-top:.3334em} +#toc a{text-decoration:none} +#toc a:active{text-decoration:underline} +#toctitle{color:#7a2518;font-size:1.2em} +@media only screen and (min-width:768px){#toctitle{font-size:1.375em} +body.toc2{padding-left:15em;padding-right:0} +#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto} +#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em} +#toc.toc2>ul{font-size:.9em;margin-bottom:0} +#toc.toc2 ul ul{margin-left:0;padding-left:1em} +#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} +body.toc2.toc-right{padding-left:0;padding-right:15em} +body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}} +@media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} +#toc.toc2{width:20em} +#toc.toc2 #toctitle{font-size:1.375em} +#toc.toc2>ul{font-size:.95em} +#toc.toc2 ul ul{padding-left:1.25em} +body.toc2.toc-right{padding-left:0;padding-right:20em}} +#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} +#content #toc>:first-child{margin-top:0} +#content #toc>:last-child{margin-bottom:0} +#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em} +#footer-text{color:rgba(255,255,255,.8);line-height:1.44} +.sect1{padding-bottom:.625em} +@media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}} +.sect1+.sect1{border-top:1px solid #efefed} +#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400} +#content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em} +#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible} +#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none} +#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} +.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} +.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic} +table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0} +.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)} +table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit} +.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} +.admonitionblock>table td.icon{text-align:center;width:80px} +.admonitionblock>table td.icon img{max-width:none} +.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} +.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)} +.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} +.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px} +.exampleblock>.content>:first-child{margin-top:0} +.exampleblock>.content>:last-child{margin-bottom:0} +.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} +.sidebarblock>:first-child{margin-top:0} +.sidebarblock>:last-child{margin-bottom:0} +.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} +.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} +.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8} +.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1} +.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em} +.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal} +@media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}} +@media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}} +.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)} +.listingblock pre.highlightjs{padding:0} +.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px} +.listingblock pre.prettyprint{border-width:0} +.listingblock>.content{position:relative} +.listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999} +.listingblock:hover code[data-lang]:before{display:block} +.listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999} +.listingblock.terminal pre .command:not([data-prompt]):before{content:"$"} +table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none} +table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45} +table.pyhltable td.code{padding-left:.75em;padding-right:0} +pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8} +pre.pygments .lineno{display:inline-block;margin-right:.25em} +table.pyhltable .linenodiv{background:none!important;padding-right:0!important} +.quoteblock{margin:0 1em 1.25em 1.5em;display:table} +.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em} +.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} +.quoteblock blockquote{margin:0;padding:0;border:0} +.quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)} +.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} +.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right} +.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)} +.quoteblock .quoteblock blockquote{padding:0 0 0 .75em} +.quoteblock .quoteblock blockquote:before{display:none} +.verseblock{margin:0 1em 1.25em 1em} +.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility} +.verseblock pre strong{font-weight:400} +.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} +.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} +.quoteblock .attribution br,.verseblock .attribution br{display:none} +.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)} +.quoteblock.abstract{margin:0 0 1.25em 0;display:block} +.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0} +.quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none} +table.tableblock{max-width:100%;border-collapse:separate} +table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0} +table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} +table.grid-all th.tableblock,table.grid-all td.tableblock{border-width:0 1px 1px 0} +table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{border-width:1px 1px 0 0} +table.grid-cols th.tableblock,table.grid-cols td.tableblock{border-width:0 1px 0 0} +table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{border-right-width:0} +table.grid-rows th.tableblock,table.grid-rows td.tableblock{border-width:0 0 1px 0} +table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{border-bottom-width:0} +table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{border-width:1px 0 0 0} +table.frame-all{border-width:1px} +table.frame-sides{border-width:0 1px} +table.frame-topbot{border-width:1px 0} +th.halign-left,td.halign-left{text-align:left} +th.halign-right,td.halign-right{text-align:right} +th.halign-center,td.halign-center{text-align:center} +th.valign-top,td.valign-top{vertical-align:top} +th.valign-bottom,td.valign-bottom{vertical-align:bottom} +th.valign-middle,td.valign-middle{vertical-align:middle} +table thead th,table tfoot th{font-weight:bold} +tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7} +tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} +p.tableblock>code:only-child{background:none;padding:0} +p.tableblock{font-size:1em} +td>div.verse{white-space:pre} +ol{margin-left:1.75em} +ul li ol{margin-left:1.5em} +dl dd{margin-left:1.125em} +dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} +ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} +ul.unstyled,ol.unnumbered,ul.checklist,ul.none{list-style-type:none} +ul.unstyled,ol.unnumbered,ul.checklist{margin-left:.625em} +ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1em;font-size:.85em} +ul.checklist li>p:first-child>input[type="checkbox"]:first-child{width:1em;position:relative;top:1px} +ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden} +ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block} +ul.inline>li>*{display:block} +.unstyled dl dt{font-weight:400;font-style:normal} +ol.arabic{list-style-type:decimal} +ol.decimal{list-style-type:decimal-leading-zero} +ol.loweralpha{list-style-type:lower-alpha} +ol.upperalpha{list-style-type:upper-alpha} +ol.lowerroman{list-style-type:lower-roman} +ol.upperroman{list-style-type:upper-roman} +ol.lowergreek{list-style-type:lower-greek} +.hdlist>table,.colist>table{border:0;background:none} +.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} +td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} +td.hdlist1{font-weight:bold;padding-bottom:1.25em} +.literalblock+.colist,.listingblock+.colist{margin-top:-.5em} +.colist>table tr>td:first-of-type{padding:0 .75em;line-height:1} +.colist>table tr>td:last-of-type{padding:.25em 0} +.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd} +.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0} +.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em} +.imageblock>.title{margin-bottom:0} +.imageblock.thumb,.imageblock.th{border-width:6px} +.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} +.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} +.image.left{margin-right:.625em} +.image.right{margin-left:.625em} +a.image{text-decoration:none;display:inline-block} +a.image object{pointer-events:none} +sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super} +sup.footnote a,sup.footnoteref a{text-decoration:none} +sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline} +#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} +#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0} +#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em} +#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none} +#footnotes .footnote:last-of-type{margin-bottom:0} +#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} +.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} +.gist .file-data>table td.line-data{width:99%} +div.unbreakable{page-break-inside:avoid} +.big{font-size:larger} +.small{font-size:smaller} +.underline{text-decoration:underline} +.overline{text-decoration:overline} +.line-through{text-decoration:line-through} +.aqua{color:#00bfbf} +.aqua-background{background-color:#00fafa} +.black{color:#000} +.black-background{background-color:#000} +.blue{color:#0000bf} +.blue-background{background-color:#0000fa} +.fuchsia{color:#bf00bf} +.fuchsia-background{background-color:#fa00fa} +.gray{color:#606060} +.gray-background{background-color:#7d7d7d} +.green{color:#006000} +.green-background{background-color:#007d00} +.lime{color:#00bf00} +.lime-background{background-color:#00fa00} +.maroon{color:#600000} +.maroon-background{background-color:#7d0000} +.navy{color:#000060} +.navy-background{background-color:#00007d} +.olive{color:#606000} +.olive-background{background-color:#7d7d00} +.purple{color:#600060} +.purple-background{background-color:#7d007d} +.red{color:#bf0000} +.red-background{background-color:#fa0000} +.silver{color:#909090} +.silver-background{background-color:#bcbcbc} +.teal{color:#006060} +.teal-background{background-color:#007d7d} +.white{color:#bfbfbf} +.white-background{background-color:#fafafa} +.yellow{color:#bfbf00} +.yellow-background{background-color:#fafa00} +span.icon>.fa{cursor:default} +.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c} +.admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} +.admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900} +.admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400} +.admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000} +.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} +.conum[data-value] *{color:#fff!important} +.conum[data-value]+b{display:none} +.conum[data-value]:after{content:attr(data-value)} +pre .conum[data-value]{position:relative;top:-.125em} +b.conum *{color:inherit!important} +.conum:not([data-value]):empty{display:none} +dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility} +h1,h2,p,td.content,span.alt{letter-spacing:-.01em} +p strong,td.content strong,div.footnote strong{letter-spacing:-.005em} +p,blockquote,dt,td.content,span.alt{font-size:1.0625rem} +p{margin-bottom:1.25rem} +.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} +.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc} +.print-only{display:none!important} +@media print{@page{margin:1.25cm .75cm} +*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important} +a{color:inherit!important;text-decoration:underline!important} +a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} +a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} +abbr[title]:after{content:" (" attr(title) ")"} +pre,blockquote,tr,img,object,svg{page-break-inside:avoid} +thead{display:table-header-group} +svg{max-width:100%} +p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} +h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} +#toc,.sidebarblock,.exampleblock>.content{background:none!important} +#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important} +.sect1{padding-bottom:0!important} +.sect1+.sect1{border:0!important} +#header>h1:first-child{margin-top:1.25rem} +body.book #header{text-align:center} +body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0} +body.book #header .details{border:0!important;display:block;padding:0!important} +body.book #header .details span:first-child{margin-left:0!important} +body.book #header .details br{display:block} +body.book #header .details br+span:before{content:none!important} +body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} +body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} +.listingblock code[data-lang]:before{display:block} +#footer{background:none!important;padding:0 .9375em} +#footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em} +.hide-on-print{display:none!important} +.print-only{display:block!important} +.hide-for-print{display:none!important} +.show-for-print{display:inherit!important}} diff -Nru anet-0.4.1/doc/index anet-0.4.2/doc/index --- anet-0.4.1/doc/index 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/doc/index 2019-10-30 14:36:44.000000000 +0000 @@ -1,3 +1,6 @@ +:description: Ada Networking Library +:source-highlighter: pygments + include::../README[] Example diff -Nru anet-0.4.1/doc/Makefile anet-0.4.2/doc/Makefile --- anet-0.4.1/doc/Makefile 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/doc/Makefile 2019-10-30 14:36:44.000000000 +0000 @@ -1,28 +1,26 @@ -DESTDIR ?= html -STYLEPATH ?= . -PREPARE := $(shell mkdir -p $(DESTDIR)) +DESTDIR ?= html +PREPARE := $(shell mkdir -p $(DESTDIR)) ASCIIDOC_OPTS = \ - --backend=xhtml11 \ - --conf-file=page.conf \ - -a stylesdir=$(STYLEPATH) \ - -a linkcss \ - -a disable-javascript \ + -a icons=font \ + -a iconfont-remote! \ + -a stylesdir=css \ + -a stylesheet=styles.css \ + -a sectanchors \ -o - -all: $(DESTDIR)/asciidoc.css $(DESTDIR)/index.html +all: $(DESTDIR)/index.html -$(DESTDIR)/asciidoc.css: asciidoc.css +$(DESTDIR)/index.html: $(DESTDIR)/fonts $(DESTDIR)/css/font-awesome.css +$(DESTDIR)/index.html: index ../README css/styles.css + TZ=UTC asciidoctor $(ASCIIDOC_OPTS) $< > $@ + +$(DESTDIR)/css/font-awesome.css: css/font-awesome.css + mkdir -p $(DESTDIR)/css cp $< $@ -$(DESTDIR)/index.html: index page.conf ../README - TZ=UTC asciidoc $(ASCIIDOC_OPTS) $< > $@ +$(DESTDIR)/fonts: fonts + cp -R $< $@ clean: - @rm -f $(DESTDIR)/*.html - @rm -f $(DESTDIR)/*.css - -distclean: @rm -rf $(DESTDIR) - -PHONY: clean distclean diff -Nru anet-0.4.1/doc/page.conf anet-0.4.2/doc/page.conf --- anet-0.4.1/doc/page.conf 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/doc/page.conf 1970-01-01 00:00:00.000000000 +0000 @@ -1,637 +0,0 @@ -[miscellaneous] -outfilesuffix=.html - -[attributes] -basebackend=html -basebackend-html= -basebackend-xhtml11= - -[replacements2] -# Line break. -(?m)^(.*)\s\+$=\1
- -[replacements] -ifdef::asciidoc7compatible[] -# Superscripts. -\^(.+?)\^=\1 -# Subscripts. -~(.+?)~=\1 -endif::asciidoc7compatible[] - -[ruler-blockmacro] -
- -[pagebreak-blockmacro] -
- -[blockdef-pass] -asciimath-style=template="asciimathblock",subs=[] -latexmath-style=template="latexmathblock",subs=[] - -[macros] -# math macros. -# Special characters are escaped in HTML math markup. -(?su)[\\]?(?Pasciimath|latexmath):(?P\S*?)\[(?P.*?)(?asciimath|latexmath)::(?P\S*?)(\[(?P.*?)\])$=#[specialcharacters] - -[asciimath-inlinemacro] -`{passtext}` - -[asciimath-blockmacro] -
-
-
{title}
-`{passtext}` -
- -[asciimathblock] -
-
-
{title}
-`|` -
- -[latexmath-inlinemacro] -{passtext} - -[latexmath-blockmacro] -
-
-
{title}
-{passtext} -
- -[latexmathblock] -
-
-
{title}
-| -
- -[image-inlinemacro] - - -{data-uri%}{alt={target}} -{data-uri#}{alt={target}} -{link#} - - -[image-blockmacro] -
- -
{caption={figure-caption} {counter:figure-number}. }{title}
-
- -[unfloat-blockmacro] -
- -[indexterm-inlinemacro] -# Index term. -{empty} - -[indexterm2-inlinemacro] -# Index term. -# Single entry index term that is visible in the primary text flow. -{1} - -[footnote-inlinemacro] -# footnote:[]. -
[{0}]
- -[footnoteref-inlinemacro] -# footnoteref:[], create reference to footnote. -{2%}
[{1}]
-# footnoteref:[,], create footnote with ID. -{2#}
[{2}]
- -[callout-inlinemacro] -ifndef::icons[] -<{index}> -endif::icons[] -ifdef::icons[] -ifndef::data-uri[] -{index} -endif::data-uri[] -ifdef::data-uri[] -{index} -endif::data-uri[] -endif::icons[] - -# Comment line macros. -[comment-inlinemacro] -{showcomments#}
{passtext}
- -[comment-blockmacro] -{showcomments#}

{passtext}

- -[literal-inlinemacro] -# Inline literal. -{passtext} - -# List tags. -[listtags-bulleted] -list=
{title?
{title}
}
    |
-item=
  • |
  • -text=

    |

    - -[listtags-numbered] -# The start attribute is not valid XHTML 1.1 but all browsers support it. -list=
    {title?
    {title}
    }
      |
    -item=
  • |
  • -text=

    |

    - -[listtags-labeled] -list=
    {title?
    {title}
    }
    |
    -entry= -label= -term=
    |
    -item=
    |
    -text=

    |

    - -[listtags-horizontal] -list=
    {title?
    {title}
    }{labelwidth?}{itemwidth?}|
    -label=| -term=|
    -entry=| -item=| -text=

    |

    - -[listtags-qanda] -list=
    {title?
    {title}
    }
      |
    -entry=
  • |
  • -label= -term=

    |

    -item= -text=

    |

    - -[listtags-callout] -ifndef::icons[] -list=
    {title?
    {title}
    }
      |
    -item=
  • |
  • -text=

    |

    -endif::icons[] -ifdef::icons[] -list=
    {title?
    {title}
    }|
    -ifndef::data-uri[] -item={listindex}| -endif::data-uri[] -ifdef::data-uri[] -item={listindex}| -endif::data-uri[] -text=| -endif::icons[] - -[listtags-glossary] -list=
    {title?
    {title}
    }
    |
    -label= -entry= -term=
    |
    -item=
    |
    -text=

    |

    - -[listtags-bibliography] -list=
    {title?
    {title}
    }
      |
    -item=
  • |
  • -text=

    |

    - -[tags] -# Quoted text. -emphasis={1?}|{1?} -strong={1?}|{1?} -monospaced={1?}|{1?} -singlequoted={lsquo}{1?}|{1?}{rsquo} -doublequoted={ldquo}{1?}|{1?}{rdquo} -unquoted={1?}|{1?} -superscript={1?}|{1?} -subscript={1?}|{1?} - -ifdef::deprecated-quotes[] -# Override with deprecated quote attributes. -emphasis={role?}|{role?} -strong={role?}|{role?} -monospaced={role?}|{role?} -singlequoted={role?}{1,2,3?}{amp}#8216;|{amp}#8217;{1,2,3?}{role?} -doublequoted={role?}{1,2,3?}{amp}#8220;|{amp}#8221;{1,2,3?}{role?} -unquoted={role?}{1,2,3?}|{1,2,3?}{role?} -superscript={role?}|{role?} -subscript={role?}|{role?} -endif::deprecated-quotes[] - -# Inline macros -[http-inlinemacro] -{0={name}:{target}} -[https-inlinemacro] -{0={name}:{target}} -[ftp-inlinemacro] -{0={name}:{target}} -[file-inlinemacro] -{0={name}:{target}} -[irc-inlinemacro] -{0={name}:{target}} -[mailto-inlinemacro] -{0={target}} -[link-inlinemacro] -{0={target}} -[callto-inlinemacro] -{0={target}} -# anchor:id[text] -[anchor-inlinemacro] - -# [[id,text]] -[anchor2-inlinemacro] - -# [[[id]]] -[anchor3-inlinemacro] -[{1}] -# xref:id[text] -[xref-inlinemacro] -{0=[{target}]} -# <> -[xref2-inlinemacro] -{2=[{1}]} - -# Special word substitution. -[emphasizedwords] -{words} -[monospacedwords] -{words} -[strongwords] -{words} - -# Paragraph substitution. -[paragraph] -
    {title?
    {title}
    }

    -| -

    - -[admonitionparagraph] -template::[admonitionblock] - -# Delimited blocks. -[listingblock] -
    -
    {caption=}{title}
    -
    -
    
    -|
    -
    -
    - -[literalblock] -
    -
    {title}
    -
    -
    
    -|
    -
    -
    - -[sidebarblock] -
    -
    -
    {title}
    -| -
    - -[openblock] -
    -
    {title}
    -
    -| -
    - -[partintroblock] -template::[openblock] - -[abstractblock] -template::[quoteblock] - -[quoteblock] -
    -
    {title}
    -
    -| -
    -
    -{citetitle}{attribution?
    } -— {attribution} -
    - -[verseblock] -
    -
    {title}
    -
    -|
    -
    -
    -{citetitle}{attribution?
    } -— {attribution} -
    - -[exampleblock] -
    -
    {caption={example-caption} {counter:example-number}. }{title}
    -
    -| -
    - -[admonitionblock] -
    - - - -
    -{data-uri%}{icons#}{caption} -{data-uri#}{icons#}{caption} -{icons%}
    {caption}
    -
    -
    {title}
    -| -
    -
    - -# Tables. -[tabletags-default] -colspec= -bodyrow=| -headdata=| -bodydata=| -paragraph=

    |

    - -[tabletags-header] -paragraph=

    |

    - -[tabletags-emphasis] -paragraph=

    |

    - -[tabletags-strong] -paragraph=

    |

    - -[tabletags-monospaced] -paragraph=

    |

    - -[tabletags-verse] -bodydata=
    |
    -paragraph= - -[tabletags-literal] -bodydata=
    |
    -paragraph= - -[tabletags-asciidoc] -bodydata=
    |
    -paragraph= - -[table] -
    - - -{colspecs} -{headrows#} -{headrows} -{headrows#} -{footrows#} -{footrows} -{footrows#} - -{bodyrows} - -
    {caption={table-caption} {counter:table-number}. }{title}
    -
    - -#-------------------------------------------------------------------- - -[floatingtitle] -{title} - -[preamble] -# Untitled elements between header and first section title. -
    -
    -| -
    -
    - -# Document sections. -[sect0] -{title} -| - -[sect1] -
    -{numbered?{sectnum} }{title} -
    -| -
    -
    - -[sect2] -
    -{numbered?{sectnum} }{title} -| -
    - -[sect3] -
    -{numbered?{sectnum} }{title} -| -
    - -[sect4] -
    -{title} -| -
    - -[appendix] -
    -{numbered?{sectnum} }{appendix-caption} {counter:appendix-number:A}: {title} -
    -| -
    -
    - -[toc] -
    -
    {toc-title}
    - -
    - -[header] - - - - - - - -{title} -{title%}{doctitle=} -ifdef::linkcss[] - -ifdef::quirks[] - -endif::quirks[] -ifdef::pygments[] -ifdef::toc2[] - -endif::linkcss[] -ifndef::linkcss[] - -endif::linkcss[] -ifndef::disable-javascript[] -ifdef::linkcss[] - - - -endif::linkcss[] -ifndef::linkcss[] - -endif::linkcss[] -endif::disable-javascript[] -ifdef::asciimath[] -ifdef::linkcss[] - -endif::linkcss[] -ifndef::linkcss[] - -endif::linkcss[] -endif::asciimath[] -ifdef::latexmath[] -ifdef::linkcss[] - -endif::linkcss[] -ifndef::linkcss[] - -endif::linkcss[] -endif::latexmath[] -{docinfo1,docinfo2#}{include:{docdir}/docinfo.html} -{docinfo,docinfo2#}{include:{docdir}/{docname}-docinfo.html} -template::[docinfo] - - - -
    -# Article, book header. -ifndef::doctype-manpage[] - -
    -endif::doctype-manpage[] -# Man page header. -ifdef::doctype-manpage[] - -endif::doctype-manpage[] - -[footer] -
    - - - -ifdef::doctype-manpage[] -[synopsis] -template::[sect1] -endif::doctype-manpage[] - -ifdef::quirks[] -include::xhtml11-quirks.conf[] -endif::quirks[] diff -Nru anet-0.4.1/Makefile anet-0.4.2/Makefile --- anet-0.4.1/Makefile 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/Makefile 2019-10-30 14:36:44.000000000 +0000 @@ -8,7 +8,7 @@ MAJOR = 0 MINOR = 4 -REVISION = 1 +REVISION = 2 VERSION = $(MAJOR).$(MINOR).$(REVISION) ANET = libanet-$(VERSION) TARBALL = $(ANET).tar.bz2 diff -Nru anet-0.4.1/README anet-0.4.2/README --- anet-0.4.1/README 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/README 2019-10-30 14:36:44.000000000 +0000 @@ -39,15 +39,15 @@ Verify a Release ~~~~~~~~~~~~~~~~ -To verify the integrity and authenticity of the distribution tarball, import -the key http://www.codelabs.ch/keys/0xBB793815pub.asc and type the following -command: +To verify the integrity and authenticity of the distribution tarball type the +following commands: + $ wget -q https://www.codelabs.ch/keys/0xDBF6D7E1095FD0D9.asc -O - | gpg --import $ gpg --verify libanet-{version}.tar.bz2.sig -The key fingerprint of the public key ('0xBB793815') is: +The key fingerprint of the public key ('0xDBF6D7E1095FD0D9') is: - Key fingerprint = A2FB FF56 83FB 67D8 017B C50C F8C5 F8B5 BB79 3815 + Key fingerprint = 298F 4B32 C3C4 1D88 5949 86F3 DBF6 D7E1 095F D0D9 Development version ~~~~~~~~~~~~~~~~~~~ @@ -65,7 +65,7 @@ software installed: * GNAT Ada compiler: - http://www.gnu.org/software/gnat/gnat.html + http://www.gnu.org/software/gnat If you want to run the unit tests before installation of Anet (which is recommended) you furthermore need to have the following installed: @@ -100,9 +100,9 @@ Licence ------- -------------------------------------------------------------------------------- -Copyright (C) 2011-2018 secunet Security Networks AG -Copyright (C) 2011-2018 Reto Buerki -Copyright (C) 2011-2018 Adrian-Ken Rueegsegger +Copyright (C) 2011-2019 secunet Security Networks AG +Copyright (C) 2011-2019 Reto Buerki +Copyright (C) 2011-2019 Adrian-Ken Rueegsegger Free use of this software is granted under the terms of the GNAT Modified General Public License (GMGPL). diff -Nru anet-0.4.1/src/anet.ads anet-0.4.2/src/anet.ads --- anet-0.4.1/src/anet.ads 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/src/anet.ads 2019-10-30 14:36:44.000000000 +0000 @@ -20,13 +20,6 @@ -- exception does not however invalidate any other reasons why the -- executable file might be covered by the GNU Public License. -- --- As a special exception, if other files instantiate generics from this --- unit, or you link this unit with other files to produce an --- executable this unit does not by itself cause the resulting --- executable to be covered by the GNU General Public License. This --- exception does not however invalidate any other reasons why the --- executable file might be covered by the GNU Public License. --- pragma License (Modified_GPL); pragma Detect_Blocking; diff -Nru anet-0.4.1/src/anet-errno.adb anet-0.4.2/src/anet-errno.adb --- anet-0.4.1/src/anet-errno.adb 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/src/anet-errno.adb 2019-10-30 14:36:44.000000000 +0000 @@ -19,13 +19,6 @@ -- exception does not however invalidate any other reasons why the -- executable file might be covered by the GNU Public License. -- --- As a special exception, if other files instantiate generics from this --- unit, or you link this unit with other files to produce an --- executable this unit does not by itself cause the resulting --- executable to be covered by the GNU General Public License. This --- exception does not however invalidate any other reasons why the --- executable file might be covered by the GNU Public License. --- with Ada.Strings.Fixed; diff -Nru anet-0.4.1/src/anet-errno.ads anet-0.4.2/src/anet-errno.ads --- anet-0.4.1/src/anet-errno.ads 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/src/anet-errno.ads 2019-10-30 14:36:44.000000000 +0000 @@ -19,13 +19,6 @@ -- exception does not however invalidate any other reasons why the -- executable file might be covered by the GNU Public License. -- --- As a special exception, if other files instantiate generics from this --- unit, or you link this unit with other files to produce an --- executable this unit does not by itself cause the resulting --- executable to be covered by the GNU General Public License. This --- exception does not however invalidate any other reasons why the --- executable file might be covered by the GNU Public License. --- with Interfaces.C; diff -Nru anet-0.4.1/src/anet-sockets.adb anet-0.4.2/src/anet-sockets.adb --- anet-0.4.1/src/anet-sockets.adb 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/src/anet-sockets.adb 2019-10-30 14:36:44.000000000 +0000 @@ -24,7 +24,6 @@ with GNAT.OS_Lib; with Anet.Errno; -with Anet.OS_Constants; with Anet.Sockets.Thin; package body Anet.Sockets is diff -Nru anet-0.4.1/src/anet-sockets.ads anet-0.4.2/src/anet-sockets.ads --- anet-0.4.1/src/anet-sockets.ads 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/src/anet-sockets.ads 2019-10-30 14:36:44.000000000 +0000 @@ -26,6 +26,7 @@ with Interfaces.C; with Anet.Constants; +with Anet.OS_Constants; with Anet.Socket_Families; package Anet.Sockets is @@ -36,7 +37,7 @@ Stream_Socket); -- Supported socket modes. - type Level_Type is (Socket_Level, TCP_Level); + type Level_Type is (Socket_Level, TCP_Level, IPv6_Level); -- Protocol level type. type Sock_Shutdown_Cmd is @@ -113,7 +114,8 @@ type Option_Name_Bool is (Broadcast, Reuse_Address, - TCP_Nodelay); + TCP_Nodelay, + IPv6_V6_Only); -- Supported boolean socket options. type Option_Name_Str is (Bind_To_Device); @@ -147,13 +149,15 @@ Levels : constant array (Level_Type) of Interfaces.C.int := (Socket_Level => Constants.Sys.SOL_SOCKET, - TCP_Level => Constants.Sys.IPPROTO_TCP); + TCP_Level => Constants.Sys.IPPROTO_TCP, + IPv6_Level => Constants.IPPROTO_IPV6); -- Protocol level mapping. Options_Bool : constant array (Option_Name_Bool) of Interfaces.C.int := (Reuse_Address => Constants.Sys.SO_REUSEADDR, Broadcast => Constants.Sys.SO_BROADCAST, - TCP_Nodelay => Constants.Sys.TCP_NODELAY); + TCP_Nodelay => Constants.Sys.TCP_NODELAY, + IPv6_V6_Only => OS_Constants.IPV6_V6ONLY); -- Mapping for option names with boolean value. Options_Str : constant array (Option_Name_Str) of Interfaces.C.int diff -Nru anet-0.4.1/src/anet-sockets-inet.adb anet-0.4.2/src/anet-sockets-inet.adb --- anet-0.4.1/src/anet-sockets-inet.adb 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/src/anet-sockets-inet.adb 2019-10-30 14:36:44.000000000 +0000 @@ -154,17 +154,20 @@ ------------------------------------------------------------------------- procedure Bind - (Socket : in out IPv4_Socket_Type; - Address : IPv4_Addr_Type := Any_Addr; - Port : Port_Type) + (Socket : in out IPv4_Socket_Type; + Address : IPv4_Addr_Type := Any_Addr; + Port : Port_Type; + Reuse_Addr : Boolean := True) is Sockaddr : constant Thin.Inet.Sockaddr_In_Type := Thin.Inet.Create_Inet4 (Address => Address, Port => Port); begin - Socket.Set_Socket_Option - (Option => Reuse_Address, - Value => True); + if Reuse_Addr then + Socket.Set_Socket_Option + (Option => Reuse_Address, + Value => True); + end if; Errno.Check_Or_Raise (Result => Thin.C_Bind @@ -178,17 +181,20 @@ ------------------------------------------------------------------------- procedure Bind - (Socket : in out IPv6_Socket_Type; - Address : IPv6_Addr_Type := Any_Addr_V6; - Port : Port_Type) + (Socket : in out IPv6_Socket_Type; + Address : IPv6_Addr_Type := Any_Addr_V6; + Port : Port_Type; + Reuse_Addr : Boolean := True) is Sockaddr : constant Thin.Inet.Sockaddr_In_Type := Thin.Inet.Create_Inet6 (Address => Address, Port => Port); begin - Socket.Set_Socket_Option - (Option => Reuse_Address, - Value => True); + if Reuse_Addr then + Socket.Set_Socket_Option + (Option => Reuse_Address, + Value => True); + end if; Errno.Check_Or_Raise (Result => Thin.C_Bind diff -Nru anet-0.4.1/src/anet-sockets-inet.ads anet-0.4.2/src/anet-sockets-inet.ads --- anet-0.4.1/src/anet-sockets-inet.ads 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/src/anet-sockets-inet.ads 2019-10-30 14:36:44.000000000 +0000 @@ -47,10 +47,12 @@ -- IPv4 socket. procedure Bind - (Socket : in out IPv4_Socket_Type; - Address : IPv4_Addr_Type := Any_Addr; - Port : Port_Type); + (Socket : in out IPv4_Socket_Type; + Address : IPv4_Addr_Type := Any_Addr; + Port : Port_Type; + Reuse_Addr : Boolean := True); -- Bind given IPv4 socket to the specified IPv4 address and port. + -- If Reuse_Addr is True, the SO_REUSEADDR option will be set as well. procedure Send (Socket : IPv4_Socket_Type; @@ -130,10 +132,12 @@ -- IPv6 socket. procedure Bind - (Socket : in out IPv6_Socket_Type; - Address : IPv6_Addr_Type := Any_Addr_V6; - Port : Port_Type); + (Socket : in out IPv6_Socket_Type; + Address : IPv6_Addr_Type := Any_Addr_V6; + Port : Port_Type; + Reuse_Addr : Boolean := True); -- Bind given IPv6 socket to the specified IPv6 address and port. + -- If Reuse_Addr is True, the SO_REUSEADDR option will be set as well. procedure Send (Socket : IPv6_Socket_Type; diff -Nru anet-0.4.1/src/bsd/anet-os_constants.ads anet-0.4.2/src/bsd/anet-os_constants.ads --- anet-0.4.1/src/bsd/anet-os_constants.ads 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/src/bsd/anet-os_constants.ads 2019-10-30 14:36:44.000000000 +0000 @@ -24,6 +24,7 @@ IPV6_MULTICAST_IF : constant := 9; -- Sending interface IPV6_ADD_MEMBERSHIP : constant := 12; -- Join multicast group (IPv6) + IPV6_V6ONLY : constant := 27; -- Set IPv6 socket to V6 only O_NONBLOCK : constant := 4; -- Non-blocking sockets diff -Nru anet-0.4.1/src/linux/anet-os_constants.ads anet-0.4.2/src/linux/anet-os_constants.ads --- anet-0.4.1/src/linux/anet-os_constants.ads 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/src/linux/anet-os_constants.ads 2019-10-30 14:36:44.000000000 +0000 @@ -27,6 +27,7 @@ IPV6_MULTICAST_IF : constant := 17; -- Sending interface IPV6_ADD_MEMBERSHIP : constant := 20; -- Join multicast group (IPv6) + IPV6_V6ONLY : constant := 26; -- Set IPv6 socket to V6 only NETLINK_ROUTE : constant := 0; -- Routing/device hook NETLINK_FIREWALL : constant := 3; -- Firewalling hook diff -Nru anet-0.4.1/tests/socket_tests-ip.adb anet-0.4.2/tests/socket_tests-ip.adb --- anet-0.4.1/tests/socket_tests-ip.adb 2018-08-09 12:19:25.000000000 +0000 +++ anet-0.4.2/tests/socket_tests-ip.adb 2019-10-30 14:36:44.000000000 +0000 @@ -825,6 +825,10 @@ delay 0.2; S_Cli.Init; + S_Cli.Set_Socket_Option + (Level => IPv6_Level, + Option => IPv6_V6_Only, + Value => True); S_Cli.Bind (Address => Loopback_Addr_V6, Port => Port + 1); S_Cli.Connect (Address => Loopback_Addr_V6,