Date: Tue, 11 Sep 2018 16:20:00 +0200 From: Steffen Nurpmeso <steffen@sdaoden.eu> To: Eric van Gyzen <eric@vangyzen.net> Cc: freebsd-current@freebsd.org Subject: Re: Request for Review: Generate /etc/services from the IANA registry Message-ID: <20180911142000.unrYV%steffen@sdaoden.eu> In-Reply-To: <59cd421e-f5d4-855a-83ec-65726f792555@vangyzen.net> References: <8b7930bc-1086-05d3-c019-052368ddf097@vangyzen.net> <59cd421e-f5d4-855a-83ec-65726f792555@vangyzen.net>
next in thread | previous in thread | raw e-mail | index | archive | help
Eric van Gyzen wrote in <59cd421e-f5d4-855a-83ec-65726f792555@vangyzen.net>: |On 9/10/18 12:04 PM, Eric van Gyzen wrote: |> Would anyone like to review this change to generate /etc/services from= =20 |> the IANA registry? |>=20 |> =C2=A0=C2=A0=C2=A0=C2=A0https://reviews.freebsd.org/D17106 | |If that review made your browser unhappy, try this one instead: Yes it did. | https://reviews.freebsd.org/D17115 I mean, i have nothing to do with FreeBSD except that i use it since 4.7 (though some yours only indirectly as Mac OS X), and i am in opposition to quite some directions taken, but who am i, that is ok, i have a very narrow use case. But this is one of the things i really do not understand, bringing XML and Python stuff needlessly into FreeBSD seems very odd. For example, ArchLinux and CRUX Linux use a simple portable awk script to generate services and protocols, and all you need to count the number of services is a normal Unix pipeline which strips comments and then calls wc -l. I'll paste the script below this. Thank you. And ciao already here #!/bin/sh - #@ Update protocols and services from IANA. #@ Taken from ArchLinux script written by Gaetan Bisson. Adjusted for CRUX. awk=3Dawk curl=3Dcurl url_pn=3Dhttps://www.iana.org/assignments/protocol-numbers/protocol-numbers= .xml url_snpn=3Dhttps://www.iana.org/assignments/service-names-port-numbers/\ service-names-port-numbers.xml datetime=3D`date +'%FT%T%z'` download() { echo 'Downloading protocols' ${curl} -o protocols.xml ${url_pn} [ ${?} -eq 0 ] || exit 20 echo 'Downloading services' ${curl} -o services.xml ${url_snpn} [ ${?} -eq 0 ] || exit 21 } process() { echo 'Processing protocols' ${awk} -F "[<>]" -v URL=3D"${url_pn}" -v DT=3D"${datetime}" ' BEGIN{ print "# /etc/protocols, created " DT print "# Source: " URL } /<record/ {v =3D n =3D ""} /<value/ {v =3D $3} /<name/ && $3 !~ / / {n =3D $3} /<\/record/ && n && v !=3D ""{ printf "%-12s %3i %s\n", tolower(n), v, n } ' < protocols.xml > protocols.new [ ${?} -eq 0 ] || exit 30 echo 'Processing services' ${awk} -F "[<>]" -v URL=3D"${url_snpn}" -v DT=3D"${datetime}" ' BEGIN{ print "# /etc/services, created " DT print "# Source: " URL } /<record/ {n =3D u =3D p =3D c =3D ""} /<name/ && !/\(/ {n =3D $3} /<number/ {u =3D $3} /<protocol/ {p =3D $3} /Unassigned/ || /Reserved/ || /historic/ {c =3D 1} /<\/record/ && n && u && p && !c{ printf "%-15s %5i/%s\n", n, u, p } ' < services.xml > services.new [ ${?} -eq 0 ] || exit 31 } update() { mv protocols.new protocols [ ${?} -eq 0 ] || exit 40 mv services.new services [ ${?} -eq 0 ] || exit 41 rm -f protocols.xml services.xml } download process #update --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180911142000.unrYV%steffen>