From b2ccf8dd31d1457ae9f0ae270054117179220370 Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 7 Apr 2015 08:29:34 +0000 Subject: Imported from /home/lorry/working-area/delta_ntp/ntp-4.2.8p2.tar.gz. --- COPYRIGHT | 40 +- ChangeLog | 171 +- CommitLog | 7886 +++++++++++++++- Makefile.am | 5 +- Makefile.in | 25 +- NEWS | 369 +- aclocal.m4 | 6 +- adjtimed/Makefile.in | 14 +- build | 6 +- clockstuff/Makefile.in | 14 +- compile | 142 + config.guess | 1517 +++ config.h.in | 22 + config.sub | 1756 ++++ configure | 802 +- configure.ac | 80 +- depcomp | 530 ++ html/build.html | 4 +- html/confopt.html | 4 +- html/copyright.html | 38 +- html/drivers/driver28.html | 136 +- html/miscopt.html | 4 +- html/sntp.html | 9 +- include/Makefile.in | 14 +- include/audio.h | 2 +- include/binio.h | 10 + include/icom.h | 2 +- include/isc/Makefile.in | 14 +- include/mbg_gps166.h | 1195 ++- include/ntp.h | 35 +- include/ntp_calendar.h | 6 +- include/ntp_config.h | 5 +- include/ntp_filegen.h | 2 +- include/ntp_fp.h | 5 +- include/ntp_md5.h | 2 +- include/ntp_random.h | 3 + include/ntp_stdlib.h | 10 +- include/ntpd.h | 17 +- include/parse.h | 49 +- include/parse_conf.h | 14 +- include/timepps-Solaris.h | 2 +- kernel/Makefile.in | 14 +- kernel/sys/Makefile.in | 14 +- kernel/sys/parsestreams.h | 2 +- lib/isc/backtrace.c | 8 +- lib/isc/event.c | 4 +- lib/isc/include/isc/Makefile | 439 - lib/isc/include/isc/backtrace.h | 4 +- lib/isc/include/isc/socket.h | 14 +- lib/isc/inet_ntop.c | 1 + lib/isc/log.c | 27 +- lib/isc/netaddr.c | 3 +- lib/isc/result.c | 12 +- lib/isc/sockaddr.c | 12 +- lib/isc/unix/file.c | 6 +- lib/isc/unix/ifiter_getifaddrs.c | 13 +- lib/isc/unix/ifiter_ioctl.c | 18 +- lib/isc/unix/include/isc/Makefile | 415 - lib/isc/unix/net.c | 3 +- libjsmn/jsmn.c | 5 +- libntp/Makefile.am | 3 +- libntp/Makefile.in | 70 +- libntp/atoint.c | 2 +- libntp/atolfp.c | 10 +- libntp/atouint.c | 2 +- libntp/audio.c | 24 +- libntp/authkeys.c | 3 +- libntp/authreadkeys.c | 8 +- libntp/emalloc.c | 2 + libntp/hextoint.c | 2 +- libntp/hextolfp.c | 4 +- libntp/humandate.c | 4 +- libntp/icom.c | 4 +- libntp/modetoa.c | 6 +- libntp/mstolfp.c | 10 +- libntp/ntp_calendar.c | 80 +- libntp/ntp_crypto_rnd.c | 113 + libntp/ntp_intres.c | 19 +- libntp/ntp_lineedit.c | 13 +- libntp/octtoint.c | 2 +- libntp/prettydate.c | 14 +- libntp/ssl_init.c | 4 +- libntp/timetoa.c | 9 +- libntp/work_fork.c | 2 +- libparse/Makefile.am | 32 +- libparse/Makefile.in | 43 +- libparse/clk_computime.c | 62 +- libparse/clk_dcf7000.c | 27 +- libparse/clk_hopf6021.c | 39 +- libparse/clk_meinberg.c | 179 +- libparse/clk_rawdcf.c | 64 +- libparse/clk_rcc8000.c | 31 +- libparse/clk_schmid.c | 36 +- libparse/clk_sel240x.c | 16 +- libparse/clk_trimtaip.c | 23 +- libparse/clk_trimtsip.c | 62 +- libparse/clk_varitext.c | 87 +- libparse/clk_wharton.c | 13 +- libparse/data_mbg.c | 149 +- libparse/gpstolfp.c | 10 +- libparse/info_trimble.c | 4 +- libparse/mkinfo_rcmd.sed | 2 +- libparse/mkinfo_scmd.sed | 2 +- libparse/parse.c | 120 +- libparse/parse_conf.c | 4 +- libparse/parsesolaris.c | 108 +- libparse/parsestreams.c | 126 +- libparse/trim_info.c | 2 +- ltmain.sh | 9636 ++++++++++++++++++++ missing | 360 + ntpd/Makefile.am | 2 +- ntpd/Makefile.in | 19 +- ntpd/cmd_args.c | 9 +- ntpd/invoke-ntp.conf.texi | 31 +- ntpd/invoke-ntp.keys.texi | 2 +- ntpd/invoke-ntpd.texi | 25 +- ntpd/keyword-gen-utd | 2 +- ntpd/keyword-gen.c | 5 +- ntpd/ntp.conf.5man | 42 +- ntpd/ntp.conf.5mdoc | 39 +- ntpd/ntp.conf.def | 31 +- ntpd/ntp.conf.html | 28 +- ntpd/ntp.conf.man.in | 42 +- ntpd/ntp.conf.mdoc.in | 39 +- ntpd/ntp.keys.5man | 8 +- ntpd/ntp.keys.5mdoc | 8 +- ntpd/ntp.keys.html | 2 +- ntpd/ntp.keys.man.in | 8 +- ntpd/ntp.keys.mdoc.in | 8 +- ntpd/ntp_config.c | 54 +- ntpd/ntp_control.c | 289 +- ntpd/ntp_crypto.c | 157 +- ntpd/ntp_filegen.c | 2 +- ntpd/ntp_io.c | 113 +- ntpd/ntp_keyword.h | 1192 +-- ntpd/ntp_leapsec.c | 17 +- ntpd/ntp_loopfilter.c | 188 +- ntpd/ntp_parser.c | 2047 ++--- ntpd/ntp_parser.h | 406 +- ntpd/ntp_parser.y | 7 + ntpd/ntp_peer.c | 20 + ntpd/ntp_proto.c | 125 +- ntpd/ntp_request.c | 17 +- ntpd/ntp_restrict.c | 4 +- ntpd/ntp_scanner.c | 28 +- ntpd/ntp_util.c | 4 +- ntpd/ntpd-opts.c | 628 +- ntpd/ntpd-opts.h | 73 +- ntpd/ntpd.1ntpdman | 28 +- ntpd/ntpd.1ntpdmdoc | 25 +- ntpd/ntpd.c | 9 +- ntpd/ntpd.html | 76 +- ntpd/ntpd.man.in | 28 +- ntpd/ntpd.mdoc.in | 25 +- ntpd/ntpdbase-opts.def | 22 +- ntpd/refclock_acts.c | 4 +- ntpd/refclock_arc.c | 6 +- ntpd/refclock_chu.c | 4 - ntpd/refclock_gpsdjson.c | 14 +- ntpd/refclock_heath.c | 2 +- ntpd/refclock_hpgps.c | 9 +- ntpd/refclock_irig.c | 4 +- ntpd/refclock_jjy.c | 45 +- ntpd/refclock_jupiter.c | 109 +- ntpd/refclock_neoclock4x.c | 14 +- ntpd/refclock_nmea.c | 15 +- ntpd/refclock_oncore.c | 160 +- ntpd/refclock_palisade.c | 10 +- ntpd/refclock_palisade.h | 1 + ntpd/refclock_parse.c | 1226 +-- ntpd/refclock_pcf.c | 2 +- ntpd/refclock_ripencc.c | 2 +- ntpd/refclock_shm.c | 200 +- ntpd/refclock_true.c | 1 + ntpd/refclock_wwv.c | 6 +- ntpdate/Makefile.in | 14 +- ntpdate/ntpdate.c | 2 +- ntpdc/Makefile.in | 14 +- ntpdc/invoke-ntpdc.texi | 4 +- ntpdc/ntpdc-opts.c | 236 +- ntpdc/ntpdc-opts.h | 10 +- ntpdc/ntpdc.1ntpdcman | 8 +- ntpdc/ntpdc.1ntpdcmdoc | 6 +- ntpdc/ntpdc.c | 72 +- ntpdc/ntpdc.h | 2 +- ntpdc/ntpdc.html | 4 +- ntpdc/ntpdc.man.in | 8 +- ntpdc/ntpdc.mdoc.in | 6 +- ntpdc/ntpdc_ops.c | 12 +- ntpq/Makefile.in | 14 +- ntpq/invoke-ntpq.texi | 4 +- ntpq/ntpq-opts.c | 234 +- ntpq/ntpq-opts.h | 10 +- ntpq/ntpq-subs.c | 215 +- ntpq/ntpq.1ntpqman | 10 +- ntpq/ntpq.1ntpqmdoc | 8 +- ntpq/ntpq.c | 75 +- ntpq/ntpq.h | 2 +- ntpq/ntpq.html | 4 +- ntpq/ntpq.man.in | 10 +- ntpq/ntpq.mdoc.in | 8 +- ntpsnmpd/Makefile.in | 14 +- ntpsnmpd/invoke-ntpsnmpd.texi | 4 +- ntpsnmpd/netsnmp_daemonize.c | 1 + ntpsnmpd/ntp_snmp.h | 3 + ntpsnmpd/ntpsnmpd-opts.c | 158 +- ntpsnmpd/ntpsnmpd-opts.h | 10 +- ntpsnmpd/ntpsnmpd.1ntpsnmpdman | 8 +- ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc | 6 +- ntpsnmpd/ntpsnmpd.html | 2 +- ntpsnmpd/ntpsnmpd.man.in | 8 +- ntpsnmpd/ntpsnmpd.mdoc.in | 6 +- packageinfo.sh | 8 +- parseutil/Makefile.in | 14 +- parseutil/dcfd.c | 62 +- parseutil/testdcf.c | 25 +- ports/winnt/include/config.h | 8 +- ports/winnt/include/termios.h | 2 +- ports/winnt/libntp/arc4wrap.c | 84 + ports/winnt/libntp/getclock.c | 2 + ports/winnt/libntp/termios.c | 3 +- ports/winnt/ntpd/nt_clockstuff.c | 41 +- ports/winnt/vs2005/libntp.vcproj | 4 + ports/winnt/vs2008/libntp/libntp.vcproj | 12 +- ports/winnt/vs2013/libntp/libntp.vcxproj | 2 + ports/winnt/vs2013/libntp/libntp.vcxproj.filters | 6 + scripts/Makefile.am | 1 + scripts/Makefile.in | 15 +- scripts/build/Makefile.in | 14 +- scripts/build/UpdatePoint | 18 +- scripts/build/VersionName | 15 +- scripts/calc_tickadj/Makefile.in | 14 +- scripts/calc_tickadj/calc_tickadj.1calc_tickadjman | 6 +- .../calc_tickadj/calc_tickadj.1calc_tickadjmdoc | 4 +- scripts/calc_tickadj/calc_tickadj.html | 2 +- scripts/calc_tickadj/calc_tickadj.man.in | 6 +- scripts/calc_tickadj/calc_tickadj.mdoc.in | 4 +- scripts/calc_tickadj/invoke-calc_tickadj.texi | 2 +- scripts/invoke-plot_summary.texi | 4 +- scripts/invoke-summary.texi | 4 +- scripts/lib/Makefile.in | 14 +- scripts/lib/NTP/Util.pm | 19 +- scripts/ntp-wait/Makefile.in | 14 +- scripts/ntp-wait/invoke-ntp-wait.texi | 4 +- scripts/ntp-wait/ntp-wait-opts | 4 +- scripts/ntp-wait/ntp-wait.1ntp-waitman | 6 +- scripts/ntp-wait/ntp-wait.1ntp-waitmdoc | 4 +- scripts/ntp-wait/ntp-wait.html | 4 +- scripts/ntp-wait/ntp-wait.man.in | 6 +- scripts/ntp-wait/ntp-wait.mdoc.in | 4 +- scripts/ntpsweep/Makefile.in | 14 +- scripts/ntpsweep/invoke-ntpsweep.texi | 4 +- scripts/ntpsweep/ntpsweep-opts | 4 +- scripts/ntpsweep/ntpsweep.1ntpsweepman | 6 +- scripts/ntpsweep/ntpsweep.1ntpsweepmdoc | 4 +- scripts/ntpsweep/ntpsweep.html | 4 +- scripts/ntpsweep/ntpsweep.man.in | 6 +- scripts/ntpsweep/ntpsweep.mdoc.in | 4 +- scripts/ntptrace/Makefile.in | 14 +- scripts/ntptrace/invoke-ntptrace.texi | 4 +- scripts/ntptrace/ntptrace-opts | 4 +- scripts/ntptrace/ntptrace.1ntptraceman | 6 +- scripts/ntptrace/ntptrace.1ntptracemdoc | 4 +- scripts/ntptrace/ntptrace.html | 4 +- scripts/ntptrace/ntptrace.man.in | 6 +- scripts/ntptrace/ntptrace.mdoc.in | 4 +- scripts/plot_summary-opts | 4 +- scripts/plot_summary.1plot_summaryman | 6 +- scripts/plot_summary.1plot_summarymdoc | 4 +- scripts/plot_summary.html | 4 +- scripts/plot_summary.man.in | 6 +- scripts/plot_summary.mdoc.in | 4 +- scripts/summary-opts | 4 +- scripts/summary.1summaryman | 6 +- scripts/summary.1summarymdoc | 4 +- scripts/summary.html | 4 +- scripts/summary.man.in | 6 +- scripts/summary.mdoc.in | 4 +- scripts/update-leap/Makefile.am | 97 + scripts/update-leap/Makefile.in | 887 ++ scripts/update-leap/invoke-update-leap.menu | 1 + scripts/update-leap/invoke-update-leap.texi | 170 + scripts/update-leap/update-leap | 434 + scripts/update-leap/update-leap-opts | 72 + scripts/update-leap/update-leap-opts.def | 163 + scripts/update-leap/update-leap.1update-leapman | 169 + scripts/update-leap/update-leap.1update-leapmdoc | 134 + scripts/update-leap/update-leap.html | 274 + scripts/update-leap/update-leap.man.in | 169 + scripts/update-leap/update-leap.mdoc.in | 134 + scripts/update-leap/update-leap.texi | 43 + sntp/COPYRIGHT | 40 +- sntp/Makefile.am | 13 +- sntp/Makefile.in | 33 +- sntp/aclocal.m4 | 4 +- sntp/compile | 142 + sntp/config.guess | 1517 +++ sntp/config.h.in | 3 + sntp/config.sub | 1756 ++++ sntp/configure | 394 +- sntp/configure.ac | 13 +- sntp/crypto.c | 4 +- sntp/depcomp | 530 ++ sntp/include/Makefile.in | 14 +- sntp/include/copyright.def | 4 +- sntp/include/ntp.lic | 2 +- sntp/include/version.def | 2 +- sntp/include/version.texi | 6 +- sntp/invoke-sntp.texi | 14 +- sntp/libevent/ChangeLog | 786 +- sntp/libevent/Makefile.am | 4 +- sntp/libevent/Makefile.in | 98 +- sntp/libevent/README | 218 - .../WIN32-Code/nmake/event2/event-config.h | 4 +- sntp/libevent/WIN32-Code/tree.h | 677 -- sntp/libevent/aclocal.m4 | 3 +- sntp/libevent/buffer.c | 84 +- sntp/libevent/bufferevent.c | 13 +- sntp/libevent/bufferevent_async.c | 10 +- sntp/libevent/bufferevent_filter.c | 69 +- sntp/libevent/bufferevent_openssl.c | 2 + sntp/libevent/bufferevent_pair.c | 33 +- sntp/libevent/config.h.in | 118 +- sntp/libevent/configure | 4783 +--------- sntp/libevent/configure.ac | 33 +- sntp/libevent/evbuffer-internal.h | 14 +- sntp/libevent/evdns.c | 113 +- sntp/libevent/event.c | 48 +- sntp/libevent/event_tagging.c | 15 +- sntp/libevent/evrpc-internal.h | 1 + sntp/libevent/evthread-internal.h | 7 + sntp/libevent/evthread.c | 23 +- sntp/libevent/evutil.c | 42 +- sntp/libevent/evutil_time.c | 50 + sntp/libevent/ht-internal.h | 1 - sntp/libevent/http-internal.h | 2 + sntp/libevent/http.c | 47 +- sntp/libevent/include/event2/buffer.h | 11 +- sntp/libevent/include/event2/bufferevent.h | 9 +- sntp/libevent/include/event2/dns.h | 18 +- sntp/libevent/include/event2/event.h | 10 + sntp/libevent/include/event2/http.h | 14 + sntp/libevent/include/event2/listener.h | 9 + sntp/libevent/include/event2/util.h | 69 + sntp/libevent/kqueue.c | 17 + sntp/libevent/listener.c | 5 + sntp/libevent/m4/acx_pthread.m4 | 279 + sntp/libevent/m4/openldap-thread-check.m4 | 683 -- sntp/libevent/m4/openldap.m4 | 1131 --- sntp/libevent/sample/http-server.c | 7 +- sntp/libevent/sample/https-client.c | 17 +- sntp/libevent/sample/include.am | 2 + sntp/libevent/test/include.am | 3 +- sntp/libevent/test/regress.c | 37 +- sntp/libevent/test/regress.h | 6 +- sntp/libevent/test/regress_buffer.c | 53 +- sntp/libevent/test/regress_bufferevent.c | 152 +- sntp/libevent/test/regress_dns.c | 155 +- sntp/libevent/test/regress_finalize.c | 1 + sntp/libevent/test/regress_http.c | 116 +- sntp/libevent/test/regress_main.c | 4 + sntp/libevent/test/regress_minheap.c | 5 +- sntp/libevent/test/regress_ssl.c | 1 + sntp/libevent/test/regress_thread.c | 5 +- sntp/libevent/test/regress_util.c | 36 +- sntp/libevent/test/regress_zlib.c | 17 +- sntp/libevent/test/test-fdleak.c | 20 +- sntp/libevent/test/test-ratelim.c | 11 +- sntp/libevent/test/test-time.c | 15 +- sntp/libevent/test/tinytest.c | 33 + sntp/libevent/test/tinytest.h | 2 + sntp/libevent/test/tinytest_macros.h | 27 +- sntp/libevent/time-internal.h | 3 - sntp/libevent/util-internal.h | 2 +- sntp/libevent/whatsnew-2.1.txt | 53 +- sntp/libopts/Makefile.in | 14 +- sntp/libopts/autoopts.h | 4 +- sntp/libopts/autoopts/options.h | 10 +- sntp/libopts/configfile.c | 12 +- sntp/libopts/enum.c | 8 +- sntp/libopts/file.c | 4 +- sntp/libopts/find.c | 4 +- sntp/libopts/init.c | 13 +- sntp/libopts/load.c | 2 +- sntp/libopts/m4/libopts.m4 | 24 +- sntp/libopts/makeshell.c | 16 +- sntp/libopts/nested.c | 14 +- sntp/libopts/numeric.c | 2 +- sntp/libopts/parse-duration.c | 4 +- sntp/libopts/pgusage.c | 2 +- sntp/libopts/reset.c | 2 +- sntp/libopts/save.c | 20 +- sntp/libopts/tokenize.c | 2 +- sntp/libopts/usage.c | 4 +- sntp/loc/darwin | 1 + sntp/loc/debian | 1 + sntp/loc/freebsd | 1 + sntp/loc/legacy | 1 + sntp/loc/netbsd | 3 +- sntp/loc/solaris | 1 + sntp/ltmain.sh | 9636 ++++++++++++++++++++ sntp/m4/ax_c99_struct_init.m4 | 59 + sntp/m4/hms_search_lib.m4 | 4 +- sntp/m4/ntp_compiler.m4 | 1 + sntp/m4/ntp_crypto_rand.m4 | 53 + sntp/m4/ntp_libevent.m4 | 25 +- sntp/m4/ntp_libntp.m4 | 14 +- sntp/m4/ntp_locinfo.m4 | 6 + sntp/m4/openldap-thread-check.m4 | 683 ++ sntp/m4/openldap.m4 | 1131 +++ sntp/m4/version.m4 | 2 +- sntp/main.c | 35 +- sntp/missing | 360 + sntp/networking.c | 23 +- sntp/scm-rev | 2 +- sntp/scripts/Makefile.in | 14 +- sntp/scripts/cvo.sh | 8 +- sntp/sntp-opts.c | 347 +- sntp/sntp-opts.def | 29 +- sntp/sntp-opts.h | 10 +- sntp/sntp.1sntpman | 38 +- sntp/sntp.1sntpmdoc | 35 +- sntp/sntp.html | 14 +- sntp/sntp.man.in | 38 +- sntp/sntp.mdoc.in | 35 +- sntp/tests/Makefile.in | 14 +- tests/Makefile.in | 14 +- tests/libntp/Makefile.in | 14 +- tests/ntpd/Makefile.in | 14 +- util/Makefile.am | 3 +- util/Makefile.in | 24 +- util/ansi2knr.1 | 36 + util/ansi2knr.c | 739 ++ util/invoke-ntp-keygen.texi | 4 +- util/jitter.c | 3 +- util/jitter.h | 401 - util/ntp-keygen-opts.c | 368 +- util/ntp-keygen-opts.h | 10 +- util/ntp-keygen.1ntp-keygenman | 10 +- util/ntp-keygen.1ntp-keygenmdoc | 8 +- util/ntp-keygen.c | 89 +- util/ntp-keygen.html | 4 +- util/ntp-keygen.man.in | 10 +- util/ntp-keygen.mdoc.in | 8 +- util/ntptime.c | 9 +- ylwrap | 222 + 446 files changed, 54182 insertions(+), 15384 deletions(-) create mode 100755 compile create mode 100755 config.guess create mode 100755 config.sub create mode 100755 depcomp delete mode 100644 lib/isc/include/isc/Makefile delete mode 100644 lib/isc/unix/include/isc/Makefile create mode 100644 libntp/ntp_crypto_rnd.c create mode 100755 ltmain.sh create mode 100755 missing create mode 100644 ports/winnt/libntp/arc4wrap.c create mode 100644 scripts/update-leap/Makefile.am create mode 100644 scripts/update-leap/Makefile.in create mode 100644 scripts/update-leap/invoke-update-leap.menu create mode 100644 scripts/update-leap/invoke-update-leap.texi create mode 100644 scripts/update-leap/update-leap create mode 100644 scripts/update-leap/update-leap-opts create mode 100644 scripts/update-leap/update-leap-opts.def create mode 100644 scripts/update-leap/update-leap.1update-leapman create mode 100644 scripts/update-leap/update-leap.1update-leapmdoc create mode 100644 scripts/update-leap/update-leap.html create mode 100644 scripts/update-leap/update-leap.man.in create mode 100644 scripts/update-leap/update-leap.mdoc.in create mode 100644 scripts/update-leap/update-leap.texi create mode 100755 sntp/compile create mode 100755 sntp/config.guess create mode 100755 sntp/config.sub create mode 100755 sntp/depcomp delete mode 100644 sntp/libevent/README create mode 100644 sntp/libevent/m4/acx_pthread.m4 delete mode 100644 sntp/libevent/m4/openldap-thread-check.m4 delete mode 100644 sntp/libevent/m4/openldap.m4 create mode 100755 sntp/ltmain.sh create mode 100644 sntp/m4/ax_c99_struct_init.m4 create mode 100644 sntp/m4/ntp_crypto_rand.m4 create mode 100644 sntp/m4/openldap-thread-check.m4 create mode 100644 sntp/m4/openldap.m4 create mode 100755 sntp/missing create mode 100644 util/ansi2knr.1 create mode 100644 util/ansi2knr.c delete mode 100644 util/jitter.h create mode 100755 ylwrap diff --git a/COPYRIGHT b/COPYRIGHT index 1775a64..9c1a0f8 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -4,16 +4,16 @@ This file is automatically generated from html/copyright.html jpg "Clone me," says Dolly sheepishly. - Last update: 9-Aug-2014 07:56 UTC + Last update: 17-Jan-2015 00:16 UTC _________________________________________________________________ The following copyright notice applies to all files collectively called the Network Time Protocol Version 4 Distribution. Unless - specifically declared otherwise in an individual file, this notice - applies as if the text was explicitly included in the file. + specifically declared otherwise in an individual file, this entire + notice applies as if the text was explicitly included in the file. *********************************************************************** * * -* Copyright (c) University of Delaware 1992-2014 * +* Copyright (c) University of Delaware 1992-2015 * * * * Permission to use, copy, modify, and distribute this software and * * its documentation for any purpose with or without fee is hereby * @@ -27,6 +27,38 @@ This file is automatically generated from html/copyright.html * purpose. It is provided "as is" without express or implied * * warranty. * * * +*********************************************************************** + + Content starting in 2011 from Harlan Stenn, Danny Mayer, and Martin + Burnicki is: +*********************************************************************** +* * +* Copyright (c) Network Time Foundation 2011-2015 * +* * +* All Rights Reserved * +* * +* Redistribution and use in source and binary forms, with or without * +* modification, are permitted provided that the following conditions * +* are met: * +* 1. Redistributions of source code must retain the above copyright * +* notice, this list of conditions and the following disclaimer. * +* 2. Redistributions in binary form must reproduce the above * +* copyright notice, this list of conditions and the following * +* disclaimer in the documentation and/or other materials provided * +* with the distribution. * +* * +* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS * +* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * +* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE * +* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * +* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * +* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * +* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * +* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * +* DAMAGE. * *********************************************************************** The following individuals contributed in part to the Network Time diff --git a/ChangeLog b/ChangeLog index aafdee1..e75384c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,12 +1,179 @@ +--- +(4.2.8p2) 2015/04/07 Released by Harlan Stenn +(4.2.8p2-RC3) 2015/04/03 Released by Harlan Stenn + +* [Bug 2763] Fix for different thresholds for forward and backward steps. +--- +(4.2.8p2-RC2) 2015/04/03 Released by Harlan Stenn + +* [Bug 2592] FLAG_TSTAMP_PPS cleanup for refclock_parse.c. +* [Bug 2769] New script: update-leap +* [Bug 2769] cleannup for update-leap +* [Bug 2788] New flag -G (force_step_once). +* [Bug 2794] Clean up kernel clock status reports. +* [Bug 2795] Cannot build without OpenSLL (on Win32). + Provided a Win32 specific wrapper around libevent/arc4random.c. + fixed some minor warnings. +* [Bug 2796] ntp-keygen crashes in 'getclock()' on Win32. +* [Bug 2797] ntp-keygen trapped in endless loop for MD5 keys + on big-endian machines. +* [Bug 2798] sntp should decode and display the leap indicator. +* Simple cleanup to html/build.html +--- +(4.2.8p2-RC1) 2015/03/30 Released by Harlan Stenn + +* [Bug 2794] Don't let reports on normal kernel status changes + look like errors. +* [Bug 2788] New flag -G (force_step_once). +* [Bug 2592] Account for PPS sources which can provide an accurate + absolute time stamp, and status information. + Fixed indention and removed trailing whitespace. +* [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. +* [Bug 1960] setsockopt IPV6_MULTICAST_IF: Invalid argument. +* [Bug 2346] "graceful termination" signals do not do peer cleanup. +* [Bug 2728] See if C99-style structure initialization works. +* [Bug 2747] Upgrade libevent to 2.1.5-beta. +* [Bug 2749] ntp/lib/NTP/Util.pm needs update for ntpq -w, IPv6, .POOL. . +* [Bug 2751] jitter.h has stale copies of l_fp macros. +* [Bug 2756] ntpd hangs in startup with gcc 3.3.5 on ARM. +* [Bug 2757] Quiet compiler warnings. +* [Bug 2759] Expose nonvolatile/clk_wander_threshold to ntpq. +* [Bug 2763] Allow different thresholds for forward and backward steps. +* [Bug 2766] ntp-keygen output files should not be world-readable. +* [Bug 2767] ntp-keygen -M should symlink to ntp.keys. +* [Bug 2771] nonvolatile value is documented in wrong units. +* [Bug 2773] Early leap announcement from Palisade/Thunderbolt +* [Bug 2774] Unreasonably verbose printout - leap pending/warning +* [Bug 2775] ntp-keygen.c fails to compile under Windows. +* [Bug 2777] Fixed loops and decoding of Meinberg GPS satellite info. + Removed non-ASCII characters from some copyright comments. + Removed trailing whitespace. + Updated definitions for Meinberg clocks from current Meinberg header files. + Now use C99 fixed-width types and avoid non-ASCII characters in comments. + Account for updated definitions pulled from Meinberg header files. + Updated comments on Meinberg GPS receivers which are not only called GPS16x. + Replaced some constant numbers by defines from ntp_calendar.h + Modified creation of parse-specific variables for Meinberg devices + in gps16x_message(). + Reworked mk_utcinfo() to avoid printing of ambiguous leap second dates. + Modified mbg_tm_str() which now expexts an additional parameter controlling + if the time status shall be printed. +* [Sec 2779] ntpd accepts unauthenticated packets with symmetric key crypto. +* [Sec 2781] Authentication doesn't protect symmetric associations against + DoS attacks. +* [Bug 2783] Quiet autoconf warnings about missing AC_LANG_SOURCE. +* [Bug 2789] Quiet compiler warnings from libevent. +* [Bug 2790] If ntpd sets the Windows MM timer highest resolution + pause briefly before measuring system clock precision to yield + correct results. +* Comment from Juergen Perlinger in ntp_calendar.c to make the code clearer. +* Use predefined function types for parse driver functions + used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + Cast parse conversion results to appropriate types to avoid + compiler warnings. + Let ioctl() for Windows accept a (void *) to avoid compiler warnings + when called with pointers to different types. +--- +(4.2.8p1) 2015/02/04 Released by Harlan Stenn + +* Update the NEWS file. +* [Sec 2671] vallen in extension fields are not validated. +--- +(4.2.8p1-RC2) 2015/01/29 Released by Harlan Stenn + +* [Bug 2627] shm refclock allows only two units with owner-only access + rework: reverted sense of mode bit (so default reflects previous + behaviour) and updated ducumentation. +* [Bug 2732] - Leap second not handled correctly on Windows 8 + use 'GetTickCount()' to get the true elapsed time of slew + (This should work for all versions of Windows >= W2K) +* [Bug 2738] Missing buffer initialization in refclocK_parse.c::parsestate(). +* [Bug 2739] Parse driver with PPS enabled occasionally evaluates + PPS timestamp with wrong sign. + Removed some German umlauts. +* [Bug 2740] Removed some obsolete code from the parse driver. +* [Bug 2741] Incorrect buffer check in refclocK_parse.c::parsestatus(). +--- +(4.2.8p1-RC1) 2015/01/24 Released by Harlan Stenn + +* Start the RC for 4.2.8p1. +* [Bug 2187] Update version number generation scripts. +* [Bug 2617] Fix sntp Usage documentation section. +* [Sec 2672] Code cleanup: On some OSes ::1 can be spoofed... +* [Bug 2736] Show error message if we cannot open the config file. +* Copyright update. +* Fix the package name. +--- +(4.2.8p1-beta5) 2015/01/07 Released by Harlan Stenn + +* [Bug 2695] Windows build: __func__ not supported under Windows. +* [Bug 2728] Work around C99-style structure initialization code + for older compilers, specifically Visual Studio prior to VS2013. +--- +(4.2.8p1-beta4) 2015/01/04 Released by Harlan Stenn + +* [Bug 1084] PPSAPI for ntpd on Windows with DLL backends +* [Bug 2695] Build problem on Windows (sys/socket.h). +* [Bug 2715] mdnstries option for ntp.conf from NetBSD. +* Fix a regression introduced to timepps-Solaris.h as part of: + [Bug 1206] Required compiler changes for Windows + (4.2.5p181) 2009/06/06 +--- +(4.2.8p1-beta3) 2015/01/02 Released by Harlan Stenn + +* [Bug 2627] shm refclock allows only two units with owner-only access + Use mode bit 0 to select public access for units >= 2 (units 0 & 1 are + always private. +* [Bug 2681] Fix display of certificate EOValidity dates on 32-bit systems. +* [Bug 2695] 4.2.8 does not build on Windows. +* [bug 2700] mrulist stopped working in 4.2.8. +* [Bug 2706] libparse/info_trimble.c build dependencies are broken. +* [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD. +* [Bug 2714] libevent may need to be built independently of any build of sntp. +* [Bug 2715] mdnstries option for ntp.conf from NetBSD. +--- +(4.2.8p1-beta2) 2014/12/27 Released by Harlan Stenn + +* [Bug 2674] Install sntp in sbin on NetBSD. +* [Bug 2693] ntp-keygen doesn't build without OpenSSL and sntp. +* [Bug 2707] Avoid a C90 extension in libjsmn/jsmn.c. +* [Bug 2709] see if we have a C99 compiler (not yet required). +--- +(4.2.8p1-beta1) 2014/12/23 Released by Harlan Stenn + +* [Sec 2672] On some OSes ::1 can be spoofed, bypassing source IP ACLs. +* [Bug 2693] ntp-keygen doesn't build without OpenSSL. +* [Bug 2697] IN6_IS_ADDR_LOOPBACK build problems on some OSes. +* [Bug 2699] HAVE_SYS_SELECT_H is misspelled in refclock_gpsdjson.c. +--- +(4.2.8) 2014/12/19 Released by Harlan Stenn + +* [Sec 730] Increase RSA_generate_key modulus. +* [Sec 2666] Use cryptographic random numbers for md5 key generation. +* [Sec 2667] buffer overflow in crypto_recv(). +* [Sec 2668] buffer overflow in ctl_putdata(). +* [Sec 2669] buffer overflow in configure(). +* [Sec 2670] Missing return; from error clause. +* [Sec 2671] vallen in extension fields are not validated. +* [Sec 2672] On some OSes ::1 can be spoofed, bypassing source IP ACLs. +* [Bug 2691] Wrong variable name in refclock_ripencc.c. +(4.2.7p486-RC) 2014/12/18 Released by Harlan Stenn +* [Bug 2687] RefClock 26/hpgps doesn't work at default line speed +(4.2.7p485-RC) 2014/12/12 Released by Harlan Stenn +* [Bug 2686] refclock_gpsdjson needs strtoll(), which is not always present. +(4.2.7p484-RC) 2014/12/11 Released by Harlan Stenn +(4.2.7p483) 2014/12/08 Released by Harlan Stenn +* [Bug 2685] Better document the KOD file for sntp. (4.2.7p482) 2014/12/02 Released by Harlan Stenn * [Bug 2641] sntp is installed in the wrong location in Solaris. * [Bug 2678] nmea_control() now checks 'refclock_params()' result. (4.2.7p481) 2014/11/22 Released by Harlan Stenn * [Bug 2314] Only enable PPS if kernel consumer binding succeeds. -* [Bug 2314] Kernel PPS binding EOPNOTSUPP is a failure condition. +* [Bug 2314] Kernel PPS binding EOPNOTSUPP is a failure condition. * Rename pps_enable to hardpps_enable. (4.2.7p480) 2014/11/21 Released by Harlan Stenn -* [Bug 2677] PATH_MAX isn't #define'd under Windows. +* [Bug 2677] PATH_MAX isn't #define'd under Windows. Regression from the patch fixing Bug 2639. (4.2.7p479) 2014/11/15 Released by Harlan Stenn * [Bug 2651] Certificates with ASN timestamps w/ 4-digit years mis-parsed. diff --git a/CommitLog b/CommitLog index e8aa261..0e87846 100644 --- a/CommitLog +++ b/CommitLog @@ -1,3 +1,7882 @@ +ChangeSet@1.3320, 2015-04-07 04:28:16-04:00, stenn@deacon.udel.edu + NTP_4_2_8P2 + TAG: NTP_4_2_8P2 + + ChangeLog@1.1633 +1 -0 + NTP_4_2_8P2 + + ntpd/invoke-ntp.conf.texi@1.182 +1 -1 + NTP_4_2_8P2 + + ntpd/invoke-ntp.keys.texi@1.178 +1 -1 + NTP_4_2_8P2 + + ntpd/invoke-ntpd.texi@1.495 +2 -2 + NTP_4_2_8P2 + + ntpd/ntp.conf.5man@1.216 +3 -3 + NTP_4_2_8P2 + + ntpd/ntp.conf.5mdoc@1.216 +2 -2 + NTP_4_2_8P2 + + ntpd/ntp.conf.html@1.173 +1 -1 + NTP_4_2_8P2 + + ntpd/ntp.conf.man.in@1.216 +3 -3 + NTP_4_2_8P2 + + ntpd/ntp.conf.mdoc.in@1.216 +2 -2 + NTP_4_2_8P2 + + ntpd/ntp.keys.5man@1.212 +2 -2 + NTP_4_2_8P2 + + ntpd/ntp.keys.5mdoc@1.212 +2 -2 + NTP_4_2_8P2 + + ntpd/ntp.keys.html@1.174 +1 -1 + NTP_4_2_8P2 + + ntpd/ntp.keys.man.in@1.212 +2 -2 + NTP_4_2_8P2 + + ntpd/ntp.keys.mdoc.in@1.212 +2 -2 + NTP_4_2_8P2 + + ntpd/ntpd-opts.c@1.517 +245 -245 + NTP_4_2_8P2 + + ntpd/ntpd-opts.h@1.516 +3 -3 + NTP_4_2_8P2 + + ntpd/ntpd.1ntpdman@1.324 +3 -3 + NTP_4_2_8P2 + + ntpd/ntpd.1ntpdmdoc@1.324 +2 -2 + NTP_4_2_8P2 + + ntpd/ntpd.html@1.168 +2 -2 + NTP_4_2_8P2 + + ntpd/ntpd.man.in@1.324 +3 -3 + NTP_4_2_8P2 + + ntpd/ntpd.mdoc.in@1.324 +2 -2 + NTP_4_2_8P2 + + ntpdc/invoke-ntpdc.texi@1.492 +2 -2 + NTP_4_2_8P2 + + ntpdc/ntpdc-opts.c@1.510 +107 -107 + NTP_4_2_8P2 + + ntpdc/ntpdc-opts.h@1.509 +3 -3 + NTP_4_2_8P2 + + ntpdc/ntpdc.1ntpdcman@1.323 +3 -3 + NTP_4_2_8P2 + + ntpdc/ntpdc.1ntpdcmdoc@1.323 +2 -2 + NTP_4_2_8P2 + + ntpdc/ntpdc.html@1.336 +2 -2 + NTP_4_2_8P2 + + ntpdc/ntpdc.man.in@1.323 +3 -3 + NTP_4_2_8P2 + + ntpdc/ntpdc.mdoc.in@1.323 +2 -2 + NTP_4_2_8P2 + + ntpq/invoke-ntpq.texi@1.498 +2 -2 + NTP_4_2_8P2 + + ntpq/ntpq-opts.c@1.515 +106 -106 + NTP_4_2_8P2 + + ntpq/ntpq-opts.h@1.513 +3 -3 + NTP_4_2_8P2 + + ntpq/ntpq.1ntpqman@1.326 +3 -3 + NTP_4_2_8P2 + + ntpq/ntpq.1ntpqmdoc@1.326 +2 -2 + NTP_4_2_8P2 + + ntpq/ntpq.html@1.165 +2 -2 + NTP_4_2_8P2 + + ntpq/ntpq.man.in@1.326 +3 -3 + NTP_4_2_8P2 + + ntpq/ntpq.mdoc.in@1.326 +2 -2 + NTP_4_2_8P2 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.494 +2 -2 + NTP_4_2_8P2 + + ntpsnmpd/ntpsnmpd-opts.c@1.512 +68 -68 + NTP_4_2_8P2 + + ntpsnmpd/ntpsnmpd-opts.h@1.511 +3 -3 + NTP_4_2_8P2 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.323 +3 -3 + NTP_4_2_8P2 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.323 +2 -2 + NTP_4_2_8P2 + + ntpsnmpd/ntpsnmpd.html@1.163 +1 -1 + NTP_4_2_8P2 + + ntpsnmpd/ntpsnmpd.man.in@1.323 +3 -3 + NTP_4_2_8P2 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.323 +2 -2 + NTP_4_2_8P2 + + packageinfo.sh@1.509 +2 -2 + NTP_4_2_8P2 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.84 +3 -3 + NTP_4_2_8P2 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.85 +2 -2 + NTP_4_2_8P2 + + scripts/calc_tickadj/calc_tickadj.html@1.86 +1 -1 + NTP_4_2_8P2 + + scripts/calc_tickadj/calc_tickadj.man.in@1.83 +3 -3 + NTP_4_2_8P2 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.85 +2 -2 + NTP_4_2_8P2 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.88 +1 -1 + NTP_4_2_8P2 + + scripts/invoke-plot_summary.texi@1.105 +2 -2 + NTP_4_2_8P2 + + scripts/invoke-summary.texi@1.105 +2 -2 + NTP_4_2_8P2 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.315 +2 -2 + NTP_4_2_8P2 + + scripts/ntp-wait/ntp-wait-opts@1.51 +2 -2 + NTP_4_2_8P2 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.312 +3 -3 + NTP_4_2_8P2 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.313 +2 -2 + NTP_4_2_8P2 + + scripts/ntp-wait/ntp-wait.html@1.332 +2 -2 + NTP_4_2_8P2 + + scripts/ntp-wait/ntp-wait.man.in@1.312 +3 -3 + NTP_4_2_8P2 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.313 +2 -2 + NTP_4_2_8P2 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.103 +2 -2 + NTP_4_2_8P2 + + scripts/ntpsweep/ntpsweep-opts@1.53 +2 -2 + NTP_4_2_8P2 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.91 +3 -3 + NTP_4_2_8P2 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.91 +2 -2 + NTP_4_2_8P2 + + scripts/ntpsweep/ntpsweep.html@1.104 +2 -2 + NTP_4_2_8P2 + + scripts/ntpsweep/ntpsweep.man.in@1.91 +3 -3 + NTP_4_2_8P2 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.92 +2 -2 + NTP_4_2_8P2 + + scripts/ntptrace/invoke-ntptrace.texi@1.104 +2 -2 + NTP_4_2_8P2 + + scripts/ntptrace/ntptrace-opts@1.53 +2 -2 + NTP_4_2_8P2 + + scripts/ntptrace/ntptrace.1ntptraceman@1.91 +3 -3 + NTP_4_2_8P2 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.92 +2 -2 + NTP_4_2_8P2 + + scripts/ntptrace/ntptrace.html@1.105 +2 -2 + NTP_4_2_8P2 + + scripts/ntptrace/ntptrace.man.in@1.91 +3 -3 + NTP_4_2_8P2 + + scripts/ntptrace/ntptrace.mdoc.in@1.93 +2 -2 + NTP_4_2_8P2 + + scripts/plot_summary-opts@1.53 +2 -2 + NTP_4_2_8P2 + + scripts/plot_summary.1plot_summaryman@1.103 +3 -3 + NTP_4_2_8P2 + + scripts/plot_summary.1plot_summarymdoc@1.103 +2 -2 + NTP_4_2_8P2 + + scripts/plot_summary.html@1.106 +2 -2 + NTP_4_2_8P2 + + scripts/plot_summary.man.in@1.103 +3 -3 + NTP_4_2_8P2 + + scripts/plot_summary.mdoc.in@1.103 +2 -2 + NTP_4_2_8P2 + + scripts/summary-opts@1.53 +2 -2 + NTP_4_2_8P2 + + scripts/summary.1summaryman@1.103 +3 -3 + NTP_4_2_8P2 + + scripts/summary.1summarymdoc@1.103 +2 -2 + NTP_4_2_8P2 + + scripts/summary.html@1.106 +2 -2 + NTP_4_2_8P2 + + scripts/summary.man.in@1.103 +3 -3 + NTP_4_2_8P2 + + scripts/summary.mdoc.in@1.103 +2 -2 + NTP_4_2_8P2 + + scripts/update-leap/invoke-update-leap.texi@1.4 +1 -1 + NTP_4_2_8P2 + + scripts/update-leap/update-leap-opts@1.4 +2 -2 + NTP_4_2_8P2 + + scripts/update-leap/update-leap.1update-leapman@1.4 +3 -3 + NTP_4_2_8P2 + + scripts/update-leap/update-leap.1update-leapmdoc@1.4 +2 -2 + NTP_4_2_8P2 + + scripts/update-leap/update-leap.html@1.4 +1 -1 + NTP_4_2_8P2 + + scripts/update-leap/update-leap.man.in@1.4 +3 -3 + NTP_4_2_8P2 + + scripts/update-leap/update-leap.mdoc.in@1.4 +2 -2 + NTP_4_2_8P2 + + sntp/invoke-sntp.texi@1.492 +2 -2 + NTP_4_2_8P2 + + sntp/sntp-opts.c@1.511 +159 -159 + NTP_4_2_8P2 + + sntp/sntp-opts.h@1.509 +3 -3 + NTP_4_2_8P2 + + sntp/sntp.1sntpman@1.327 +3 -3 + NTP_4_2_8P2 + + sntp/sntp.1sntpmdoc@1.327 +2 -2 + NTP_4_2_8P2 + + sntp/sntp.html@1.507 +2 -2 + NTP_4_2_8P2 + + sntp/sntp.man.in@1.327 +3 -3 + NTP_4_2_8P2 + + sntp/sntp.mdoc.in@1.327 +2 -2 + NTP_4_2_8P2 + + util/invoke-ntp-keygen.texi@1.495 +2 -2 + NTP_4_2_8P2 + + util/ntp-keygen-opts.c@1.513 +173 -173 + NTP_4_2_8P2 + + util/ntp-keygen-opts.h@1.511 +3 -3 + NTP_4_2_8P2 + + util/ntp-keygen.1ntp-keygenman@1.323 +3 -3 + NTP_4_2_8P2 + + util/ntp-keygen.1ntp-keygenmdoc@1.323 +2 -2 + NTP_4_2_8P2 + + util/ntp-keygen.html@1.169 +2 -2 + NTP_4_2_8P2 + + util/ntp-keygen.man.in@1.323 +3 -3 + NTP_4_2_8P2 + + util/ntp-keygen.mdoc.in@1.323 +2 -2 + NTP_4_2_8P2 + +ChangeSet@1.3319, 2015-04-07 04:05:46-04:00, stenn@deacon.udel.edu + ntp-4.2.8p2 + + packageinfo.sh@1.508 +2 -2 + ntp-4.2.8p2 + +ChangeSet@1.3318, 2015-04-07 07:57:32+00:00, stenn@psp-fb1.ntp.org + NEWS update + + NEWS@1.135 +4 -2 + NEWS update + +ChangeSet@1.3314.1.3, 2015-04-03 03:56:38-04:00, stenn@deacon.udel.edu + NTP_4_2_8P2_RC3 + TAG: NTP_4_2_8P2_RC3 + + ChangeLog@1.1629.1.3 +1 -0 + NTP_4_2_8P2_RC3 + + ntpd/invoke-ntp.conf.texi@1.181 +1 -1 + NTP_4_2_8P2_RC3 + + ntpd/invoke-ntp.keys.texi@1.177 +1 -1 + NTP_4_2_8P2_RC3 + + ntpd/invoke-ntpd.texi@1.494 +2 -2 + NTP_4_2_8P2_RC3 + + ntpd/ntp.conf.5man@1.215 +3 -3 + NTP_4_2_8P2_RC3 + + ntpd/ntp.conf.5mdoc@1.215 +1 -1 + NTP_4_2_8P2_RC3 + + ntpd/ntp.conf.html@1.172 +1 -1 + NTP_4_2_8P2_RC3 + + ntpd/ntp.conf.man.in@1.215 +3 -3 + NTP_4_2_8P2_RC3 + + ntpd/ntp.conf.mdoc.in@1.215 +1 -1 + NTP_4_2_8P2_RC3 + + ntpd/ntp.keys.5man@1.211 +2 -2 + NTP_4_2_8P2_RC3 + + ntpd/ntp.keys.5mdoc@1.211 +1 -1 + NTP_4_2_8P2_RC3 + + ntpd/ntp.keys.html@1.173 +1 -1 + NTP_4_2_8P2_RC3 + + ntpd/ntp.keys.man.in@1.211 +2 -2 + NTP_4_2_8P2_RC3 + + ntpd/ntp.keys.mdoc.in@1.211 +1 -1 + NTP_4_2_8P2_RC3 + + ntpd/ntpd-opts.c@1.516 +7 -7 + NTP_4_2_8P2_RC3 + + ntpd/ntpd-opts.h@1.515 +3 -3 + NTP_4_2_8P2_RC3 + + ntpd/ntpd.1ntpdman@1.323 +3 -3 + NTP_4_2_8P2_RC3 + + ntpd/ntpd.1ntpdmdoc@1.323 +1 -1 + NTP_4_2_8P2_RC3 + + ntpd/ntpd.html@1.167 +2 -2 + NTP_4_2_8P2_RC3 + + ntpd/ntpd.man.in@1.323 +3 -3 + NTP_4_2_8P2_RC3 + + ntpd/ntpd.mdoc.in@1.323 +1 -1 + NTP_4_2_8P2_RC3 + + ntpdc/invoke-ntpdc.texi@1.491 +2 -2 + NTP_4_2_8P2_RC3 + + ntpdc/ntpdc-opts.c@1.509 +7 -7 + NTP_4_2_8P2_RC3 + + ntpdc/ntpdc-opts.h@1.508 +3 -3 + NTP_4_2_8P2_RC3 + + ntpdc/ntpdc.1ntpdcman@1.322 +3 -3 + NTP_4_2_8P2_RC3 + + ntpdc/ntpdc.1ntpdcmdoc@1.322 +1 -1 + NTP_4_2_8P2_RC3 + + ntpdc/ntpdc.html@1.335 +2 -2 + NTP_4_2_8P2_RC3 + + ntpdc/ntpdc.man.in@1.322 +3 -3 + NTP_4_2_8P2_RC3 + + ntpdc/ntpdc.mdoc.in@1.322 +1 -1 + NTP_4_2_8P2_RC3 + + ntpq/invoke-ntpq.texi@1.497 +2 -2 + NTP_4_2_8P2_RC3 + + ntpq/ntpq-opts.c@1.514 +7 -7 + NTP_4_2_8P2_RC3 + + ntpq/ntpq-opts.h@1.512 +3 -3 + NTP_4_2_8P2_RC3 + + ntpq/ntpq.1ntpqman@1.325 +3 -3 + NTP_4_2_8P2_RC3 + + ntpq/ntpq.1ntpqmdoc@1.325 +1 -1 + NTP_4_2_8P2_RC3 + + ntpq/ntpq.html@1.164 +2 -2 + NTP_4_2_8P2_RC3 + + ntpq/ntpq.man.in@1.325 +3 -3 + NTP_4_2_8P2_RC3 + + ntpq/ntpq.mdoc.in@1.325 +1 -1 + NTP_4_2_8P2_RC3 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.493 +2 -2 + NTP_4_2_8P2_RC3 + + ntpsnmpd/ntpsnmpd-opts.c@1.511 +7 -7 + NTP_4_2_8P2_RC3 + + ntpsnmpd/ntpsnmpd-opts.h@1.510 +3 -3 + NTP_4_2_8P2_RC3 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.322 +3 -3 + NTP_4_2_8P2_RC3 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.322 +1 -1 + NTP_4_2_8P2_RC3 + + ntpsnmpd/ntpsnmpd.html@1.162 +1 -1 + NTP_4_2_8P2_RC3 + + ntpsnmpd/ntpsnmpd.man.in@1.322 +3 -3 + NTP_4_2_8P2_RC3 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.322 +1 -1 + NTP_4_2_8P2_RC3 + + packageinfo.sh@1.507 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.83 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.84 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/calc_tickadj/calc_tickadj.html@1.85 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/calc_tickadj/calc_tickadj.man.in@1.82 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.84 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.87 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/invoke-plot_summary.texi@1.104 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/invoke-summary.texi@1.104 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.314 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/ntp-wait/ntp-wait-opts@1.50 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.311 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.312 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/ntp-wait/ntp-wait.html@1.331 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/ntp-wait/ntp-wait.man.in@1.311 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.312 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.102 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/ntpsweep/ntpsweep-opts@1.52 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.90 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.90 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/ntpsweep/ntpsweep.html@1.103 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/ntpsweep/ntpsweep.man.in@1.90 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.91 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/ntptrace/invoke-ntptrace.texi@1.103 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/ntptrace/ntptrace-opts@1.52 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/ntptrace/ntptrace.1ntptraceman@1.90 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.91 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/ntptrace/ntptrace.html@1.104 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/ntptrace/ntptrace.man.in@1.90 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/ntptrace/ntptrace.mdoc.in@1.92 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/plot_summary-opts@1.52 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/plot_summary.1plot_summaryman@1.102 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/plot_summary.1plot_summarymdoc@1.102 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/plot_summary.html@1.105 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/plot_summary.man.in@1.102 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/plot_summary.mdoc.in@1.102 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/summary-opts@1.52 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/summary.1summaryman@1.102 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/summary.1summarymdoc@1.102 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/summary.html@1.105 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/summary.man.in@1.102 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/summary.mdoc.in@1.102 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/update-leap/invoke-update-leap.texi@1.3 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/update-leap/update-leap-opts@1.3 +2 -2 + NTP_4_2_8P2_RC3 + + scripts/update-leap/update-leap.1update-leapman@1.3 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/update-leap/update-leap.1update-leapmdoc@1.3 +1 -1 + NTP_4_2_8P2_RC3 + + scripts/update-leap/update-leap.html@1.3 +6 -5 + NTP_4_2_8P2_RC3 + + scripts/update-leap/update-leap.man.in@1.3 +3 -3 + NTP_4_2_8P2_RC3 + + scripts/update-leap/update-leap.mdoc.in@1.3 +1 -1 + NTP_4_2_8P2_RC3 + + sntp/invoke-sntp.texi@1.491 +2 -2 + NTP_4_2_8P2_RC3 + + sntp/sntp-opts.c@1.510 +7 -7 + NTP_4_2_8P2_RC3 + + sntp/sntp-opts.h@1.508 +3 -3 + NTP_4_2_8P2_RC3 + + sntp/sntp.1sntpman@1.326 +3 -3 + NTP_4_2_8P2_RC3 + + sntp/sntp.1sntpmdoc@1.326 +1 -1 + NTP_4_2_8P2_RC3 + + sntp/sntp.html@1.506 +2 -2 + NTP_4_2_8P2_RC3 + + sntp/sntp.man.in@1.326 +3 -3 + NTP_4_2_8P2_RC3 + + sntp/sntp.mdoc.in@1.326 +1 -1 + NTP_4_2_8P2_RC3 + + util/invoke-ntp-keygen.texi@1.494 +2 -2 + NTP_4_2_8P2_RC3 + + util/ntp-keygen-opts.c@1.512 +7 -7 + NTP_4_2_8P2_RC3 + + util/ntp-keygen-opts.h@1.510 +3 -3 + NTP_4_2_8P2_RC3 + + util/ntp-keygen.1ntp-keygenman@1.322 +3 -3 + NTP_4_2_8P2_RC3 + + util/ntp-keygen.1ntp-keygenmdoc@1.322 +1 -1 + NTP_4_2_8P2_RC3 + + util/ntp-keygen.html@1.168 +2 -2 + NTP_4_2_8P2_RC3 + + util/ntp-keygen.man.in@1.322 +3 -3 + NTP_4_2_8P2_RC3 + + util/ntp-keygen.mdoc.in@1.322 +1 -1 + NTP_4_2_8P2_RC3 + +ChangeSet@1.3314.1.2, 2015-04-03 03:35:54-04:00, stenn@deacon.udel.edu + [Bug 2763] Fix for different thresholds for forward and backward steps + + ChangeLog@1.1629.1.2 +3 -0 + [Bug 2763] Fix for different thresholds for forward and backward steps + + ntpd/ntp_loopfilter.c@1.183 +2 -2 + [Bug 2763] Fix for different thresholds for forward and backward steps + +ChangeSet@1.3314.1.1, 2015-04-03 01:16:34-04:00, stenn@deacon.udel.edu + NTP_4_2_8P2_RC2 + TAG: NTP_4_2_8P2_RC2 + + ChangeLog@1.1629.1.1 +1 -0 + NTP_4_2_8P2_RC2 + + ntpd/invoke-ntp.conf.texi@1.180 +1 -1 + NTP_4_2_8P2_RC2 + + ntpd/invoke-ntp.keys.texi@1.176 +1 -1 + NTP_4_2_8P2_RC2 + + ntpd/invoke-ntpd.texi@1.493 +2 -2 + NTP_4_2_8P2_RC2 + + ntpd/ntp.conf.5man@1.214 +3 -3 + NTP_4_2_8P2_RC2 + + ntpd/ntp.conf.5mdoc@1.214 +2 -2 + NTP_4_2_8P2_RC2 + + ntpd/ntp.conf.html@1.171 +1 -1 + NTP_4_2_8P2_RC2 + + ntpd/ntp.conf.man.in@1.214 +3 -3 + NTP_4_2_8P2_RC2 + + ntpd/ntp.conf.mdoc.in@1.214 +2 -2 + NTP_4_2_8P2_RC2 + + ntpd/ntp.keys.5man@1.210 +2 -2 + NTP_4_2_8P2_RC2 + + ntpd/ntp.keys.5mdoc@1.210 +2 -2 + NTP_4_2_8P2_RC2 + + ntpd/ntp.keys.html@1.172 +1 -1 + NTP_4_2_8P2_RC2 + + ntpd/ntp.keys.man.in@1.210 +2 -2 + NTP_4_2_8P2_RC2 + + ntpd/ntp.keys.mdoc.in@1.210 +2 -2 + NTP_4_2_8P2_RC2 + + ntpd/ntpd-opts.c@1.515 +7 -7 + NTP_4_2_8P2_RC2 + + ntpd/ntpd-opts.h@1.514 +3 -3 + NTP_4_2_8P2_RC2 + + ntpd/ntpd.1ntpdman@1.322 +3 -3 + NTP_4_2_8P2_RC2 + + ntpd/ntpd.1ntpdmdoc@1.322 +2 -2 + NTP_4_2_8P2_RC2 + + ntpd/ntpd.html@1.166 +50 -26 + NTP_4_2_8P2_RC2 + + ntpd/ntpd.man.in@1.322 +3 -3 + NTP_4_2_8P2_RC2 + + ntpd/ntpd.mdoc.in@1.322 +2 -2 + NTP_4_2_8P2_RC2 + + ntpdc/invoke-ntpdc.texi@1.490 +2 -2 + NTP_4_2_8P2_RC2 + + ntpdc/ntpdc-opts.c@1.508 +7 -7 + NTP_4_2_8P2_RC2 + + ntpdc/ntpdc-opts.h@1.507 +3 -3 + NTP_4_2_8P2_RC2 + + ntpdc/ntpdc.1ntpdcman@1.321 +3 -3 + NTP_4_2_8P2_RC2 + + ntpdc/ntpdc.1ntpdcmdoc@1.321 +2 -2 + NTP_4_2_8P2_RC2 + + ntpdc/ntpdc.html@1.334 +2 -2 + NTP_4_2_8P2_RC2 + + ntpdc/ntpdc.man.in@1.321 +3 -3 + NTP_4_2_8P2_RC2 + + ntpdc/ntpdc.mdoc.in@1.321 +2 -2 + NTP_4_2_8P2_RC2 + + ntpq/invoke-ntpq.texi@1.496 +2 -2 + NTP_4_2_8P2_RC2 + + ntpq/ntpq-opts.c@1.513 +7 -7 + NTP_4_2_8P2_RC2 + + ntpq/ntpq-opts.h@1.511 +3 -3 + NTP_4_2_8P2_RC2 + + ntpq/ntpq.1ntpqman@1.324 +3 -3 + NTP_4_2_8P2_RC2 + + ntpq/ntpq.1ntpqmdoc@1.324 +2 -2 + NTP_4_2_8P2_RC2 + + ntpq/ntpq.html@1.163 +2 -2 + NTP_4_2_8P2_RC2 + + ntpq/ntpq.man.in@1.324 +3 -3 + NTP_4_2_8P2_RC2 + + ntpq/ntpq.mdoc.in@1.324 +2 -2 + NTP_4_2_8P2_RC2 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.492 +2 -2 + NTP_4_2_8P2_RC2 + + ntpsnmpd/ntpsnmpd-opts.c@1.510 +7 -7 + NTP_4_2_8P2_RC2 + + ntpsnmpd/ntpsnmpd-opts.h@1.509 +3 -3 + NTP_4_2_8P2_RC2 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.321 +3 -3 + NTP_4_2_8P2_RC2 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.321 +2 -2 + NTP_4_2_8P2_RC2 + + ntpsnmpd/ntpsnmpd.html@1.161 +1 -1 + NTP_4_2_8P2_RC2 + + ntpsnmpd/ntpsnmpd.man.in@1.321 +3 -3 + NTP_4_2_8P2_RC2 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.321 +2 -2 + NTP_4_2_8P2_RC2 + + packageinfo.sh@1.506 +1 -1 + NTP_4_2_8P2_RC2 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.82 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.83 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/calc_tickadj/calc_tickadj.html@1.84 +1 -1 + NTP_4_2_8P2_RC2 + + scripts/calc_tickadj/calc_tickadj.man.in@1.81 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.83 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.86 +1 -1 + NTP_4_2_8P2_RC2 + + scripts/invoke-plot_summary.texi@1.103 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/invoke-summary.texi@1.103 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.313 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntp-wait/ntp-wait-opts@1.49 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.310 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.311 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntp-wait/ntp-wait.html@1.330 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntp-wait/ntp-wait.man.in@1.310 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.311 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.101 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntpsweep/ntpsweep-opts@1.51 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.89 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.89 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntpsweep/ntpsweep.html@1.102 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntpsweep/ntpsweep.man.in@1.89 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.90 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntptrace/invoke-ntptrace.texi@1.102 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntptrace/ntptrace-opts@1.51 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntptrace/ntptrace.1ntptraceman@1.89 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.90 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntptrace/ntptrace.html@1.103 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/ntptrace/ntptrace.man.in@1.89 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/ntptrace/ntptrace.mdoc.in@1.91 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/plot_summary-opts@1.51 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/plot_summary.1plot_summaryman@1.101 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/plot_summary.1plot_summarymdoc@1.101 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/plot_summary.html@1.104 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/plot_summary.man.in@1.101 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/plot_summary.mdoc.in@1.101 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/summary-opts@1.51 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/summary.1summaryman@1.101 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/summary.1summarymdoc@1.101 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/summary.html@1.104 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/summary.man.in@1.101 +3 -3 + NTP_4_2_8P2_RC2 + + scripts/summary.mdoc.in@1.101 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/update-leap/invoke-update-leap.texi@1.2 +6 -5 + NTP_4_2_8P2_RC2 + + scripts/update-leap/update-leap-opts@1.2 +2 -2 + NTP_4_2_8P2_RC2 + + scripts/update-leap/update-leap.1update-leapman@1.2 +7 -6 + NTP_4_2_8P2_RC2 + + scripts/update-leap/update-leap.1update-leapmdoc@1.2 +6 -5 + NTP_4_2_8P2_RC2 + + scripts/update-leap/update-leap.html@1.2 +48 -72 + NTP_4_2_8P2_RC2 + + scripts/update-leap/update-leap.man.in@1.2 +7 -6 + NTP_4_2_8P2_RC2 + + scripts/update-leap/update-leap.mdoc.in@1.2 +6 -5 + NTP_4_2_8P2_RC2 + + sntp/invoke-sntp.texi@1.490 +2 -2 + NTP_4_2_8P2_RC2 + + sntp/sntp-opts.c@1.509 +7 -7 + NTP_4_2_8P2_RC2 + + sntp/sntp-opts.h@1.507 +3 -3 + NTP_4_2_8P2_RC2 + + sntp/sntp.1sntpman@1.325 +3 -3 + NTP_4_2_8P2_RC2 + + sntp/sntp.1sntpmdoc@1.325 +2 -2 + NTP_4_2_8P2_RC2 + + sntp/sntp.html@1.505 +111 -135 + NTP_4_2_8P2_RC2 + + sntp/sntp.man.in@1.325 +3 -3 + NTP_4_2_8P2_RC2 + + sntp/sntp.mdoc.in@1.325 +2 -2 + NTP_4_2_8P2_RC2 + + util/invoke-ntp-keygen.texi@1.493 +2 -2 + NTP_4_2_8P2_RC2 + + util/ntp-keygen-opts.c@1.511 +7 -7 + NTP_4_2_8P2_RC2 + + util/ntp-keygen-opts.h@1.509 +3 -3 + NTP_4_2_8P2_RC2 + + util/ntp-keygen.1ntp-keygenman@1.321 +3 -3 + NTP_4_2_8P2_RC2 + + util/ntp-keygen.1ntp-keygenmdoc@1.321 +2 -2 + NTP_4_2_8P2_RC2 + + util/ntp-keygen.html@1.167 +2 -2 + NTP_4_2_8P2_RC2 + + util/ntp-keygen.man.in@1.321 +3 -3 + NTP_4_2_8P2_RC2 + + util/ntp-keygen.mdoc.in@1.321 +2 -2 + NTP_4_2_8P2_RC2 + +ChangeSet@1.3314, 2015-04-03 02:36:18+00:00, stenn@psp-fb1.ntp.org + merge cleanup + + NEWS@1.133 +6 -5 + merge cleanup + +ChangeSet@1.3313, 2015-04-03 02:31:18+00:00, stenn@psp-fb1.ntp.org + merge cleanup + + ChangeLog@1.1629 +3 -3 + merge cleanup + +ChangeSet@1.3308.2.11, 2015-04-02 21:42:37+00:00, stenn@psp-deb1.ntp.org + [Bug 2592] FLAG_TSTAMP_PPS cleanup for refclock_parse.c + + ChangeLog@1.1625.2.9 +1 -0 + [Bug 2592] FLAG_TSTAMP_PPS cleanup for refclock_parse.c + +ChangeSet@1.3308.2.10, 2015-04-02 20:17:55+00:00, stenn@psp-deb1.ntp.org + merge cleanup + + ChangeLog@1.1625.2.8 +1 -3 + merge cleanup + +ChangeSet@1.3308.2.9, 2015-04-02 21:41:22+02:00, jnperlin@nemesis.localnet + [Bug 2795] Cannot build without OpenSLL (on Win32). + fixed minor warning + + ChangeLog@1.1625.2.7 +3 -0 + [Bug 2795] Cannot build without OpenSLL (on Win32). + fixed minor warning + + include/ntp_md5.h@1.10 +1 -1 + [Bug 2795] Cannot build without OpenSLL (on Win32). + OpenSSL declares EVP_md5() as function without arguments; surrogate should do the same. + +ChangeSet@1.3308.6.2, 2015-04-02 07:45:04+00:00, stenn@psp-deb1.ntp.org + cleanup + + ChangeLog@1.1625.6.3 +0 -2 + cleanup + + ChangeLog@1.1625.6.2 +6 -0 + + ntpd/invoke-ntpd.texi@1.492 +20 -3 + [Bug 2788] New -G flag (force step once) cleanup. + + ntpd/ntp_loopfilter.c@1.182 +17 -6 + [Bug 2794] Clean up kernel clock status reports. + Trailing whitespace cleanup. + + ntpd/ntpd-opts.c@1.514 +249 -249 + Autogenerated file. + + ntpd/ntpd-opts.h@1.513 +3 -3 + Autogenerated file. + + ntpd/ntpd.1ntpdman@1.321 +19 -5 + Autogenerated file. + + ntpd/ntpd.1ntpdmdoc@1.321 +17 -4 + Autogenerated file. + + ntpd/ntpd.man.in@1.321 +19 -5 + Autogenerated file. + + ntpd/ntpd.mdoc.in@1.321 +17 -4 + Autogenerated file. + + ntpd/ntpdbase-opts.def@1.29 +9 -6 + [Bug 2788] New flag -G (force_step_once) - documentation cleanup. + +ChangeSet@1.3308.2.7, 2015-04-02 07:34:40+00:00, stenn@psp-deb1.ntp.org + Simple cleanup to html/build.html + + ChangeLog@1.1625.2.5 +1 -0 + Simple cleanup to html/build.html + + html/build.html@1.28 +2 -2 + Simple cleanup to html/build.html + +ChangeSet@1.3308.2.6, 2015-04-02 03:15:42+00:00, stenn@psp-fb1.ntp.org + typos + + ChangeLog@1.1625.2.4 +4 -4 + typos + +ChangeSet@1.3308.5.2, 2015-04-01 11:08:14+00:00, stenn@psp-deb1.ntp.org + [Bug 2798] sntp should decode and display the leap indicator + + html/sntp.html@1.12 +3 -3 + [Bug 2798] sntp should decode and display the leap indicator + + sntp/invoke-sntp.texi@1.489 +4 -3 + [Bug 2798] sntp should decode and display the leap indicator + + sntp/sntp-opts.c@1.508 +1 -1 + [Bug 2798] sntp should decode and display the leap indicator + + sntp/sntp-opts.def@1.47 +2 -1 + [Bug 2798] sntp should decode and display the leap indicator + + sntp/sntp-opts.h@1.506 +1 -1 + [Bug 2798] sntp should decode and display the leap indicator + + sntp/sntp.1sntpman@1.324 +5 -4 + [Bug 2798] sntp should decode and display the leap indicator + + sntp/sntp.1sntpmdoc@1.324 +4 -3 + [Bug 2798] sntp should decode and display the leap indicator + + sntp/sntp.html@1.504 +136 -111 + [Bug 2798] sntp should decode and display the leap indicator + + sntp/sntp.man.in@1.324 +5 -4 + [Bug 2798] sntp should decode and display the leap indicator + + sntp/sntp.mdoc.in@1.324 +4 -3 + [Bug 2798] sntp should decode and display the leap indicator + +ChangeSet@1.3308.5.1, 2015-04-01 10:44:24+00:00, stenn@psp-fb1.ntp.org + [Bug 2798] sntp should decode and display the leap indicator + + ChangeLog@1.1625.5.1 +3 -0 + [Bug 2798] sntp should decode and display the leap indicator + + sntp/main.c@1.95 +21 -1 + [Bug 2798] sntp should decode and display the leap indicator + +ChangeSet@1.3308.4.1, 2015-03-30 20:14:46+02:00, jnperlin@hydra.(none) + [Bug 2797] ntp-keygen trapped in endless loop for MD5 keys on big-endian machines + + ChangeLog@1.1625.4.1 +3 -0 + [Bug 2797] ntp-keygen trapped in endless loop for MD5 keys on big-endian machines + + util/ntp-keygen.c@1.104 +4 -4 + [Bug 2797] ntp-keygen trapped in endless loop for MD5 keys on big-endian machines + +ChangeSet@1.3308.3.1, 2015-03-30 19:39:17+02:00, jnperlin@nemesis.localnet + [Bug 2796] ntp-keygen crashes in 'getclock()' on Win32 + + ChangeLog@1.1625.3.1 +2 -0 + [Bug 2796] ntp-keygen crashes in 'getclock()' on Win32 + + ports/winnt/libntp/getclock.c@1.5 +2 -0 + [Bug 2796] ntp-keygen crashes in 'getclock()' on Win32 + make sure 'init_win_precise_time()' gets called + +ChangeSet@1.3308.2.4, 2015-03-30 19:10:12+02:00, jnperlin@nemesis.localnet + [Bug 2795] Cannot build without OpenSLL (on Win32) + Provided a Win32 specific wrapper around libevent/arc4random.c + + ChangeLog@1.1625.2.2 +3 -0 + [Bug 2795] Cannot build without OpenSLL (on Win32) + Provided a Win32 specific wrapper around libevent/arc4random.c + + ports/winnt/libntp/arc4wrap.c@1.1 +84 -0 + [Bug 2795] Cannot build without OpenSLL (on Win32) + Provided a Win32 specific wrapper around libevent/arc4random.c + + ports/winnt/libntp/arc4wrap.c@1.0 +0 -0 + + ports/winnt/vs2005/libntp.vcproj@1.24 +4 -0 + [Bug 2795] Cannot build without OpenSLL (on Win32) + Provided a Win32 specific wrapper around libevent/arc4random.c + + ports/winnt/vs2008/libntp/libntp.vcproj@1.52 +6 -2 + [Bug 2795] Cannot build without OpenSLL (on Win32) + Provided a Win32 specific wrapper around libevent/arc4random.c + + ports/winnt/vs2013/libntp/libntp.vcxproj@1.6 +1 -0 + [Bug 2795] Cannot build without OpenSLL (on Win32) + Provided a Win32 specific wrapper around libevent/arc4random.c + + ports/winnt/vs2013/libntp/libntp.vcxproj.filters@1.4 +6 -0 + [Bug 2795] Cannot build without OpenSLL (on Win32) + Provided a Win32 specific wrapper around libevent/arc4random.c + +ChangeSet@1.3305.3.8, 2015-03-30 15:55:43+02:00, martin@pc-martin.(none) + [Bug 2794] Don't let reports on normal kernel status changes look like errors. + + ChangeLog@1.1622.3.8 +2 -0 + [Bug 2794] Don't let reports on normal kernel status changes look like errors. + + ntpd/ntp_loopfilter.c@1.181 +30 -19 + [Bug 2794] Don't let reports on normal kernel status changes look like errors. + +ChangeSet@1.3305.3.7, 2015-03-30 11:23:48+02:00, martin@pc-martin.(none) + [Bug 2788] New flag -G (force_step_once) + + ChangeLog@1.1622.3.7 +1 -0 + [Bug 2788] New flag -G (force_step_once) + + include/ntpd.h@1.185.1.1 +4 -3 + [Bug 2788] Support new flag -G (force_step_once) + Removed trailing whitespace. + + ntpd/cmd_args.c@1.62 +6 -3 + [Bug 2788] New flag -G (force_step_once) + Removed trailing whitespace. + + ntpd/ntp_loopfilter.c@1.180 +21 -15 + [Bug 2788] New flag -G (force_step_once) + Removed trailing whitespace. + + ntpd/ntpd-opts.c@1.511.1.1 +255 -225 + [Bug 2788] New flag -G (force_step_once) + + ntpd/ntpd-opts.h@1.510.1.1 +36 -29 + [Bug 2788] New flag -G (force_step_once) + + ntpd/ntpdbase-opts.def@1.28 +17 -2 + [Bug 2788] New flag -G (force_step_once) + Removed trailing whitespace. + +ChangeSet@1.3308.1.3, 2015-03-30 09:11:33+00:00, stenn@psp-fb1.ntp.org + Start the RC cycle for ntp-4.2.8p2 + + NEWS@1.130.1.2 +82 -1 + Start the RC cycle for ntp-4.2.8p2 + +ChangeSet@1.3308.2.3, 2015-03-30 04:48:27-04:00, stenn@deacon.udel.edu + NTP_4_2_8P2_RC1 + TAG: NTP_4_2_8P2_RC1 + + ChangeLog@1.1625.2.1 +1 -0 + NTP_4_2_8P2_RC1 + + ntpd/invoke-ntp.conf.texi@1.179 +1 -1 + NTP_4_2_8P2_RC1 + + ntpd/invoke-ntp.keys.texi@1.175 +1 -1 + NTP_4_2_8P2_RC1 + + ntpd/invoke-ntpd.texi@1.491 +2 -2 + NTP_4_2_8P2_RC1 + + ntpd/ntp.conf.5man@1.213 +3 -3 + NTP_4_2_8P2_RC1 + + ntpd/ntp.conf.5mdoc@1.213 +2 -2 + NTP_4_2_8P2_RC1 + + ntpd/ntp.conf.html@1.170 +13 -2 + NTP_4_2_8P2_RC1 + + ntpd/ntp.conf.man.in@1.213 +3 -3 + NTP_4_2_8P2_RC1 + + ntpd/ntp.conf.mdoc.in@1.213 +2 -2 + NTP_4_2_8P2_RC1 + + ntpd/ntp.keys.5man@1.209 +2 -2 + NTP_4_2_8P2_RC1 + + ntpd/ntp.keys.5mdoc@1.209 +2 -2 + NTP_4_2_8P2_RC1 + + ntpd/ntp.keys.html@1.171 +1 -1 + NTP_4_2_8P2_RC1 + + ntpd/ntp.keys.man.in@1.209 +2 -2 + NTP_4_2_8P2_RC1 + + ntpd/ntp.keys.mdoc.in@1.209 +2 -2 + NTP_4_2_8P2_RC1 + + ntpd/ntpd-opts.c@1.512 +239 -239 + NTP_4_2_8P2_RC1 + + ntpd/ntpd-opts.h@1.511 +3 -3 + NTP_4_2_8P2_RC1 + + ntpd/ntpd.1ntpdman@1.320 +3 -3 + NTP_4_2_8P2_RC1 + + ntpd/ntpd.1ntpdmdoc@1.320 +2 -2 + NTP_4_2_8P2_RC1 + + ntpd/ntpd.html@1.165 +2 -2 + NTP_4_2_8P2_RC1 + + ntpd/ntpd.man.in@1.320 +3 -3 + NTP_4_2_8P2_RC1 + + ntpd/ntpd.mdoc.in@1.320 +2 -2 + NTP_4_2_8P2_RC1 + + ntpdc/invoke-ntpdc.texi@1.489 +2 -2 + NTP_4_2_8P2_RC1 + + ntpdc/ntpdc-opts.c@1.507 +107 -107 + NTP_4_2_8P2_RC1 + + ntpdc/ntpdc-opts.h@1.506 +3 -3 + NTP_4_2_8P2_RC1 + + ntpdc/ntpdc.1ntpdcman@1.320 +3 -3 + NTP_4_2_8P2_RC1 + + ntpdc/ntpdc.1ntpdcmdoc@1.320 +2 -2 + NTP_4_2_8P2_RC1 + + ntpdc/ntpdc.html@1.333 +2 -2 + NTP_4_2_8P2_RC1 + + ntpdc/ntpdc.man.in@1.320 +3 -3 + NTP_4_2_8P2_RC1 + + ntpdc/ntpdc.mdoc.in@1.320 +2 -2 + NTP_4_2_8P2_RC1 + + ntpq/invoke-ntpq.texi@1.495 +2 -2 + NTP_4_2_8P2_RC1 + + ntpq/ntpq-opts.c@1.512 +106 -106 + NTP_4_2_8P2_RC1 + + ntpq/ntpq-opts.h@1.510 +3 -3 + NTP_4_2_8P2_RC1 + + ntpq/ntpq.1ntpqman@1.323 +3 -3 + NTP_4_2_8P2_RC1 + + ntpq/ntpq.1ntpqmdoc@1.323 +2 -2 + NTP_4_2_8P2_RC1 + + ntpq/ntpq.html@1.162 +2 -2 + NTP_4_2_8P2_RC1 + + ntpq/ntpq.man.in@1.323 +3 -3 + NTP_4_2_8P2_RC1 + + ntpq/ntpq.mdoc.in@1.323 +2 -2 + NTP_4_2_8P2_RC1 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.491 +2 -2 + NTP_4_2_8P2_RC1 + + ntpsnmpd/ntpsnmpd-opts.c@1.509 +68 -68 + NTP_4_2_8P2_RC1 + + ntpsnmpd/ntpsnmpd-opts.h@1.508 +3 -3 + NTP_4_2_8P2_RC1 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.320 +3 -3 + NTP_4_2_8P2_RC1 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.320 +2 -2 + NTP_4_2_8P2_RC1 + + ntpsnmpd/ntpsnmpd.html@1.160 +1 -1 + NTP_4_2_8P2_RC1 + + ntpsnmpd/ntpsnmpd.man.in@1.320 +3 -3 + NTP_4_2_8P2_RC1 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.320 +2 -2 + NTP_4_2_8P2_RC1 + + packageinfo.sh@1.505 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.81 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.82 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/calc_tickadj/calc_tickadj.html@1.83 +1 -1 + NTP_4_2_8P2_RC1 + + scripts/calc_tickadj/calc_tickadj.man.in@1.80 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.82 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.85 +1 -1 + NTP_4_2_8P2_RC1 + + scripts/invoke-plot_summary.texi@1.102 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/invoke-summary.texi@1.102 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.312 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntp-wait/ntp-wait-opts@1.48 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.309 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.310 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntp-wait/ntp-wait.html@1.329 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntp-wait/ntp-wait.man.in@1.309 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.310 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.100 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntpsweep/ntpsweep-opts@1.50 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.88 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.88 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntpsweep/ntpsweep.html@1.101 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntpsweep/ntpsweep.man.in@1.88 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.89 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntptrace/invoke-ntptrace.texi@1.101 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntptrace/ntptrace-opts@1.50 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntptrace/ntptrace.1ntptraceman@1.88 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.89 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntptrace/ntptrace.html@1.102 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/ntptrace/ntptrace.man.in@1.88 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/ntptrace/ntptrace.mdoc.in@1.90 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/plot_summary-opts@1.50 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/plot_summary.1plot_summaryman@1.100 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/plot_summary.1plot_summarymdoc@1.100 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/plot_summary.html@1.103 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/plot_summary.man.in@1.100 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/plot_summary.mdoc.in@1.100 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/summary-opts@1.50 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/summary.1summaryman@1.100 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/summary.1summarymdoc@1.100 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/summary.html@1.103 +2 -2 + NTP_4_2_8P2_RC1 + + scripts/summary.man.in@1.100 +3 -3 + NTP_4_2_8P2_RC1 + + scripts/summary.mdoc.in@1.100 +2 -2 + NTP_4_2_8P2_RC1 + + sntp/invoke-sntp.texi@1.488 +2 -2 + NTP_4_2_8P2_RC1 + + sntp/sntp-opts.c@1.507 +159 -159 + NTP_4_2_8P2_RC1 + + sntp/sntp-opts.h@1.505 +3 -3 + NTP_4_2_8P2_RC1 + + sntp/sntp.1sntpman@1.323 +3 -3 + NTP_4_2_8P2_RC1 + + sntp/sntp.1sntpmdoc@1.323 +2 -2 + NTP_4_2_8P2_RC1 + + sntp/sntp.html@1.503 +2 -2 + NTP_4_2_8P2_RC1 + + sntp/sntp.man.in@1.323 +3 -3 + NTP_4_2_8P2_RC1 + + sntp/sntp.mdoc.in@1.323 +2 -2 + NTP_4_2_8P2_RC1 + + util/invoke-ntp-keygen.texi@1.492 +2 -2 + NTP_4_2_8P2_RC1 + + util/ntp-keygen-opts.c@1.510 +173 -173 + NTP_4_2_8P2_RC1 + + util/ntp-keygen-opts.h@1.508 +3 -3 + NTP_4_2_8P2_RC1 + + util/ntp-keygen.1ntp-keygenman@1.320 +3 -3 + NTP_4_2_8P2_RC1 + + util/ntp-keygen.1ntp-keygenmdoc@1.320 +2 -2 + NTP_4_2_8P2_RC1 + + util/ntp-keygen.html@1.166 +2 -2 + NTP_4_2_8P2_RC1 + + util/ntp-keygen.man.in@1.320 +3 -3 + NTP_4_2_8P2_RC1 + + util/ntp-keygen.mdoc.in@1.320 +2 -2 + NTP_4_2_8P2_RC1 + +ChangeSet@1.3308.2.2, 2015-03-30 04:25:58-04:00, stenn@deacon.udel.edu + Begin 4.2.8p2-RC1 + + packageinfo.sh@1.504 +1 -1 + Begin 4.2.8p2-RC1 + +ChangeSet@1.3308.2.1, 2015-03-30 08:18:35+00:00, stenn@psp-fb1.ntp.org + Start the RC cycle for ntp-4.2.8p2 + + NEWS@1.130.1.1 +49 -0 + Start the RC cycle for ntp-4.2.8p2 + +ChangeSet@1.3311, 2015-03-29 05:05:41+00:00, stenn@psp-fb1.ntp.org + [Bug 2769] cleannup for update-leap + + ChangeLog@1.1627 +1 -0 + [Bug 2769] cleannup for update-leap + +ChangeSet@1.3310, 2015-03-29 04:10:31+00:00, stenn@psp-fb1.ntp.org + [Bug 2769] cleannup for update-leap + + NEWS@1.131 +8 -0 + [Bug 2769] cleannup for update-leap + + scripts/update-leap/Makefile.am@1.3 +1 -0 + [Bug 2769] cleannup for update-leap + + scripts/update-leap/update-leap-opts.def@1.2 +4 -3 + [Bug 2769] cleannup for update-leap + +ChangeSet@1.3308, 2015-03-29 01:49:10+00:00, stenn@psp-deb1.ntp.org + [Bug 2346] "graceful termination" signals do not do peer cleanup + + ChangeLog@1.1625 +1 -0 + [Bug 2346] "graceful termination" signals do not do peer cleanup + + include/ntpd.h@1.186 +1 -0 + [Bug 2346] "graceful termination" signals do not do peer cleanup + + ntpd/ntp_peer.c@1.154 +20 -0 + [Bug 2346] "graceful termination" signals do not do peer cleanup + + ntpd/ntpd.c@1.159 +1 -0 + [Bug 2346] "graceful termination" signals do not do peer cleanup + +ChangeSet@1.3305.3.6, 2015-03-25 17:32:25+01:00, martin@pc-martin.(none) + [Bug 2592] Account for PPS sources which can provide an accurate absolute time stamp, and status information. + + ChangeLog@1.1622.3.6 +2 -0 + [Bug 2592] Account for PPS sources which can provide an accurate absolute time stamp, and status information. + + include/ntp.h@1.213 +2 -1 + New flag FLAG_TSTAMP_PPS. + + ntpd/ntp_proto.c@1.353.1.2 +2 -1 + [Bug 2592] Account for PPS sources which can provide an accurate absolute time stamp, and status information. + + ntpd/refclock_parse.c@1.78 +2 -2 + [Bug 2592] Parse driver can return absolute timestamp with PPS, and status information. + +ChangeSet@1.3305.3.5, 2015-03-25 17:24:59+01:00, martin@pc-martin.(none) + Fixed indention and removed trailing whitespace. + + ChangeLog@1.1622.3.5 +1 -0 + Fixed indention and removed trailing whitespace. + + include/ntp.h@1.212 +4 -4 + Fixed indention. + + include/parse_conf.h@1.7 +6 -6 + Fixed indention. + + ntpd/ntp_proto.c@1.353.1.1 +27 -27 + Removed trailing whitespace. + + ntpd/refclock_parse.c@1.77 +16 -16 + Fixed indention. + +ChangeSet@1.3305.3.4, 2015-03-22 07:59:12+00:00, stenn@psp-fb1.ntp.org + merge cleanup + + ChangeLog@1.1622.3.4 +0 -1 + merge cleanup + +ChangeSet@1.3305.5.3, 2015-03-22 07:24:07+00:00, stenn@psp-fb1.ntp.org + Bug 2791 -> Bug 2789 + + ChangeLog@1.1622.5.3 +1 -1 + Bug 2791 -> Bug 2789 + +ChangeSet@1.3305.5.2, 2015-03-22 06:59:06+00:00, stenn@psp-fb1.ntp.org + Merge cleanup + + ChangeLog@1.1622.5.2 +22 -22 + Merge cleanup + +ChangeSet@1.3305.4.2, 2015-03-22 03:48:52+00:00, stenn@psp-fb1.ntp.org + [Bug 2769] New script: update-leap + + .point-changed-filelist@1.26 +7 -0 + [Bug 2769] New script: update-leap + + scripts/update-leap/Makefile.am@1.2 +2 -1 + [Bug 2769] New script: update-leap + +ChangeSet@1.3305.4.1, 2015-03-22 03:01:33+00:00, stenn@psp-fb1.ntp.org + [Bug 2769] New script: update-leap + + BitKeeper/etc/ignore@1.86 +1 -0 + added Makefile.in + + ChangeLog@1.1622.4.1 +1 -0 + [Bug 2769] New script: update-leap + + configure.ac@1.585 +8 -7 + [Bug 2769] New script: update-leap + + scripts/Makefile.am@1.40 +1 -0 + [Bug 2769] New script: update-leap + + scripts/update-leap/Makefile.am@1.1 +95 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/Makefile.am + + scripts/update-leap/Makefile.am@1.0 +0 -0 + + scripts/update-leap/invoke-update-leap.menu@1.1 +1 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/invoke-update-leap.menu + + scripts/update-leap/invoke-update-leap.menu@1.0 +0 -0 + + scripts/update-leap/invoke-update-leap.texi@1.1 +169 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/invoke-update-leap.texi + + scripts/update-leap/invoke-update-leap.texi@1.0 +0 -0 + + scripts/update-leap/update-leap@1.1 +434 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/update-leap + + scripts/update-leap/update-leap@1.0 +0 -0 + + scripts/update-leap/update-leap-opts@1.1 +72 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/update-leap-opts + + scripts/update-leap/update-leap-opts@1.0 +0 -0 + + scripts/update-leap/update-leap-opts.def@1.1 +162 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/update-leap-opts.def + + scripts/update-leap/update-leap-opts.def@1.0 +0 -0 + + scripts/update-leap/update-leap.1update-leapman@1.1 +168 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/update-leap.1update-leapman + + scripts/update-leap/update-leap.1update-leapman@1.0 +0 -0 + + scripts/update-leap/update-leap.1update-leapmdoc@1.1 +133 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/update-leap.1update-leapmdoc + + scripts/update-leap/update-leap.1update-leapmdoc@1.0 +0 -0 + + scripts/update-leap/update-leap.html@1.1 +297 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/update-leap.html + + scripts/update-leap/update-leap.html@1.0 +0 -0 + + scripts/update-leap/update-leap.man.in@1.1 +168 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/update-leap.man.in + + scripts/update-leap/update-leap.man.in@1.0 +0 -0 + + scripts/update-leap/update-leap.mdoc.in@1.1 +133 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/update-leap.mdoc.in + + scripts/update-leap/update-leap.mdoc.in@1.0 +0 -0 + + scripts/update-leap/update-leap.texi@1.1 +43 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2769/scripts/update-leap/update-leap.texi + + scripts/update-leap/update-leap.texi@1.0 +0 -0 + + sntp/loc/darwin@1.3 +1 -0 + [Bug 2769] New script: update-leap + + sntp/loc/debian@1.4 +1 -0 + [Bug 2769] New script: update-leap + + sntp/loc/freebsd@1.6 +1 -0 + [Bug 2769] New script: update-leap + + sntp/loc/legacy@1.7 +1 -0 + [Bug 2769] New script: update-leap + + sntp/loc/netbsd@1.4 +1 -0 + [Bug 2769] New script: update-leap + + sntp/loc/solaris@1.7 +1 -0 + [Bug 2769] New script: update-leap + + sntp/m4/ntp_locinfo.m4@1.18 +6 -0 + [Bug 2769] New script: update-leap + +ChangeSet@1.3305.3.1, 2015-03-20 13:03:38+01:00, burnicki@pc-martin4. + [Bug 2790] If ntpd sets the Windows MM timer highest resolution then pause + briefly before measuring system clock precision to yield correct results. + + ChangeLog@1.1622.3.1 +3 -1 + [Bug 2790] If ntpd sets the Windows MM timer highest resolution then pause + briefly before measuring system clock precision to yield correct results. + + ports/winnt/ntpd/nt_clockstuff.c@1.65 +4 -0 + [Bug 2790] If ntpd sets the Windows MM timer highest resolution then pause + briefly before measuring system clock precision to yield correct results. + +ChangeSet@1.3305.2.6, 2015-03-20 11:47:15+01:00, martin@pc-martin.(none) + [Bug 2791] Quiet compiler warnings from libevent. + + ChangeLog@1.1622.2.6 +1 -0 + [Bug 2791] Quiet compiler warnings from libevent. + + sntp/libevent/evthread-internal.h@1.8 +2 -2 + [Bug 2791] Fixed function prototypes to quiet compiler warnings. + +ChangeSet@1.3305.2.5, 2015-03-20 11:36:15+01:00, martin@pc-martin.(none) + [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. + + ChangeLog@1.1622.2.5 +4 -3 + [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. + + include/parse.h@1.12 +3 -3 + [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. + + libparse/clk_meinberg.c@1.14 +7 -4 + [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. + + libparse/clk_rawdcf.c@1.20 +3 -2 + [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. + + libparse/clk_schmid.c@1.13 +3 -3 + [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. + + libparse/parse.c@1.19 +1 -1 + Quiet compiler warning. + + ntpd/refclock_parse.c@1.76 +1 -1 + [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. + + parseutil/dcfd.c@1.28 +26 -25 + [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. + Removed trailing whitespace. + + parseutil/testdcf.c@1.10 +11 -10 + [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. + Removed trailing whitespace and fixed indention. + +ChangeSet@1.3305.2.4, 2015-03-19 17:00:30+01:00, martin@pc-martin.(none) + Added a comment from Juergen Perlinger in ntp_date.c to make the code clearer. + + ChangeLog@1.1622.2.4 +1 -0 + Added a comment from Juergen Perlinger in ntp_date.c to make the code clearer. + + libntp/ntp_calendar.c@1.15 +40 -34 + Added a comment from Juergen Perlinger to make the code clearer. + Removed trailing whitespace. + +ChangeSet@1.3305.2.3, 2015-03-19 16:52:05+01:00, martin@pc-martin.(none) + Use predefined function types for parse driver functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + Cast parse conversion results to appropriate types to avoid compiler warnings. + Let ioctl() for Windows accept a (void *) to avoid compiler warnings when called with pointers to different types. + + ChangeLog@1.1622.2.3 +7 -0 + Use predefined function types for parse driver functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + Cast parse conversion results to appropriate types to avoid compiler warnings. + Let ioctl() for Windows accept a (void *) to avoid compiler warnings when called with pointers to different types. + + include/binio.h@1.6 +10 -0 + Added macros casting the result of the conversion function to a dedicated with to avoid compiler warnings. + + include/mbg_gps166.h@1.13 +1 -1 + Use specific data type with mbg_csum() to avoid compiler warnings. + + include/parse.h@1.11 +15 -11 + Introduced some dedicated function types simplifying use with function pointers. + Let parse input functions expect a char instead of an unsigned int since chars are used anyway. + This helps to avoid compiler warnings. + + libparse/clk_computime.c@1.12 +10 -10 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + + libparse/clk_dcf7000.c@1.12 +8 -7 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + + libparse/clk_hopf6021.c@1.11 +21 -20 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + + libparse/clk_meinberg.c@1.13 +20 -19 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + Cast conversion results to appropriate types to avoid compiler warnings. + + libparse/clk_rawdcf.c@1.19 +8 -7 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + Cast to appropriate types to avoid compiler warnings. + + libparse/clk_rcc8000.c@1.11 +17 -16 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + + libparse/clk_schmid.c@1.12 +9 -9 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + + libparse/clk_sel240x.c@1.4 +5 -11 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + Cast to appropriate types to avoid compiler warnings. + + libparse/clk_trimtaip.c@1.12 +8 -7 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + + libparse/clk_trimtsip.c@1.13 +18 -18 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + Cast conversion results to appropriate types to avoid compiler warnings. + Use commonly defined constants to handle GPS week number wraparounds. + + libparse/clk_varitext.c@1.11 +6 -5 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + + libparse/clk_wharton.c@1.10 +7 -4 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + + libparse/data_mbg.c@1.15 +36 -36 + Cast conversion results to appropriate types to avoid compiler warnings. + + libparse/gpstolfp.c@1.12 +1 -1 + Type cast to avoid compiler warning. + + libparse/parse.c@1.18 +14 -14 + Use predefined function types for functions used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + Cast conversion results to appropriate types to avoid compiler warnings. + + ntpd/refclock_parse.c@1.75 +49 -48 + Cast conversion results to appropriate types to avoid compiler warnings. + + ports/winnt/include/termios.h@1.17 +1 -1 + Changed the prototype for ioctl() to accept a (void *) to avoid compiler warnings when called with pointers to different types. + + ports/winnt/libntp/termios.c@1.30 +2 -1 + Let ioctl() accept a (void *) to avoid compiler warnings when called with pointers to different types. + +ChangeSet@1.3305.1.19, 2015-03-19 07:54:24+00:00, stenn@psp-deb1.ntp.org + ntp_proto.c, ChangeLog: + [Sec 2779] ntpd accepts unauthenticated packets with symmetric key crypto. + [Sec 2781] Authentication doesn't protect symmetric associations against DoS attacks. + + ChangeLog@1.1622.1.16 +3 -0 + [Sec 2779] ntpd accepts unauthenticated packets with symmetric key crypto. + [Sec 2781] Authentication doesn't protect symmetric associations against DoS attacks. + + ntpd/ntp_proto.c@1.354 +16 -14 + [Sec 2779] ntpd accepts unauthenticated packets with symmetric key crypto. + [Sec 2781] Authentication doesn't protect symmetric associations against DoS attacks. + +ChangeSet@1.3305.1.18, 2015-03-16 09:17:42+00:00, stenn@psp-fb1.ntp.org + [Bug 2763] Allow different thresholds for forward and backward steps + + ChangeLog@1.1622.1.15 +1 -0 + [Bug 2763] Allow different thresholds for forward and backward steps + + include/ntp.h@1.211 +13 -11 + [Bug 2763] Allow different thresholds for forward and backward steps + + include/ntpd.h@1.185 +2 -1 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/invoke-ntp.conf.texi@1.178 +15 -2 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/keyword-gen-utd@1.22 +1 -1 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/keyword-gen.c@1.27 +2 -0 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp.conf.5man@1.212 +19 -4 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp.conf.5mdoc@1.212 +18 -3 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp.conf.def@1.15 +16 -1 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp.conf.man.in@1.212 +19 -4 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp.conf.mdoc.in@1.212 +18 -3 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp_config.c@1.323 +8 -0 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp_keyword.h@1.24 +492 -483 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp_loopfilter.c@1.179 +27 -5 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp_parser.c@1.90 +803 -797 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp_parser.h@1.56 +81 -77 + [Bug 2763] Allow different thresholds for forward and backward steps + + ntpd/ntp_parser.y@1.83 +4 -0 + [Bug 2763] Allow different thresholds for forward and backward steps + +ChangeSet@1.3305.2.2, 2015-03-13 10:28:32+01:00, martin@pc-martin.(none) + Removed non-ASCII characters from some copyright comments. + Removed trailing whitespace. + Updated definitions for Meinberg clocks from current Meinberg header files. Now use C99 fixed-width types and avoid non-ASCII characters in comments. + Account for updated definitions pulled from Meinberg header files. + Updated comments on Meinberg GPS receivers which are not only called GPS16x. + Replaced some constant numbers by defines from ntp_calendar.h + Modified creation of parse-specific variables for Meinberg devices in gps16x_message(). + Reworked mk_utcinfo() to avoid printing of ambiguous leap second dates. + Modified mbg_tm_str() which now expexts an additional parameter controlling if the time status shall be printed. + + ChangeLog@1.1622.2.2 +12 -0 + Removed non-ASCII characters from some copyright comments. + Removed trailing whitespace. + Updated definitions for Meinberg clocks from current Meinberg header files. Now use C99 fixed-width types and avoid non-ASCII characters in comments. + Account for updated definitions pulled from Meinberg header files. + Updated comments on Meinberg GPS receivers which are not only called GPS16x. + Replaced some constant numbers by defines from ntp_calendar.h + Modified creation of parse-specific variables for Meinberg devices in gps16x_message(). + Reworked mk_utcinfo() to avoid printing of ambiguous leap second dates. + Modified mbg_tm_str() which now expexts an additional parameter controlling if the time status shall be printed. + + include/mbg_gps166.h@1.12 +841 -408 + Updated definitions for Meinberg clocks from current Meinberg header files. Now use C99 fixed-width types and avoid non-ASCII characters in comments. + Updated prototype for mbg_tm_str() which now takes one more parameter. + + include/ntp_calendar.h@1.17 +4 -2 + Added definitions for DAYSPERWEEK and SECSPERWEEK. + + include/parse.h@1.10 +14 -7 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + Moved a few definitions from gpstolfp.c here so they can also be used in other c modules. + + include/parse_conf.h@1.6 +1 -1 + Removed non-ASCII characters from copyright comment. + + kernel/sys/parsestreams.h@1.8 +1 -1 + Removed non-ASCII characters from copyright comment. + + libparse/clk_computime.c@1.11 +23 -23 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/clk_dcf7000.c@1.11 +7 -7 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/clk_meinberg.c@1.12 +71 -70 + Updated comments on Meinberg GPS receivers which are not only called GPS16x. + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/clk_rawdcf.c@1.18 +12 -12 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/clk_schmid.c@1.11 +7 -7 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/clk_trimtaip.c@1.11 +5 -5 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/clk_trimtsip.c@1.12 +13 -13 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/clk_varitext.c@1.10 +38 -38 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/clk_wharton.c@1.9 +1 -1 + Fixed a typo. + + libparse/data_mbg.c@1.14 +39 -36 + Account for updated definitions pulled from Meinberg header files. + Updated definitions for Meinberg clocks from current Meinberg header files. Now use C99 fixed-width types and avoid non-ASCII characters in comments. + Replaced some constant numbers by defines from ntp_calendar.h. + Modified mbg_tm_str() which now expexts an additional parameter controlling if the time status shall be printed. + + libparse/gpstolfp.c@1.11 +4 -6 + Moved some commonly used constants to parse.h. + Removed duplicate defines and use those in ntp_calendar.h. + Also replaced some constant numbers by defines from ntp_calendar.h. + + libparse/parse.c@1.17 +46 -46 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/parse_conf.c@1.11 +2 -2 + Removed non-ASCII characters from copyright comment. + + libparse/parsesolaris.c@1.12 +55 -55 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/parsestreams.c@1.8 +63 -63 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + + libparse/trim_info.c@1.6 +1 -1 + Removed non-ASCII characters from copyright comment. + + ntpd/refclock_parse.c@1.74 +326 -295 + Removed non-ASCII characters from copyright comment. + Removed trailing whitespace. + Reworked mk_utcinfo() to avoid printing of ambiguous leap second dates. + Modified creation of parse-specific variables for Meinberg devices in gps16x_message(). + + parseutil/dcfd.c@1.27 +2 -2 + Removed non-ASCII characters from copyright comment. + + parseutil/testdcf.c@1.9 +2 -2 + Removed non-ASCII characters from copyright comment. + +ChangeSet@1.3305.1.17, 2015-03-10 11:21:46+00:00, stenn@psp-fb1.ntp.org + merge cleanup + + ChangeLog@1.1622.1.14 +1 -3 + merge cleanup + + ntpd/ntp_loopfilter.c@1.178 +5 -2 + merge cleanup + +ChangeSet@1.3305.2.1, 2015-03-10 10:48:25+01:00, martin@pc-martin.(none) + Fixed loops and decoding of Meinberg GPS satellite info. + + ChangeLog@1.1622.2.1 +1 -0 + Fixed loops and decoding of Meinberg GPS satellite info. + + libparse/data_mbg.c@1.13 +3 -3 + Fixed loops handling Meinberg GPS satellite info. + + ntpd/refclock_parse.c@1.73 +44 -68 + Fixed loops and decoding of Meinberg GPS satellite info. + +ChangeSet@1.3305.1.16, 2015-03-09 06:36:19-04:00, murray@pogo.udel.edu + ChangeLog, ntp_loopfilter.c: + Fix for bug 2774 + + ChangeLog@1.1622.1.13 +3 -0 + Fix for bug 2774 + + ntpd/ntp_loopfilter.c@1.177 +4 -1 + Fix for bug 2774 + +ChangeSet@1.3305.1.15, 2015-03-05 10:17:02+00:00, stenn@psp-fb1.ntp.org + [Bug 2783] Quiet autoconf warnings about missing AC_LANG_SOURCE + + ChangeLog@1.1622.1.12 +1 -0 + [Bug 2783] Quiet autoconf warnings about missing AC_LANG_SOURCE + + configure.ac@1.584 +24 -22 + [Bug 2783] Quiet autoconf warnings about missing AC_LANG_SOURCE + + sntp/libopts/m4/libopts.m4@1.33 +12 -12 + [Bug 2783] Quiet autoconf warnings about missing AC_LANG_SOURCE + + sntp/m4/ntp_libntp.m4@1.29 +4 -4 + [Bug 2783] Quiet autoconf warnings about missing AC_LANG_SOURCE + +ChangeSet@1.3305.1.14, 2015-03-04 11:16:31+00:00, stenn@psp-fb1.ntp.org + [Bug 2775] ntp-keygen.c fails to compile under Windows + + ChangeLog@1.1622.1.11 +1 -0 + [Bug 2775] ntp-keygen.c fails to compile under Windows. + + util/ntp-keygen.c@1.103 +7 -1 + [Bug 2775] ntp-keygen.c fails to compile under Windows + +ChangeSet@1.3305.1.13, 2015-03-01 21:46:56-05:00, stenn@pogo.udel.edu + cleanup + + ChangeLog@1.1622.1.10 +1 -2 + cleanup + +ChangeSet@1.3305.1.12, 2015-03-01 02:50:18-05:00, murray@pogo.udel.edu + refclock_palisade.h, ChangeLog, refclock_palisade.c: + Fix bug 2773 - early leap from Palisade/Thunderbolt + + ChangeLog@1.1622.1.9 +2 -0 + Fix bug 2773 - early leap from Palisade/Thunderbolt + + ntpd/refclock_palisade.c@1.42 +8 -2 + Fix bug 2773 - early leap from Palisade/Thunderbolt + + ntpd/refclock_palisade.h@1.15 +1 -0 + Fix bug 2773 - early leap from Palisade/Thunderbolt + +ChangeSet@1.3305.1.11, 2015-02-28 12:12:13+00:00, stenn@psp-fb1.ntp.org + [Bug 2751] jitter.h has stale copies of l_fp macros + + util/Makefile.am@1.78 +1 -1 + [Bug 2751] jitter.h has stale copies of l_fp macros + +ChangeSet@1.3305.1.10, 2015-02-28 12:04:02+00:00, stenn@psp-fb1.ntp.org + [Bug 2771] nonvolatile value is documented in wrong units + + ChangeLog@1.1622.1.8 +1 -0 + [Bug 2771] nonvolatile value is documented in wrong units + + html/miscopt.html@1.80 +2 -2 + [Bug 2771] nonvolatile value is documented in wrong units + +ChangeSet@1.3305.1.9, 2015-02-28 11:34:24+00:00, stenn@psp-fb1.ntp.org + [Bug 2767] ntp-keygen -M should symlink to ntp.keys + + ChangeLog@1.1622.1.7 +1 -0 + [Bug 2767] ntp-keygen -M should symlink to ntp.keys + + util/ntp-keygen.c@1.102 +6 -2 + [Bug 2767] ntp-keygen -M should symlink to ntp.keys + +ChangeSet@1.3305.1.8, 2015-02-28 11:28:04+00:00, stenn@psp-fb1.ntp.org + [Bug 2766] ntp-keygen output files should not be world-readable + + ChangeLog@1.1622.1.6 +1 -0 + [Bug 2766] ntp-keygen output files should not be world-readable + + util/ntp-keygen.c@1.101 +5 -1 + [Bug 2766] ntp-keygen output files should not be world-readable + +ChangeSet@1.3305.1.7, 2015-02-28 11:18:57+00:00, stenn@psp-fb1.ntp.org + [Bug 2759] Expose nonvolatile/clk_wander_threshold to ntpq + + ChangeLog@1.1622.1.5 +1 -0 + [Bug 2759] Expose nonvolatile/clk_wander_threshold to ntpq + + ntpd/ntp_control.c@1.196 +56 -51 + [Bug 2759] Expose nonvolatile/clk_wander_threshold to ntpq + +ChangeSet@1.3305.1.6, 2015-02-28 09:47:20+00:00, stenn@psp-fb1.ntp.org + [Bug 2757] Quiet compiler warnings. + + lib/isc/inet_ntop.c@1.14 +1 -0 + [Bug 2757] Quiet compiler warnings. + + lib/isc/log.c@1.8 +12 -12 + [Bug 2757] Quiet compiler warnings. + + ntpd/ntp_leapsec.c@1.16 +6 -6 + [Bug 2757] Quiet compiler warnings. + + parseutil/dcfd.c@1.26 +7 -0 + [Bug 2757] Quiet compiler warnings. + + sntp/libevent/include/event2/event.h@1.11 +4 -0 + [Bug 2757] Quiet compiler warnings. + +ChangeSet@1.3305.1.5, 2015-02-28 09:11:24+00:00, stenn@psp-fb1.ntp.org + [Bug 2756] ntpd hangs in startup with gcc 3.3.5 on ARM + + ChangeLog@1.1622.1.4 +1 -0 + [Bug 2756] ntpd hangs in startup with gcc 3.3.5 on ARM + + configure.ac@1.583 +0 -2 + [Bug 2756] ntpd hangs in startup with gcc 3.3.5 on ARM + + include/ntp_fp.h@1.32 +4 -1 + [Bug 2756] ntpd hangs in startup with gcc 3.3.5 on ARM + +ChangeSet@1.3305.1.4, 2015-02-25 07:58:47+00:00, stenn@psp-fb1.ntp.org + [Bug 2751] jitter.h has stale copies of l_fp macros + + BitKeeper/deleted/fd/jitter.h~11d7c056cb18e28@1.5 +0 -0 + Delete: util/jitter.h + + ChangeLog@1.1622.1.3 +1 -0 + [Bug 2751] jitter.h has stale copies of l_fp macros + + util/jitter.c@1.11 +1 -2 + [Bug 2751] jitter.h has stale copies of l_fp macros + +ChangeSet@1.3305.1.3, 2015-02-21 05:56:16-05:00, stenn@deacon.udel.edu + Update triggers for bk-6 + + BitKeeper/triggers/post-incoming.license-warn@1.9 +3 -0 + Update triggers for bk-6 + + BitKeeper/triggers/pre-resolve.license-chk@1.10 +3 -0 + Update triggers for bk-6 + + BitKeeper/triggers/send@1.16 +2 -2 + Update triggers for bk-6 + +ChangeSet@1.3305.1.2, 2015-02-21 10:35:38+00:00, stenn@psp-fb1.ntp.org + [Bug 2757] Quiet compiler warnings + + ChangeLog@1.1622.1.2 +1 -0 + [Bug 2757] Quiet compiler warnings + + lib/isc/result.c@1.4 +6 -6 + [Bug 2757] Quiet compiler warnings + + lib/isc/unix/file.c@1.7 +3 -3 + [Bug 2757] Quiet compiler warnings + + lib/isc/unix/ifiter_ioctl.c@1.32.1.1 +4 -0 + [Bug 2757] Quiet compiler warnings + + lib/isc/unix/net.c@1.19 +2 -1 + [Bug 2757] Quiet compiler warnings + + libntp/work_fork.c@1.13 +1 -1 + [Bug 2757] Quiet compiler warnings + + ntpd/ntp_crypto.c@1.174 +1 -1 + [Bug 2757] Quiet compiler warnings + +ChangeSet@1.3305.1.1, 2015-02-21 09:51:32+00:00, stenn@psp-deb1.ntp.org + [Bug 2749] ntp/lib/NTP/Util.pm needs update for ntpq -w, IPv6, .POOL. + + ChangeLog@1.1622.1.1 +1 -0 + [Bug 2749] ntp/lib/NTP/Util.pm needs update for ntpq -w, IPv6, .POOL. + + scripts/lib/NTP/Util.pm@1.3 +15 -4 + [Bug 2749] ntp/lib/NTP/Util.pm needs update for ntpq -w, IPv6, .POOL. + +ChangeSet@1.3306, 2015-02-21 09:28:08+00:00, stenn@psp-fb1.ntp.org + [Bug 1960] setsockopt IPV6_MULTICAST_IF: Invalid argument + + ChangeLog@1.1623 +1 -0 + [Bug 1960] setsockopt IPV6_MULTICAST_IF: Invalid argument + + lib/isc/unix/ifiter_getifaddrs.c@1.14 +3 -0 + [Bug 1960] setsockopt IPV6_MULTICAST_IF: Invalid argument + + lib/isc/unix/ifiter_ioctl.c@1.33 +12 -2 + [Bug 1960] setsockopt IPV6_MULTICAST_IF: Invalid argument + +ChangeSet@1.3302.1.1, 2015-02-21 07:15:54+00:00, stenn@psp-deb1.ntp.org + [Bug 2728] See if C99-style structure initialization works + + ChangeLog@1.1620.1.1 +3 -0 + [Bug 2728] See if C99-style structure initialization works + + configure.ac@1.582 +1 -0 + [Bug 2728] See if C99-style structure initialization works + + ntpq/ntpq-subs.c@1.104 +1 -1 + [Bug 2728] See if C99-style structure initialization works + + ports/winnt/include/config.h@1.111 +1 -1 + [Bug 2728] See if C99-style structure initialization works + + sntp/m4/ax_c99_struct_init.m4@1.1 +59 -0 + BitKeeper file /home/stenn/ntp-stable-2728/sntp/m4/ax_c99_struct_init.m4 + + sntp/m4/ax_c99_struct_init.m4@1.0 +0 -0 + +ChangeSet@1.3304, 2015-02-11 09:08:51+00:00, stenn@psp-fb1.ntp.org + [Bug 2747] Upgrade libevent to 2.1.5-beta + + ChangeLog@1.1621 +3 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + +ChangeSet@1.3303, 2015-02-11 09:05:59+00:00, stenn@psp-fb1.ntp.org + [Bug 2747] Upgrade libevent to 2.1.5-beta + + BitKeeper/deleted/5b/README~3a69bb76c676898e@1.7 +0 -0 + Delete: sntp/libevent/README + + sntp/libevent/ChangeLog@1.9 +726 -60 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/Makefile.am@1.13 +3 -1 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/README.md@1.1 +318 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2747/sntp/libevent/README.md + + sntp/libevent/README.md@1.0 +0 -0 + + sntp/libevent/WIN32-Code/getopt.c@1.1 +149 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2747/sntp/libevent/WIN32-Code/getopt.c + + sntp/libevent/WIN32-Code/getopt.c@1.0 +0 -0 + + sntp/libevent/WIN32-Code/getopt.h@1.1 +33 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2747/sntp/libevent/WIN32-Code/getopt.h + + sntp/libevent/WIN32-Code/getopt.h@1.0 +0 -0 + + sntp/libevent/WIN32-Code/getopt_long.c@1.1 +233 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2747/sntp/libevent/WIN32-Code/getopt_long.c + + sntp/libevent/WIN32-Code/getopt_long.c@1.0 +0 -0 + + sntp/libevent/WIN32-Code/nmake/event2/event-config.h@1.2 +2 -2 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/WIN32-Code/tree.h@1.2 +0 -677 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/buffer.c@1.10 +74 -10 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/bufferevent.c@1.8 +9 -4 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/bufferevent_async.c@1.7 +6 -4 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/bufferevent_filter.c@1.7 +50 -23 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/bufferevent_openssl.c@1.9 +2 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/bufferevent_pair.c@1.8 +32 -1 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/configure.ac@1.17 +15 -18 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/evbuffer-internal.h@1.8 +13 -1 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/evdns.c@1.10 +80 -33 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/event.c@1.13 +38 -10 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/event_tagging.c@1.5 +14 -1 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/evrpc-internal.h@1.3 +1 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/evthread-internal.h@1.7 +7 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/evthread.c@1.8 +17 -6 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/evutil.c@1.10 +28 -14 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/evutil_time.c@1.5 +50 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/ht-internal.h@1.4 +0 -1 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/http-internal.h@1.6 +2 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/http.c@1.10 +45 -2 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/include/event2/buffer.h@1.7 +3 -8 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/include/event2/bufferevent.h@1.6 +5 -4 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/include/event2/dns.h@1.7 +17 -1 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/include/event2/event.h@1.10 +6 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/include/event2/http.h@1.7 +14 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/include/event2/listener.h@1.4 +9 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/include/event2/util.h@1.7 +69 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/kqueue.c@1.7 +17 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/listener.c@1.7 +5 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/sample/http-server.c@1.10 +5 -2 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/sample/https-client.c@1.2 +15 -2 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/sample/include.am@1.3 +2 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/include.am@1.4 +2 -1 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/print-winsock-errors.c@1.1 +84 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2747/sntp/libevent/test/print-winsock-errors.c + + sntp/libevent/test/print-winsock-errors.c@1.0 +0 -0 + + sntp/libevent/test/regress.c@1.6 +29 -8 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress.h@1.5 +5 -1 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_buffer.c@1.8 +47 -6 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_bufferevent.c@1.6 +150 -2 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_dns.c@1.8 +141 -14 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_finalize.c@1.2 +1 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_http.c@1.8 +107 -9 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_main.c@1.7 +4 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_minheap.c@1.3 +3 -2 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_ssl.c@1.7 +1 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_thread.c@1.6 +3 -2 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_util.c@1.7 +19 -17 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/regress_zlib.c@1.5 +10 -7 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/test-fdleak.c@1.2 +10 -10 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/test-ratelim.c@1.9 +5 -6 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/test-ratelim.sh@1.1 +88 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2747/sntp/libevent/test/test-ratelim.sh + + sntp/libevent/test/test-ratelim.sh@1.0 +0 -0 + + sntp/libevent/test/test-time.c@1.5 +9 -6 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/tinytest.c@1.6 +33 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/tinytest.h@1.4 +2 -0 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/test/tinytest_demo.c@1.1 +260 -0 + BitKeeper file /a/etc/amd.stage/thump2-g3/export/ntp/home/stenn/ntp-stable-2747/sntp/libevent/test/tinytest_demo.c + + sntp/libevent/test/tinytest_demo.c@1.0 +0 -0 + + sntp/libevent/test/tinytest_macros.h@1.3 +21 -6 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/time-internal.h@1.2 +0 -3 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/util-internal.h@1.10 +1 -1 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/libevent/whatsnew-2.1.txt@1.4 +52 -1 + [Bug 2747] Upgrade libevent to 2.1.5-beta + + sntp/m4/LICENSE-OPENLDAP@1.2 +0 -0 + Rename: sntp/libevent/m4/LICENSE-OPENLDAP -> sntp/m4/LICENSE-OPENLDAP + + sntp/m4/openldap-thread-check.m4@1.5 +0 -0 + Rename: sntp/libevent/m4/openldap-thread-check.m4 -> sntp/m4/openldap-thread-check.m4 + + sntp/m4/openldap.m4@1.2 +0 -0 + Rename: sntp/libevent/m4/openldap.m4 -> sntp/m4/openldap.m4 + +ChangeSet@1.3302, 2015-02-04 02:44:25-05:00, stenn@deacon.udel.edu + NTP_4_2_8P1 + TAG: NTP_4_2_8P1 + + ChangeLog@1.1620 +1 -0 + NTP_4_2_8P1 + + ntpd/invoke-ntp.conf.texi@1.177 +1 -1 + NTP_4_2_8P1 + + ntpd/invoke-ntp.keys.texi@1.174 +1 -1 + NTP_4_2_8P1 + + ntpd/invoke-ntpd.texi@1.490 +2 -2 + NTP_4_2_8P1 + + ntpd/ntp.conf.5man@1.211 +3 -3 + NTP_4_2_8P1 + + ntpd/ntp.conf.5mdoc@1.211 +2 -2 + NTP_4_2_8P1 + + ntpd/ntp.conf.html@1.169 +1 -1 + NTP_4_2_8P1 + + ntpd/ntp.conf.man.in@1.211 +3 -3 + NTP_4_2_8P1 + + ntpd/ntp.conf.mdoc.in@1.211 +2 -2 + NTP_4_2_8P1 + + ntpd/ntp.keys.5man@1.208 +2 -2 + NTP_4_2_8P1 + + ntpd/ntp.keys.5mdoc@1.208 +2 -2 + NTP_4_2_8P1 + + ntpd/ntp.keys.html@1.170 +1 -1 + NTP_4_2_8P1 + + ntpd/ntp.keys.man.in@1.208 +2 -2 + NTP_4_2_8P1 + + ntpd/ntp.keys.mdoc.in@1.208 +2 -2 + NTP_4_2_8P1 + + ntpd/ntpd-opts.c@1.511 +239 -239 + NTP_4_2_8P1 + + ntpd/ntpd-opts.h@1.510 +3 -3 + NTP_4_2_8P1 + + ntpd/ntpd.1ntpdman@1.319 +3 -3 + NTP_4_2_8P1 + + ntpd/ntpd.1ntpdmdoc@1.319 +2 -2 + NTP_4_2_8P1 + + ntpd/ntpd.html@1.164 +2 -2 + NTP_4_2_8P1 + + ntpd/ntpd.man.in@1.319 +3 -3 + NTP_4_2_8P1 + + ntpd/ntpd.mdoc.in@1.319 +2 -2 + NTP_4_2_8P1 + + ntpdc/invoke-ntpdc.texi@1.488 +2 -2 + NTP_4_2_8P1 + + ntpdc/ntpdc-opts.c@1.506 +107 -107 + NTP_4_2_8P1 + + ntpdc/ntpdc-opts.h@1.505 +3 -3 + NTP_4_2_8P1 + + ntpdc/ntpdc.1ntpdcman@1.319 +3 -3 + NTP_4_2_8P1 + + ntpdc/ntpdc.1ntpdcmdoc@1.319 +2 -2 + NTP_4_2_8P1 + + ntpdc/ntpdc.html@1.332 +2 -2 + NTP_4_2_8P1 + + ntpdc/ntpdc.man.in@1.319 +3 -3 + NTP_4_2_8P1 + + ntpdc/ntpdc.mdoc.in@1.319 +2 -2 + NTP_4_2_8P1 + + ntpq/invoke-ntpq.texi@1.494 +2 -2 + NTP_4_2_8P1 + + ntpq/ntpq-opts.c@1.511 +106 -106 + NTP_4_2_8P1 + + ntpq/ntpq-opts.h@1.509 +3 -3 + NTP_4_2_8P1 + + ntpq/ntpq.1ntpqman@1.322 +3 -3 + NTP_4_2_8P1 + + ntpq/ntpq.1ntpqmdoc@1.322 +2 -2 + NTP_4_2_8P1 + + ntpq/ntpq.html@1.161 +2 -2 + NTP_4_2_8P1 + + ntpq/ntpq.man.in@1.322 +3 -3 + NTP_4_2_8P1 + + ntpq/ntpq.mdoc.in@1.322 +2 -2 + NTP_4_2_8P1 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.490 +2 -2 + NTP_4_2_8P1 + + ntpsnmpd/ntpsnmpd-opts.c@1.508 +68 -68 + NTP_4_2_8P1 + + ntpsnmpd/ntpsnmpd-opts.h@1.507 +3 -3 + NTP_4_2_8P1 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.319 +3 -3 + NTP_4_2_8P1 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.319 +2 -2 + NTP_4_2_8P1 + + ntpsnmpd/ntpsnmpd.html@1.159 +1 -1 + NTP_4_2_8P1 + + ntpsnmpd/ntpsnmpd.man.in@1.319 +3 -3 + NTP_4_2_8P1 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.319 +2 -2 + NTP_4_2_8P1 + + packageinfo.sh@1.503 +3 -3 + NTP_4_2_8P1 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.80 +3 -3 + NTP_4_2_8P1 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.81 +2 -2 + NTP_4_2_8P1 + + scripts/calc_tickadj/calc_tickadj.html@1.82 +1 -1 + NTP_4_2_8P1 + + scripts/calc_tickadj/calc_tickadj.man.in@1.79 +3 -3 + NTP_4_2_8P1 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.81 +2 -2 + NTP_4_2_8P1 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.84 +1 -1 + NTP_4_2_8P1 + + scripts/invoke-plot_summary.texi@1.101 +2 -2 + NTP_4_2_8P1 + + scripts/invoke-summary.texi@1.101 +2 -2 + NTP_4_2_8P1 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.311 +2 -2 + NTP_4_2_8P1 + + scripts/ntp-wait/ntp-wait-opts@1.47 +2 -2 + NTP_4_2_8P1 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.308 +3 -3 + NTP_4_2_8P1 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.309 +2 -2 + NTP_4_2_8P1 + + scripts/ntp-wait/ntp-wait.html@1.328 +2 -2 + NTP_4_2_8P1 + + scripts/ntp-wait/ntp-wait.man.in@1.308 +3 -3 + NTP_4_2_8P1 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.309 +2 -2 + NTP_4_2_8P1 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.99 +2 -2 + NTP_4_2_8P1 + + scripts/ntpsweep/ntpsweep-opts@1.49 +2 -2 + NTP_4_2_8P1 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.87 +3 -3 + NTP_4_2_8P1 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.87 +2 -2 + NTP_4_2_8P1 + + scripts/ntpsweep/ntpsweep.html@1.100 +2 -2 + NTP_4_2_8P1 + + scripts/ntpsweep/ntpsweep.man.in@1.87 +3 -3 + NTP_4_2_8P1 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.88 +2 -2 + NTP_4_2_8P1 + + scripts/ntptrace/invoke-ntptrace.texi@1.100 +2 -2 + NTP_4_2_8P1 + + scripts/ntptrace/ntptrace-opts@1.49 +2 -2 + NTP_4_2_8P1 + + scripts/ntptrace/ntptrace.1ntptraceman@1.87 +3 -3 + NTP_4_2_8P1 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.88 +2 -2 + NTP_4_2_8P1 + + scripts/ntptrace/ntptrace.html@1.101 +2 -2 + NTP_4_2_8P1 + + scripts/ntptrace/ntptrace.man.in@1.87 +3 -3 + NTP_4_2_8P1 + + scripts/ntptrace/ntptrace.mdoc.in@1.89 +2 -2 + NTP_4_2_8P1 + + scripts/plot_summary-opts@1.49 +2 -2 + NTP_4_2_8P1 + + scripts/plot_summary.1plot_summaryman@1.99 +3 -3 + NTP_4_2_8P1 + + scripts/plot_summary.1plot_summarymdoc@1.99 +2 -2 + NTP_4_2_8P1 + + scripts/plot_summary.html@1.102 +2 -2 + NTP_4_2_8P1 + + scripts/plot_summary.man.in@1.99 +3 -3 + NTP_4_2_8P1 + + scripts/plot_summary.mdoc.in@1.99 +2 -2 + NTP_4_2_8P1 + + scripts/summary-opts@1.49 +2 -2 + NTP_4_2_8P1 + + scripts/summary.1summaryman@1.99 +3 -3 + NTP_4_2_8P1 + + scripts/summary.1summarymdoc@1.99 +2 -2 + NTP_4_2_8P1 + + scripts/summary.html@1.102 +2 -2 + NTP_4_2_8P1 + + scripts/summary.man.in@1.99 +3 -3 + NTP_4_2_8P1 + + scripts/summary.mdoc.in@1.99 +2 -2 + NTP_4_2_8P1 + + sntp/invoke-sntp.texi@1.487 +2 -2 + NTP_4_2_8P1 + + sntp/sntp-opts.c@1.506 +159 -159 + NTP_4_2_8P1 + + sntp/sntp-opts.h@1.504 +3 -3 + NTP_4_2_8P1 + + sntp/sntp.1sntpman@1.322 +3 -3 + NTP_4_2_8P1 + + sntp/sntp.1sntpmdoc@1.322 +2 -2 + NTP_4_2_8P1 + + sntp/sntp.html@1.502 +2 -2 + NTP_4_2_8P1 + + sntp/sntp.man.in@1.322 +3 -3 + NTP_4_2_8P1 + + sntp/sntp.mdoc.in@1.322 +2 -2 + NTP_4_2_8P1 + + util/invoke-ntp-keygen.texi@1.491 +2 -2 + NTP_4_2_8P1 + + util/ntp-keygen-opts.c@1.509 +173 -173 + NTP_4_2_8P1 + + util/ntp-keygen-opts.h@1.507 +3 -3 + NTP_4_2_8P1 + + util/ntp-keygen.1ntp-keygenman@1.319 +3 -3 + NTP_4_2_8P1 + + util/ntp-keygen.1ntp-keygenmdoc@1.319 +2 -2 + NTP_4_2_8P1 + + util/ntp-keygen.html@1.165 +2 -2 + NTP_4_2_8P1 + + util/ntp-keygen.man.in@1.319 +3 -3 + NTP_4_2_8P1 + + util/ntp-keygen.mdoc.in@1.319 +2 -2 + NTP_4_2_8P1 + +ChangeSet@1.3301, 2015-02-04 02:22:55-05:00, stenn@deacon.udel.edu + ntp-4.2.8p1 + + packageinfo.sh@1.502 +1 -1 + ntp-4.2.8p1 + +ChangeSet@1.3300, 2015-02-04 07:16:30+00:00, stenn@psp-deb1.ntp.org + Update the ChangeLog and NEWS files + + ChangeLog@1.1619 +4 -1 + Update the ChangeLog and NEWS files + + NEWS@1.130 +60 -0 + Update the ChangeLog and NEWS files + +ChangeSet@1.3292.1.20, 2015-01-29 19:14:37-05:00, stenn@deacon.udel.edu + NTP_4_2_8P1_RC2 + TAG: NTP_4_2_8P1_RC2 + + ChangeLog@1.1613.1.18 +1 -0 + NTP_4_2_8P1_RC2 + + ntpd/invoke-ntp.conf.texi@1.176 +1 -1 + NTP_4_2_8P1_RC2 + + ntpd/invoke-ntp.keys.texi@1.173 +1 -1 + NTP_4_2_8P1_RC2 + + ntpd/invoke-ntpd.texi@1.489 +2 -2 + NTP_4_2_8P1_RC2 + + ntpd/ntp.conf.5man@1.210 +3 -3 + NTP_4_2_8P1_RC2 + + ntpd/ntp.conf.5mdoc@1.210 +2 -2 + NTP_4_2_8P1_RC2 + + ntpd/ntp.conf.html@1.168 +1 -1 + NTP_4_2_8P1_RC2 + + ntpd/ntp.conf.man.in@1.210 +3 -3 + NTP_4_2_8P1_RC2 + + ntpd/ntp.conf.mdoc.in@1.210 +2 -2 + NTP_4_2_8P1_RC2 + + ntpd/ntp.keys.5man@1.207 +2 -2 + NTP_4_2_8P1_RC2 + + ntpd/ntp.keys.5mdoc@1.207 +2 -2 + NTP_4_2_8P1_RC2 + + ntpd/ntp.keys.html@1.169 +1 -1 + NTP_4_2_8P1_RC2 + + ntpd/ntp.keys.man.in@1.207 +2 -2 + NTP_4_2_8P1_RC2 + + ntpd/ntp.keys.mdoc.in@1.207 +2 -2 + NTP_4_2_8P1_RC2 + + ntpd/ntpd-opts.c@1.510 +7 -7 + NTP_4_2_8P1_RC2 + + ntpd/ntpd-opts.h@1.509 +3 -3 + NTP_4_2_8P1_RC2 + + ntpd/ntpd.1ntpdman@1.318 +3 -3 + NTP_4_2_8P1_RC2 + + ntpd/ntpd.1ntpdmdoc@1.318 +2 -2 + NTP_4_2_8P1_RC2 + + ntpd/ntpd.html@1.163 +2 -2 + NTP_4_2_8P1_RC2 + + ntpd/ntpd.man.in@1.318 +3 -3 + NTP_4_2_8P1_RC2 + + ntpd/ntpd.mdoc.in@1.318 +2 -2 + NTP_4_2_8P1_RC2 + + ntpdc/invoke-ntpdc.texi@1.487 +2 -2 + NTP_4_2_8P1_RC2 + + ntpdc/ntpdc-opts.c@1.505 +7 -7 + NTP_4_2_8P1_RC2 + + ntpdc/ntpdc-opts.h@1.504 +3 -3 + NTP_4_2_8P1_RC2 + + ntpdc/ntpdc.1ntpdcman@1.318 +3 -3 + NTP_4_2_8P1_RC2 + + ntpdc/ntpdc.1ntpdcmdoc@1.318 +2 -2 + NTP_4_2_8P1_RC2 + + ntpdc/ntpdc.html@1.331 +2 -2 + NTP_4_2_8P1_RC2 + + ntpdc/ntpdc.man.in@1.318 +3 -3 + NTP_4_2_8P1_RC2 + + ntpdc/ntpdc.mdoc.in@1.318 +2 -2 + NTP_4_2_8P1_RC2 + + ntpq/invoke-ntpq.texi@1.493 +2 -2 + NTP_4_2_8P1_RC2 + + ntpq/ntpq-opts.c@1.510 +7 -7 + NTP_4_2_8P1_RC2 + + ntpq/ntpq-opts.h@1.508 +3 -3 + NTP_4_2_8P1_RC2 + + ntpq/ntpq.1ntpqman@1.321 +3 -3 + NTP_4_2_8P1_RC2 + + ntpq/ntpq.1ntpqmdoc@1.321 +2 -2 + NTP_4_2_8P1_RC2 + + ntpq/ntpq.html@1.160 +2 -2 + NTP_4_2_8P1_RC2 + + ntpq/ntpq.man.in@1.321 +3 -3 + NTP_4_2_8P1_RC2 + + ntpq/ntpq.mdoc.in@1.321 +2 -2 + NTP_4_2_8P1_RC2 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.489 +2 -2 + NTP_4_2_8P1_RC2 + + ntpsnmpd/ntpsnmpd-opts.c@1.507 +7 -7 + NTP_4_2_8P1_RC2 + + ntpsnmpd/ntpsnmpd-opts.h@1.506 +3 -3 + NTP_4_2_8P1_RC2 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.318 +3 -3 + NTP_4_2_8P1_RC2 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.318 +2 -2 + NTP_4_2_8P1_RC2 + + ntpsnmpd/ntpsnmpd.html@1.158 +1 -1 + NTP_4_2_8P1_RC2 + + ntpsnmpd/ntpsnmpd.man.in@1.318 +3 -3 + NTP_4_2_8P1_RC2 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.318 +2 -2 + NTP_4_2_8P1_RC2 + + packageinfo.sh@1.501 +1 -1 + NTP_4_2_8P1_RC2 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.79 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.80 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/calc_tickadj/calc_tickadj.html@1.81 +1 -1 + NTP_4_2_8P1_RC2 + + scripts/calc_tickadj/calc_tickadj.man.in@1.78 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.80 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.83 +1 -1 + NTP_4_2_8P1_RC2 + + scripts/invoke-plot_summary.texi@1.100 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/invoke-summary.texi@1.100 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.310 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntp-wait/ntp-wait-opts@1.46 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.307 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.308 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntp-wait/ntp-wait.html@1.327 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntp-wait/ntp-wait.man.in@1.307 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.308 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.98 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntpsweep/ntpsweep-opts@1.48 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.86 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.86 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntpsweep/ntpsweep.html@1.99 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntpsweep/ntpsweep.man.in@1.86 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.87 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntptrace/invoke-ntptrace.texi@1.99 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntptrace/ntptrace-opts@1.48 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntptrace/ntptrace.1ntptraceman@1.86 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.87 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntptrace/ntptrace.html@1.100 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/ntptrace/ntptrace.man.in@1.86 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/ntptrace/ntptrace.mdoc.in@1.88 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/plot_summary-opts@1.48 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/plot_summary.1plot_summaryman@1.98 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/plot_summary.1plot_summarymdoc@1.98 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/plot_summary.html@1.101 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/plot_summary.man.in@1.98 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/plot_summary.mdoc.in@1.98 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/summary-opts@1.48 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/summary.1summaryman@1.98 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/summary.1summarymdoc@1.98 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/summary.html@1.101 +2 -2 + NTP_4_2_8P1_RC2 + + scripts/summary.man.in@1.98 +3 -3 + NTP_4_2_8P1_RC2 + + scripts/summary.mdoc.in@1.98 +2 -2 + NTP_4_2_8P1_RC2 + + sntp/invoke-sntp.texi@1.486 +2 -2 + NTP_4_2_8P1_RC2 + + sntp/sntp-opts.c@1.505 +7 -7 + NTP_4_2_8P1_RC2 + + sntp/sntp-opts.h@1.503 +3 -3 + NTP_4_2_8P1_RC2 + + sntp/sntp.1sntpman@1.321 +3 -3 + NTP_4_2_8P1_RC2 + + sntp/sntp.1sntpmdoc@1.321 +2 -2 + NTP_4_2_8P1_RC2 + + sntp/sntp.html@1.501 +2 -2 + NTP_4_2_8P1_RC2 + + sntp/sntp.man.in@1.321 +3 -3 + NTP_4_2_8P1_RC2 + + sntp/sntp.mdoc.in@1.321 +2 -2 + NTP_4_2_8P1_RC2 + + util/invoke-ntp-keygen.texi@1.490 +2 -2 + NTP_4_2_8P1_RC2 + + util/ntp-keygen-opts.c@1.508 +7 -7 + NTP_4_2_8P1_RC2 + + util/ntp-keygen-opts.h@1.506 +3 -3 + NTP_4_2_8P1_RC2 + + util/ntp-keygen.1ntp-keygenman@1.318 +3 -3 + NTP_4_2_8P1_RC2 + + util/ntp-keygen.1ntp-keygenmdoc@1.318 +2 -2 + NTP_4_2_8P1_RC2 + + util/ntp-keygen.html@1.164 +2 -2 + NTP_4_2_8P1_RC2 + + util/ntp-keygen.man.in@1.318 +3 -3 + NTP_4_2_8P1_RC2 + + util/ntp-keygen.mdoc.in@1.318 +2 -2 + NTP_4_2_8P1_RC2 + +ChangeSet@1.3292.5.2, 2015-01-29 00:34:07+00:00, stenn@psp-deb1.ntp.org + typo + + ChangeLog@1.1613.5.2 +2 -0 + typo + +ChangeSet@1.3292.4.3, 2015-01-29 00:23:57+00:00, stenn@psp-deb1.ntp.org + typos + + ChangeLog@1.1613.4.3 +5 -3 + typos + +ChangeSet@1.3292.4.2, 2015-01-28 23:39:54+01:00, martin@pc-martin.fritz.box + Bug 2741 - Incorrect buffer check in parsestatus() + + ChangeLog@1.1613.4.2 +2 -1 + Bug 2741 - Incorrect buffer check in parsestatus() + + ntpd/refclock_parse.c@1.71 +1 -1 + Bug 2741 - Incorrect buffer check in parsestatus() + +ChangeSet@1.3292.2.3, 2015-01-28 22:06:47+01:00, jnperlin@nemesis.localnet + [bug 2732] Bug 2732 - Leap second not handled correctly on Windows 8 + Guard against slewing twice. Something weird is happening under Win8/8.1. + + ports/winnt/ntpd/nt_clockstuff.c@1.64 +2 -2 + [bug 2732] Bug 2732 - Leap second not handled correctly on Windows 8 + Guard against slewing twice. Something weird is happening under Win8/8.1. + +ChangeSet@1.3292.5.1, 2015-01-28 17:04:07+01:00, martin@pc-martin.(none) + [Bug 2740] Removed some obsolete code from the parse driver. + + ChangeLog@1.1613.5.1 +1 -0 + [Bug 2740] Removed some obsolete code from the parse driver. + + ntpd/refclock_parse.c@1.69.1.1 +1 -14 + [Bug 2740] Removed some obsolete code from the parse driver, as discussed with Frank Kardel. + +ChangeSet@1.3292.4.1, 2015-01-27 16:33:33+01:00, martin@pc-martin.(none) + [Bug 2738] Missing buffer initialisation in parsestate(). + [Bug 2739] Parse driver with PPS enabled occasionaly evaluates PPS timestamp with wrong sign. + Removed some German umlauts. + + ChangeLog@1.1613.4.1 +4 -0 + [Bug 2738] Missing buffer initialisation in parsestate(). + [Bug 2739] Parse driver with PPS enabled occasionaly evaluates PPS timestamp with wrong sign. + Removed some German umlauts. + + + ntpd/refclock_parse.c@1.70 +3 -2 + [Bug 2738] Missing buffer initialisation in parsestate(). + [Bug 2739] Parse driver with PPS enabled occasionaly evaluates PPS timestamp with wrong sign. + Removed some German umlauts. + +ChangeSet@1.3292.1.16, 2015-01-27 00:26:25+01:00, jnperlin@hydra.(none) + * [Bug 2627] rework: reverted sense of mode bit (so default reflects previous behaviour) and updated ducumentation. + + ChangeLog@1.1613.1.14 +4 -0 + * [Bug 2627] rework: reverted sense of mode bit (so default reflects previous behaviour) and updated ducumentation. + + html/drivers/driver28.html@1.18 +3 -2 + * [Bug 2627] rework: updated documentation + + ntpd/refclock_shm.c@1.31 +2 -7 + * [Bug 2627] rework: reverted sense of mode bit (so default reflects previous behaviour). + +ChangeSet@1.3292.2.2, 2015-01-26 23:42:37+01:00, jnperlin@nemesis.localnet + [Bug 2732] - Leap second not handled correctly on Windows 8 + use 'GetTickCount()' to get the true elapsed time of slew + (This should work for all versions of Windows >= W2K) + + ChangeLog@1.1613.3.1 +4 -0 + [Bug 2732] - Leap second not handled correctly on Windows 8 + use 'GetTickCount()' to get the true elapsed time of slew + (This should work for all versions of Windows >= W2K) + + ports/winnt/ntpd/nt_clockstuff.c@1.63 +1 -1 + [Bug 2732] - Leap second not handled correctly on Windows 8 + use 'GetTickCount()' to get the true elapsed time of slew + (This should work for all versions of Windows >= W2K) + Start 1.5 secs before schedule to minimise phase shift errors + +ChangeSet@1.3292.1.15, 2015-01-24 20:47:20-05:00, stenn@deacon.udel.edu + NTP_4_2_8P1_RC1 + TAG: NTP_4_2_8P1_RC1 + + ChangeLog@1.1613.1.13 +1 -0 + NTP_4_2_8P1_RC1 + + ntpd/invoke-ntp.conf.texi@1.175 +1 -1 + NTP_4_2_8P1_RC1 + + ntpd/invoke-ntp.keys.texi@1.172 +1 -1 + NTP_4_2_8P1_RC1 + + ntpd/invoke-ntpd.texi@1.488 +2 -2 + NTP_4_2_8P1_RC1 + + ntpd/ntp.conf.5man@1.209 +5 -5 + NTP_4_2_8P1_RC1 + + ntpd/ntp.conf.5mdoc@1.209 +4 -4 + NTP_4_2_8P1_RC1 + + ntpd/ntp.conf.html@1.167 +1 -1 + NTP_4_2_8P1_RC1 + + ntpd/ntp.conf.man.in@1.209 +5 -5 + NTP_4_2_8P1_RC1 + + ntpd/ntp.conf.mdoc.in@1.209 +4 -4 + NTP_4_2_8P1_RC1 + + ntpd/ntp.keys.5man@1.206 +4 -4 + NTP_4_2_8P1_RC1 + + ntpd/ntp.keys.5mdoc@1.206 +4 -4 + NTP_4_2_8P1_RC1 + + ntpd/ntp.keys.html@1.168 +1 -1 + NTP_4_2_8P1_RC1 + + ntpd/ntp.keys.man.in@1.206 +4 -4 + NTP_4_2_8P1_RC1 + + ntpd/ntp.keys.mdoc.in@1.206 +4 -4 + NTP_4_2_8P1_RC1 + + ntpd/ntpd-opts.c@1.509 +251 -249 + NTP_4_2_8P1_RC1 + + ntpd/ntpd-opts.h@1.508 +5 -5 + NTP_4_2_8P1_RC1 + + ntpd/ntpd.1ntpdman@1.317 +5 -5 + NTP_4_2_8P1_RC1 + + ntpd/ntpd.1ntpdmdoc@1.317 +4 -4 + NTP_4_2_8P1_RC1 + + ntpd/ntpd.html@1.162 +2 -2 + NTP_4_2_8P1_RC1 + + ntpd/ntpd.man.in@1.317 +5 -5 + NTP_4_2_8P1_RC1 + + ntpd/ntpd.mdoc.in@1.317 +4 -4 + NTP_4_2_8P1_RC1 + + ntpdc/invoke-ntpdc.texi@1.486 +2 -2 + NTP_4_2_8P1_RC1 + + ntpdc/ntpdc-opts.c@1.504 +119 -117 + NTP_4_2_8P1_RC1 + + ntpdc/ntpdc-opts.h@1.503 +5 -5 + NTP_4_2_8P1_RC1 + + ntpdc/ntpdc.1ntpdcman@1.317 +4 -4 + NTP_4_2_8P1_RC1 + + ntpdc/ntpdc.1ntpdcmdoc@1.317 +3 -3 + NTP_4_2_8P1_RC1 + + ntpdc/ntpdc.html@1.330 +58 -88 + NTP_4_2_8P1_RC1 + + ntpdc/ntpdc.man.in@1.317 +4 -4 + NTP_4_2_8P1_RC1 + + ntpdc/ntpdc.mdoc.in@1.317 +3 -3 + NTP_4_2_8P1_RC1 + + ntpq/invoke-ntpq.texi@1.492 +2 -2 + NTP_4_2_8P1_RC1 + + ntpq/ntpq-opts.c@1.509 +118 -116 + NTP_4_2_8P1_RC1 + + ntpq/ntpq-opts.h@1.507 +5 -5 + NTP_4_2_8P1_RC1 + + ntpq/ntpq.1ntpqman@1.320 +5 -5 + NTP_4_2_8P1_RC1 + + ntpq/ntpq.1ntpqmdoc@1.320 +4 -4 + NTP_4_2_8P1_RC1 + + ntpq/ntpq.html@1.159 +2 -2 + NTP_4_2_8P1_RC1 + + ntpq/ntpq.man.in@1.320 +5 -5 + NTP_4_2_8P1_RC1 + + ntpq/ntpq.mdoc.in@1.320 +4 -4 + NTP_4_2_8P1_RC1 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.488 +2 -2 + NTP_4_2_8P1_RC1 + + ntpsnmpd/ntpsnmpd-opts.c@1.506 +80 -78 + NTP_4_2_8P1_RC1 + + ntpsnmpd/ntpsnmpd-opts.h@1.505 +5 -5 + NTP_4_2_8P1_RC1 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.317 +4 -4 + NTP_4_2_8P1_RC1 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.317 +3 -3 + NTP_4_2_8P1_RC1 + + ntpsnmpd/ntpsnmpd.html@1.157 +1 -1 + NTP_4_2_8P1_RC1 + + ntpsnmpd/ntpsnmpd.man.in@1.317 +4 -4 + NTP_4_2_8P1_RC1 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.317 +3 -3 + NTP_4_2_8P1_RC1 + + packageinfo.sh@1.500 +1 -1 + NTP_4_2_8P1_RC1 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.78 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.79 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/calc_tickadj/calc_tickadj.html@1.80 +1 -1 + NTP_4_2_8P1_RC1 + + scripts/calc_tickadj/calc_tickadj.man.in@1.77 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.79 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.82 +1 -1 + NTP_4_2_8P1_RC1 + + scripts/invoke-plot_summary.texi@1.99 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/invoke-summary.texi@1.99 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.309 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntp-wait/ntp-wait-opts@1.45 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.306 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.307 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntp-wait/ntp-wait.html@1.326 +31 -49 + NTP_4_2_8P1_RC1 + + scripts/ntp-wait/ntp-wait.man.in@1.306 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.307 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.97 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntpsweep/ntpsweep-opts@1.47 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.85 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.85 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntpsweep/ntpsweep.html@1.98 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntpsweep/ntpsweep.man.in@1.85 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.86 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntptrace/invoke-ntptrace.texi@1.98 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntptrace/ntptrace-opts@1.47 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntptrace/ntptrace.1ntptraceman@1.85 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.86 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/ntptrace/ntptrace.html@1.99 +27 -36 + NTP_4_2_8P1_RC1 + + scripts/ntptrace/ntptrace.man.in@1.85 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/ntptrace/ntptrace.mdoc.in@1.87 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/plot_summary-opts@1.47 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/plot_summary.1plot_summaryman@1.97 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/plot_summary.1plot_summarymdoc@1.97 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/plot_summary.html@1.100 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/plot_summary.man.in@1.97 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/plot_summary.mdoc.in@1.97 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/summary-opts@1.47 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/summary.1summaryman@1.97 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/summary.1summarymdoc@1.97 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/summary.html@1.100 +2 -2 + NTP_4_2_8P1_RC1 + + scripts/summary.man.in@1.97 +3 -3 + NTP_4_2_8P1_RC1 + + scripts/summary.mdoc.in@1.97 +2 -2 + NTP_4_2_8P1_RC1 + + sntp/invoke-sntp.texi@1.485 +5 -3 + NTP_4_2_8P1_RC1 + + sntp/sntp-opts.c@1.504 +174 -170 + NTP_4_2_8P1_RC1 + + sntp/sntp-opts.h@1.502 +5 -5 + NTP_4_2_8P1_RC1 + + sntp/sntp.1sntpman@1.320 +24 -8 + NTP_4_2_8P1_RC1 + + sntp/sntp.1sntpmdoc@1.320 +22 -7 + NTP_4_2_8P1_RC1 + + sntp/sntp.html@1.500 +88 -120 + NTP_4_2_8P1_RC1 + + sntp/sntp.man.in@1.320 +24 -8 + NTP_4_2_8P1_RC1 + + sntp/sntp.mdoc.in@1.320 +22 -7 + NTP_4_2_8P1_RC1 + + util/invoke-ntp-keygen.texi@1.489 +2 -2 + NTP_4_2_8P1_RC1 + + util/ntp-keygen-opts.c@1.507 +185 -183 + NTP_4_2_8P1_RC1 + + util/ntp-keygen-opts.h@1.505 +5 -5 + NTP_4_2_8P1_RC1 + + util/ntp-keygen.1ntp-keygenman@1.317 +5 -5 + NTP_4_2_8P1_RC1 + + util/ntp-keygen.1ntp-keygenmdoc@1.317 +4 -4 + NTP_4_2_8P1_RC1 + + util/ntp-keygen.html@1.163 +2 -2 + NTP_4_2_8P1_RC1 + + util/ntp-keygen.man.in@1.317 +5 -5 + NTP_4_2_8P1_RC1 + + util/ntp-keygen.mdoc.in@1.317 +4 -4 + NTP_4_2_8P1_RC1 + +ChangeSet@1.3292.1.14, 2015-01-24 10:44:12+00:00, stenn@psp-fb1.ntp.org + [Bug 2736] Show error message if we cannot open the config file + + ChangeLog@1.1613.1.12 +1 -0 + [Bug 2736] Show error message if we cannot open the config file + + ntpd/ntp_config.c@1.322 +2 -2 + [Bug 2736] Show error message if we cannot open the config file + +ChangeSet@1.3292.1.12, 2015-01-24 04:02:10+00:00, stenn@psp-deb1.ntp.org + Copyright update + + html/copyright.html@1.67 +2 -2 + Copyright update + +ChangeSet@1.3292.1.11, 2015-01-24 03:09:26+00:00, stenn@psp-fb1.ntp.org + typo fix + + sntp/include/ntp.lic@1.8 +1 -3 + typo fix + +ChangeSet@1.3292.3.5, 2015-01-24 02:27:46+00:00, stenn@psp-fb1.ntp.org + Start the RC for 4.2.8p1 + + ChangeLog@1.1613.2.5 +1 -0 + + packageinfo.sh@1.499 +1 -1 + +ChangeSet@1.3292.3.4, 2015-01-24 01:54:36+00:00, stenn@psp-fb1.ntp.org + [Bug 2187] Update version number generation scripts + + ChangeLog@1.1613.2.4 +1 -0 + [Bug 2187] Update version number generation scripts + + scripts/build/UpdatePoint@1.7 +12 -6 + [Bug 2187] Update version number generation scripts + + scripts/build/VersionName@1.9 +12 -3 + [Bug 2187] Update version number generation scripts + +ChangeSet@1.3292.3.3, 2015-01-24 01:52:52+00:00, stenn@psp-fb1.ntp.org + Fix the package name + + ChangeLog@1.1613.2.3 +1 -0 + Fix the package name + + configure.ac@1.579.1.1 +1 -1 + Fix the package name + +ChangeSet@1.3292.3.2, 2015-01-23 10:29:31+00:00, stenn@psp-fb1.ntp.org + [Sec 2672] Code cleanup: On some OSes ::1 can be spoofed... + + ChangeLog@1.1613.2.2 +1 -0 + [Sec 2672] Code cleanup: On some OSes ::1 can be spoofed... + + ntpd/ntp_io.c@1.399 +10 -12 + [Sec 2672] Code cleanup: On some OSes ::1 can be spoofed... + +ChangeSet@1.3292.3.1, 2015-01-23 10:16:23+00:00, stenn@psp-fb1.ntp.org + [Bug 2617] Fix sntp Usage documentation section + + ChangeLog@1.1613.2.1 +3 -0 + [Bug 2617] Fix sntp Usage documentation section + + sntp/sntp-opts.def@1.46 +19 -4 + [Bug 2617] Fix sntp Usage documentation section + +ChangeSet@1.3292.2.1, 2015-01-21 19:16:29+01:00, jnperlin@nemesis.localnet + [bug 2732] leapsecond processing buggy with win8 + + ports/winnt/ntpd/nt_clockstuff.c@1.62 +19 -14 + [bug 2732] leapsecond processing buggy with win8 + +ChangeSet@1.3281.1.3, 2015-01-14 10:52:55+00:00, stenn@psp-fb1.ntp.org + Copyright update + + ChangeLog@1.1604.1.3 +1 -0 + Copyright update + + html/copyright.html@1.66 +35 -3 + Copyright update + + ntpd/invoke-ntp.conf.texi@1.170.1.1 +12 -2 + update + + ntpd/invoke-ntp.keys.texi@1.167.1.1 +12 -2 + update + + ntpd/invoke-ntpd.texi@1.483.1.1 +14 -4 + update + + ntpd/ntp.conf.5man@1.204.1.1 +15 -6 + update + + ntpd/ntp.conf.5mdoc@1.204.1.1 +14 -5 + update + + ntpd/ntp.conf.man.in@1.204.1.1 +15 -6 + update + + ntpd/ntp.conf.mdoc.in@1.204.1.1 +14 -5 + update + + ntpd/ntp.keys.5man@1.201.1.1 +14 -5 + update + + ntpd/ntp.keys.5mdoc@1.201.1.1 +15 -6 + update + + ntpd/ntp.keys.man.in@1.201.1.1 +14 -5 + update + + ntpd/ntp.keys.mdoc.in@1.201.1.1 +15 -6 + update + + ntpd/ntpd-opts.c@1.504.1.1 +240 -264 + update + + ntpd/ntpd-opts.h@1.503.1.1 +3 -11 + update + + ntpd/ntpd.1ntpdman@1.312.1.1 +15 -6 + update + + ntpd/ntpd.1ntpdmdoc@1.312.1.1 +14 -5 + update + + ntpd/ntpd.man.in@1.312.1.1 +15 -6 + update + + ntpd/ntpd.mdoc.in@1.312.1.1 +14 -5 + update + + ntpdc/invoke-ntpdc.texi@1.481.1.1 +12 -2 + update + + ntpdc/ntpdc-opts.c@1.499.1.1 +108 -132 + update + + ntpdc/ntpdc-opts.h@1.498.1.1 +3 -11 + update + + ntpdc/ntpdc.1ntpdcman@1.312.1.1 +14 -5 + update + + ntpdc/ntpdc.1ntpdcmdoc@1.312.1.1 +13 -4 + update + + ntpdc/ntpdc.html@1.325.1.1 +86 -56 + update + + ntpdc/ntpdc.man.in@1.312.1.1 +14 -5 + update + + ntpdc/ntpdc.mdoc.in@1.312.1.1 +13 -4 + update + + ntpq/invoke-ntpq.texi@1.487.1.1 +12 -2 + update + + ntpq/ntpq-opts.c@1.504.1.1 +107 -131 + update + + ntpq/ntpq-opts.h@1.502.1.1 +3 -11 + update + + ntpq/ntpq.1ntpqman@1.315.1.1 +15 -6 + update + + ntpq/ntpq.1ntpqmdoc@1.315.1.1 +14 -5 + update + + ntpq/ntpq.man.in@1.315.1.1 +15 -6 + update + + ntpq/ntpq.mdoc.in@1.315.1.1 +14 -5 + update + + ntpsnmpd/invoke-ntpsnmpd.texi@1.483.1.1 +12 -2 + update + + ntpsnmpd/ntpsnmpd-opts.c@1.501.1.1 +69 -93 + update + + ntpsnmpd/ntpsnmpd-opts.h@1.500.1.1 +3 -11 + update + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.312.1.1 +14 -5 + update + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.312.1.1 +13 -4 + update + + ntpsnmpd/ntpsnmpd.man.in@1.312.1.1 +14 -5 + update + + ntpsnmpd/ntpsnmpd.mdoc.in@1.312.1.1 +13 -4 + update + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.74.1.1 +2 -2 + update + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.74.1.1 +2 -2 + update + + scripts/ntp-wait/invoke-ntp-wait.texi@1.304.1.1 +1 -1 + update + + scripts/ntp-wait/ntp-wait-opts@1.40.1.1 +1 -1 + update + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.302.1.1 +2 -2 + update + + scripts/ntp-wait/ntp-wait.html@1.321.1.1 +47 -29 + update + + scripts/ntp-wait/ntp-wait.mdoc.in@1.302.1.1 +2 -2 + update + + scripts/ntpsweep/ntpsweep-opts@1.42.1.1 +1 -1 + update + + scripts/ntptrace/invoke-ntptrace.texi@1.93.1.1 +1 -1 + update + + scripts/ntptrace/ntptrace-opts@1.42.1.1 +1 -1 + update + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.81.1.1 +2 -2 + update + + scripts/ntptrace/ntptrace.html@1.94.1.1 +34 -25 + update + + scripts/ntptrace/ntptrace.mdoc.in@1.82.1.1 +2 -2 + update + + scripts/plot_summary-opts@1.42.1.1 +1 -1 + update + + scripts/summary-opts@1.42.1.1 +1 -1 + update + + sntp/include/copyright.def@1.25 +2 -2 + Copyright update + + sntp/include/ntp.lic@1.7 +3 -1 + Copyright update + + sntp/invoke-sntp.texi@1.480.1.1 +12 -2 + update + + sntp/sntp-opts.c@1.498.1.1 +160 -184 + update + + sntp/sntp-opts.h@1.497.1.1 +3 -11 + update + + sntp/sntp.1sntpman@1.315.1.1 +14 -5 + update + + sntp/sntp.1sntpmdoc@1.315.1.1 +13 -4 + update + + sntp/sntp.html@1.495.1.1 +118 -84 + update + + sntp/sntp.man.in@1.315.1.1 +14 -5 + update + + sntp/sntp.mdoc.in@1.315.1.1 +13 -4 + update + + util/invoke-ntp-keygen.texi@1.484.1.1 +12 -2 + update + + util/ntp-keygen-opts.c@1.501.1.1 +174 -198 + update + + util/ntp-keygen-opts.h@1.500.1.1 +3 -11 + update + + util/ntp-keygen.1ntp-keygenman@1.312.1.1 +15 -6 + update + + util/ntp-keygen.1ntp-keygenmdoc@1.312.1.1 +14 -5 + update + + util/ntp-keygen.man.in@1.312.1.1 +15 -6 + update + + util/ntp-keygen.mdoc.in@1.312.1.1 +14 -5 + update + +ChangeSet@1.3292.1.8, 2015-01-07 03:05:51-05:00, stenn@deacon.udel.edu + NTP_4_2_8P1_BETA5 + TAG: NTP_4_2_8P1_BETA5 + + ChangeLog@1.1613.1.8 +1 -0 + NTP_4_2_8P1_BETA5 + + ntpd/invoke-ntp.conf.texi@1.173 +1 -1 + NTP_4_2_8P1_BETA5 + + ntpd/invoke-ntp.keys.texi@1.170 +1 -1 + NTP_4_2_8P1_BETA5 + + ntpd/invoke-ntpd.texi@1.486 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpd/ntp.conf.5man@1.207 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpd/ntp.conf.5mdoc@1.207 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpd/ntp.conf.html@1.166 +1 -1 + NTP_4_2_8P1_BETA5 + + ntpd/ntp.conf.man.in@1.207 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpd/ntp.conf.mdoc.in@1.207 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpd/ntp.keys.5man@1.204 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpd/ntp.keys.5mdoc@1.204 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpd/ntp.keys.html@1.167 +1 -1 + NTP_4_2_8P1_BETA5 + + ntpd/ntp.keys.man.in@1.204 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpd/ntp.keys.mdoc.in@1.204 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpd/ntpd-opts.c@1.507 +7 -7 + NTP_4_2_8P1_BETA5 + + ntpd/ntpd-opts.h@1.506 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpd/ntpd.1ntpdman@1.315 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpd/ntpd.1ntpdmdoc@1.315 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpd/ntpd.html@1.161 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpd/ntpd.man.in@1.315 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpd/ntpd.mdoc.in@1.315 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpdc/invoke-ntpdc.texi@1.484 +26 -2 + NTP_4_2_8P1_BETA5 + + ntpdc/ntpdc-opts.c@1.502 +7 -7 + NTP_4_2_8P1_BETA5 + + ntpdc/ntpdc-opts.h@1.501 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpdc/ntpdc.1ntpdcman@1.315 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpdc/ntpdc.1ntpdcmdoc@1.315 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpdc/ntpdc.html@1.328 +27 -2 + NTP_4_2_8P1_BETA5 + + ntpdc/ntpdc.man.in@1.315 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpdc/ntpdc.mdoc.in@1.315 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpq/invoke-ntpq.texi@1.490 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpq/ntpq-opts.c@1.507 +7 -7 + NTP_4_2_8P1_BETA5 + + ntpq/ntpq-opts.h@1.505 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpq/ntpq.1ntpqman@1.318 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpq/ntpq.1ntpqmdoc@1.318 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpq/ntpq.html@1.158 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpq/ntpq.man.in@1.318 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpq/ntpq.mdoc.in@1.318 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.486 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpsnmpd/ntpsnmpd-opts.c@1.504 +7 -7 + NTP_4_2_8P1_BETA5 + + ntpsnmpd/ntpsnmpd-opts.h@1.503 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.315 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.315 +2 -2 + NTP_4_2_8P1_BETA5 + + ntpsnmpd/ntpsnmpd.html@1.156 +1 -1 + NTP_4_2_8P1_BETA5 + + ntpsnmpd/ntpsnmpd.man.in@1.315 +3 -3 + NTP_4_2_8P1_BETA5 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.315 +2 -2 + NTP_4_2_8P1_BETA5 + + packageinfo.sh@1.498 +1 -1 + NTP_4_2_8P1_BETA5 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.77 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.77 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/calc_tickadj/calc_tickadj.html@1.79 +1 -1 + NTP_4_2_8P1_BETA5 + + scripts/calc_tickadj/calc_tickadj.man.in@1.76 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.77 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.81 +1 -1 + NTP_4_2_8P1_BETA5 + + scripts/invoke-plot_summary.texi@1.98 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/invoke-summary.texi@1.98 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.307 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntp-wait/ntp-wait-opts@1.43 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.305 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.305 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntp-wait/ntp-wait.html@1.324 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntp-wait/ntp-wait.man.in@1.305 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.305 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.96 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntpsweep/ntpsweep-opts@1.45 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.84 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.84 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntpsweep/ntpsweep.html@1.97 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntpsweep/ntpsweep.man.in@1.84 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.85 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntptrace/invoke-ntptrace.texi@1.96 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntptrace/ntptrace-opts@1.45 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntptrace/ntptrace.1ntptraceman@1.84 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.84 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntptrace/ntptrace.html@1.97 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/ntptrace/ntptrace.man.in@1.84 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/ntptrace/ntptrace.mdoc.in@1.85 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/plot_summary-opts@1.45 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/plot_summary.1plot_summaryman@1.96 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/plot_summary.1plot_summarymdoc@1.96 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/plot_summary.html@1.99 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/plot_summary.man.in@1.96 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/plot_summary.mdoc.in@1.96 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/summary-opts@1.45 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/summary.1summaryman@1.96 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/summary.1summarymdoc@1.96 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/summary.html@1.99 +2 -2 + NTP_4_2_8P1_BETA5 + + scripts/summary.man.in@1.96 +3 -3 + NTP_4_2_8P1_BETA5 + + scripts/summary.mdoc.in@1.96 +2 -2 + NTP_4_2_8P1_BETA5 + + sntp/invoke-sntp.texi@1.483 +2 -2 + NTP_4_2_8P1_BETA5 + + sntp/sntp-opts.c@1.502 +7 -7 + NTP_4_2_8P1_BETA5 + + sntp/sntp-opts.h@1.500 +3 -3 + NTP_4_2_8P1_BETA5 + + sntp/sntp.1sntpman@1.318 +3 -3 + NTP_4_2_8P1_BETA5 + + sntp/sntp.1sntpmdoc@1.318 +2 -2 + NTP_4_2_8P1_BETA5 + + sntp/sntp.html@1.498 +2 -2 + NTP_4_2_8P1_BETA5 + + sntp/sntp.man.in@1.318 +3 -3 + NTP_4_2_8P1_BETA5 + + sntp/sntp.mdoc.in@1.318 +2 -2 + NTP_4_2_8P1_BETA5 + + util/invoke-ntp-keygen.texi@1.487 +2 -2 + NTP_4_2_8P1_BETA5 + + util/ntp-keygen-opts.c@1.505 +7 -7 + NTP_4_2_8P1_BETA5 + + util/ntp-keygen-opts.h@1.503 +3 -3 + NTP_4_2_8P1_BETA5 + + util/ntp-keygen.1ntp-keygenman@1.315 +3 -3 + NTP_4_2_8P1_BETA5 + + util/ntp-keygen.1ntp-keygenmdoc@1.315 +2 -2 + NTP_4_2_8P1_BETA5 + + util/ntp-keygen.html@1.162 +2 -2 + NTP_4_2_8P1_BETA5 + + util/ntp-keygen.man.in@1.315 +3 -3 + NTP_4_2_8P1_BETA5 + + util/ntp-keygen.mdoc.in@1.315 +2 -2 + NTP_4_2_8P1_BETA5 + +ChangeSet@1.3292.1.7, 2015-01-07 07:35:11+00:00, burnicki@psp-deb1.ntp.org + cleanup + + ChangeLog@1.1613.1.7 +2 -0 + cleanup + +ChangeSet@1.3292.1.6, 2015-01-06 15:14:03+01:00, burnicki@pc-martin4. + [Bug 2728] Work around C99-style structure initialization code for older compilers, specifically Visual Studio prior to VS2013. + + ChangeLog@1.1613.1.6 +2 -0 + [Bug 2728] Work around C99-style structure initialization code for older compilers, specifically Visual Studio prior to VS2013. + + ntpq/ntpq-subs.c@1.103 +5 -2 + [Bug 2728] Fix for build environments where C99 style structure initialization is not supported. + + ports/winnt/include/config.h@1.110 +1 -0 + [Bug 2728] Define MISSING_C99_STYLE_INIT for VS versions prior to VS2013 to indicate C99-style structure initialization is not supported. + + sntp/libopts/autoopts.h@1.20 +1 -1 + [Bug 2728] Zero out whole structure, avoiding C99-style code zeroing out only specific fields. + + sntp/libopts/enum.c@1.12 +1 -1 + [Bug 2728] Zero out whole structure, avoiding C99-style code zeroing out only specific fields. + +ChangeSet@1.3292.1.5, 2015-01-06 14:29:51+01:00, burnicki@pc-martin4. + [Bug 2695] Windows build: __func__ not supported under Windows. + + ChangeLog@1.1613.1.5 +1 -0 + [Bug 2695] Windows build: __func__ not supported under Windows. + + ports/winnt/include/config.h@1.109 +5 -1 + [Bug 2695] Windows build: __func__ not supported under Windows. + +ChangeSet@1.3295, 2015-01-06 10:52:26+00:00, stenn@psp-deb1.ntp.org + Fix the package name + + configure.ac@1.580 +1 -1 + Fix the package name + +ChangeSet@1.3294, 2015-01-06 10:01:10+00:00, stenn@psp-deb1.ntp.org + [Sec 2671] vallen in extension fields are not validated + + ntpd/ntp_crypto.c@1.173 +65 -35 + [Sec 2671] vallen in extension fields are not validated + +ChangeSet@1.3292.1.4, 2015-01-04 06:17:14-05:00, stenn@deacon.udel.edu + NTP_4_2_8P1_BETA4 + TAG: NTP_4_2_8P1_BETA4 + + ChangeLog@1.1613.1.4 +1 -0 + NTP_4_2_8P1_BETA4 + + ntpd/invoke-ntp.conf.texi@1.172 +1 -1 + NTP_4_2_8P1_BETA4 + + ntpd/invoke-ntp.keys.texi@1.169 +1 -1 + NTP_4_2_8P1_BETA4 + + ntpd/invoke-ntpd.texi@1.485 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpd/ntp.conf.5man@1.206 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpd/ntp.conf.5mdoc@1.206 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpd/ntp.conf.html@1.165 +14 -1 + NTP_4_2_8P1_BETA4 + + ntpd/ntp.conf.man.in@1.206 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpd/ntp.conf.mdoc.in@1.206 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpd/ntp.keys.5man@1.203 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpd/ntp.keys.5mdoc@1.203 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpd/ntp.keys.html@1.166 +1 -1 + NTP_4_2_8P1_BETA4 + + ntpd/ntp.keys.man.in@1.203 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpd/ntp.keys.mdoc.in@1.203 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpd/ntpd-opts.c@1.506 +7 -7 + NTP_4_2_8P1_BETA4 + + ntpd/ntpd-opts.h@1.505 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpd/ntpd.1ntpdman@1.314 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpd/ntpd.1ntpdmdoc@1.314 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpd/ntpd.html@1.160 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpd/ntpd.man.in@1.314 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpd/ntpd.mdoc.in@1.314 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpdc/invoke-ntpdc.texi@1.483 +2 -26 + NTP_4_2_8P1_BETA4 + + ntpdc/ntpdc-opts.c@1.501 +7 -7 + NTP_4_2_8P1_BETA4 + + ntpdc/ntpdc-opts.h@1.500 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpdc/ntpdc.1ntpdcman@1.314 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpdc/ntpdc.1ntpdcmdoc@1.314 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpdc/ntpdc.html@1.327 +2 -27 + NTP_4_2_8P1_BETA4 + + ntpdc/ntpdc.man.in@1.314 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpdc/ntpdc.mdoc.in@1.314 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpq/invoke-ntpq.texi@1.489 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpq/ntpq-opts.c@1.506 +7 -7 + NTP_4_2_8P1_BETA4 + + ntpq/ntpq-opts.h@1.504 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpq/ntpq.1ntpqman@1.317 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpq/ntpq.1ntpqmdoc@1.317 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpq/ntpq.html@1.157 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpq/ntpq.man.in@1.317 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpq/ntpq.mdoc.in@1.317 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.485 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpsnmpd/ntpsnmpd-opts.c@1.503 +7 -7 + NTP_4_2_8P1_BETA4 + + ntpsnmpd/ntpsnmpd-opts.h@1.502 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.314 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.314 +2 -2 + NTP_4_2_8P1_BETA4 + + ntpsnmpd/ntpsnmpd.html@1.155 +1 -1 + NTP_4_2_8P1_BETA4 + + ntpsnmpd/ntpsnmpd.man.in@1.314 +3 -3 + NTP_4_2_8P1_BETA4 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.314 +2 -2 + NTP_4_2_8P1_BETA4 + + packageinfo.sh@1.497 +1 -1 + NTP_4_2_8P1_BETA4 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.76 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.76 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/calc_tickadj/calc_tickadj.html@1.78 +1 -1 + NTP_4_2_8P1_BETA4 + + scripts/calc_tickadj/calc_tickadj.man.in@1.75 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.76 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.80 +1 -1 + NTP_4_2_8P1_BETA4 + + scripts/invoke-plot_summary.texi@1.97 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/invoke-summary.texi@1.97 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.306 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntp-wait/ntp-wait-opts@1.42 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.304 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.304 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntp-wait/ntp-wait.html@1.323 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntp-wait/ntp-wait.man.in@1.304 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.304 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.95 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntpsweep/ntpsweep-opts@1.44 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.83 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.83 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntpsweep/ntpsweep.html@1.96 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntpsweep/ntpsweep.man.in@1.83 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.84 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntptrace/invoke-ntptrace.texi@1.95 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntptrace/ntptrace-opts@1.44 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntptrace/ntptrace.1ntptraceman@1.83 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.83 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntptrace/ntptrace.html@1.96 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/ntptrace/ntptrace.man.in@1.83 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/ntptrace/ntptrace.mdoc.in@1.84 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/plot_summary-opts@1.44 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/plot_summary.1plot_summaryman@1.95 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/plot_summary.1plot_summarymdoc@1.95 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/plot_summary.html@1.98 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/plot_summary.man.in@1.95 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/plot_summary.mdoc.in@1.95 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/summary-opts@1.44 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/summary.1summaryman@1.95 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/summary.1summarymdoc@1.95 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/summary.html@1.98 +2 -2 + NTP_4_2_8P1_BETA4 + + scripts/summary.man.in@1.95 +3 -3 + NTP_4_2_8P1_BETA4 + + scripts/summary.mdoc.in@1.95 +2 -2 + NTP_4_2_8P1_BETA4 + + sntp/invoke-sntp.texi@1.482 +2 -2 + NTP_4_2_8P1_BETA4 + + sntp/sntp-opts.c@1.501 +7 -7 + NTP_4_2_8P1_BETA4 + + sntp/sntp-opts.h@1.499 +3 -3 + NTP_4_2_8P1_BETA4 + + sntp/sntp.1sntpman@1.317 +3 -3 + NTP_4_2_8P1_BETA4 + + sntp/sntp.1sntpmdoc@1.317 +2 -2 + NTP_4_2_8P1_BETA4 + + sntp/sntp.html@1.497 +2 -2 + NTP_4_2_8P1_BETA4 + + sntp/sntp.man.in@1.317 +3 -3 + NTP_4_2_8P1_BETA4 + + sntp/sntp.mdoc.in@1.317 +2 -2 + NTP_4_2_8P1_BETA4 + + util/invoke-ntp-keygen.texi@1.486 +2 -2 + NTP_4_2_8P1_BETA4 + + util/ntp-keygen-opts.c@1.504 +7 -7 + NTP_4_2_8P1_BETA4 + + util/ntp-keygen-opts.h@1.502 +3 -3 + NTP_4_2_8P1_BETA4 + + util/ntp-keygen.1ntp-keygenman@1.314 +3 -3 + NTP_4_2_8P1_BETA4 + + util/ntp-keygen.1ntp-keygenmdoc@1.314 +2 -2 + NTP_4_2_8P1_BETA4 + + util/ntp-keygen.html@1.161 +2 -2 + NTP_4_2_8P1_BETA4 + + util/ntp-keygen.man.in@1.314 +3 -3 + NTP_4_2_8P1_BETA4 + + util/ntp-keygen.mdoc.in@1.314 +2 -2 + NTP_4_2_8P1_BETA4 + +ChangeSet@1.3292.1.3, 2015-01-04 04:48:35-05:00, stenn@deacon.udel.edu + Fix a regression introduced to timepps-Solaris.h + + ChangeLog@1.1613.1.3 +4 -0 + Fix a regression introduced to timepps-Solaris.h + + include/timepps-Solaris.h@1.8 +1 -1 + Fix a regression introduced to timepps-Solaris.h + +ChangeSet@1.3292.1.2, 2015-01-04 09:08:36+00:00, stenn@psp-fb1.ntp.org + [Bug 2695] Build problem on Windows (sys/socket.h) + + ChangeLog@1.1613.1.2 +4 -3 + [Bug 2695] Build problem on Windows (sys/socket.h) + + ntpd/refclock_nmea.c@1.77 +2 -0 + [Bug 2695] Build problem on Windows (sys/socket.h) + +ChangeSet@1.3292.1.1, 2015-01-04 00:20:52+00:00, stenn@psp-fb1.ntp.org + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + ChangeLog@1.1613.1.1 +3 -0 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + ntpd/keyword-gen-utd@1.21 +1 -1 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + ntpd/ntp_keyword.h@1.23 +596 -587 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + ntpd/ntp_parser.c@1.89 +1006 -1001 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + ntpd/ntp_parser.h@1.55 +202 -200 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + +ChangeSet@1.3293, 2015-01-03 10:33:57+00:00, stenn@psp-deb1.ntp.org + [Sec 2671] vallen in extension fields are not validated + + ChangeLog@1.1614 +3 -0 + [Sec 2671] vallen in extension fields are not validated + + ntpd/ntp_crypto.c@1.172 +19 -12 + [Sec 2671] vallen in extension fields are not validated + +ChangeSet@1.3292, 2015-01-02 23:07:47-05:00, stenn@deacon.udel.edu + NTP_4_2_8P1_BETA3 + TAG: NTP_4_2_8P1_BETA3 + + ChangeLog@1.1613 +1 -0 + NTP_4_2_8P1_BETA3 + + ntpd/invoke-ntp.conf.texi@1.171 +15 -1 + NTP_4_2_8P1_BETA3 + + ntpd/invoke-ntp.keys.texi@1.168 +1 -1 + NTP_4_2_8P1_BETA3 + + ntpd/invoke-ntpd.texi@1.484 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpd/ntp.conf.5man@1.205 +18 -3 + NTP_4_2_8P1_BETA3 + + ntpd/ntp.conf.5mdoc@1.205 +16 -2 + NTP_4_2_8P1_BETA3 + + ntpd/ntp.conf.html@1.164 +1 -1 + NTP_4_2_8P1_BETA3 + + ntpd/ntp.conf.man.in@1.205 +18 -3 + NTP_4_2_8P1_BETA3 + + ntpd/ntp.conf.mdoc.in@1.205 +16 -2 + NTP_4_2_8P1_BETA3 + + ntpd/ntp.keys.5man@1.202 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpd/ntp.keys.5mdoc@1.202 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpd/ntp.keys.html@1.165 +1 -1 + NTP_4_2_8P1_BETA3 + + ntpd/ntp.keys.man.in@1.202 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpd/ntp.keys.mdoc.in@1.202 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpd/ntpd-opts.c@1.505 +7 -7 + NTP_4_2_8P1_BETA3 + + ntpd/ntpd-opts.h@1.504 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpd/ntpd.1ntpdman@1.313 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpd/ntpd.1ntpdmdoc@1.313 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpd/ntpd.html@1.159 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpd/ntpd.man.in@1.313 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpd/ntpd.mdoc.in@1.313 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpdc/invoke-ntpdc.texi@1.482 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpdc/ntpdc-opts.c@1.500 +7 -7 + NTP_4_2_8P1_BETA3 + + ntpdc/ntpdc-opts.h@1.499 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpdc/ntpdc.1ntpdcman@1.313 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpdc/ntpdc.1ntpdcmdoc@1.313 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpdc/ntpdc.html@1.326 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpdc/ntpdc.man.in@1.313 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpdc/ntpdc.mdoc.in@1.313 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpq/invoke-ntpq.texi@1.488 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpq/ntpq-opts.c@1.505 +7 -7 + NTP_4_2_8P1_BETA3 + + ntpq/ntpq-opts.h@1.503 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpq/ntpq.1ntpqman@1.316 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpq/ntpq.1ntpqmdoc@1.316 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpq/ntpq.html@1.156 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpq/ntpq.man.in@1.316 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpq/ntpq.mdoc.in@1.316 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.484 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpsnmpd/ntpsnmpd-opts.c@1.502 +7 -7 + NTP_4_2_8P1_BETA3 + + ntpsnmpd/ntpsnmpd-opts.h@1.501 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.313 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.313 +2 -2 + NTP_4_2_8P1_BETA3 + + ntpsnmpd/ntpsnmpd.html@1.154 +1 -1 + NTP_4_2_8P1_BETA3 + + ntpsnmpd/ntpsnmpd.man.in@1.313 +3 -3 + NTP_4_2_8P1_BETA3 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.313 +2 -2 + NTP_4_2_8P1_BETA3 + + packageinfo.sh@1.496 +1 -1 + NTP_4_2_8P1_BETA3 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.75 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.75 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/calc_tickadj/calc_tickadj.html@1.77 +1 -1 + NTP_4_2_8P1_BETA3 + + scripts/calc_tickadj/calc_tickadj.man.in@1.74 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.75 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.79 +1 -1 + NTP_4_2_8P1_BETA3 + + scripts/invoke-plot_summary.texi@1.96 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/invoke-summary.texi@1.96 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.305 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntp-wait/ntp-wait-opts@1.41 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.303 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.303 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntp-wait/ntp-wait.html@1.322 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntp-wait/ntp-wait.man.in@1.303 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.303 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.94 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntpsweep/ntpsweep-opts@1.43 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.82 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.82 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntpsweep/ntpsweep.html@1.95 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntpsweep/ntpsweep.man.in@1.82 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.83 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntptrace/invoke-ntptrace.texi@1.94 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntptrace/ntptrace-opts@1.43 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntptrace/ntptrace.1ntptraceman@1.82 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.82 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntptrace/ntptrace.html@1.95 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/ntptrace/ntptrace.man.in@1.82 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/ntptrace/ntptrace.mdoc.in@1.83 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/plot_summary-opts@1.43 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/plot_summary.1plot_summaryman@1.94 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/plot_summary.1plot_summarymdoc@1.94 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/plot_summary.html@1.97 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/plot_summary.man.in@1.94 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/plot_summary.mdoc.in@1.94 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/summary-opts@1.43 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/summary.1summaryman@1.94 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/summary.1summarymdoc@1.94 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/summary.html@1.97 +2 -2 + NTP_4_2_8P1_BETA3 + + scripts/summary.man.in@1.94 +3 -3 + NTP_4_2_8P1_BETA3 + + scripts/summary.mdoc.in@1.94 +2 -2 + NTP_4_2_8P1_BETA3 + + sntp/invoke-sntp.texi@1.481 +2 -2 + NTP_4_2_8P1_BETA3 + + sntp/sntp-opts.c@1.500 +9 -9 + NTP_4_2_8P1_BETA3 + + sntp/sntp-opts.h@1.498 +3 -3 + NTP_4_2_8P1_BETA3 + + sntp/sntp.1sntpman@1.316 +3 -3 + NTP_4_2_8P1_BETA3 + + sntp/sntp.1sntpmdoc@1.316 +2 -2 + NTP_4_2_8P1_BETA3 + + sntp/sntp.html@1.496 +2 -2 + NTP_4_2_8P1_BETA3 + + sntp/sntp.man.in@1.316 +3 -3 + NTP_4_2_8P1_BETA3 + + sntp/sntp.mdoc.in@1.316 +2 -2 + NTP_4_2_8P1_BETA3 + + util/invoke-ntp-keygen.texi@1.485 +2 -2 + NTP_4_2_8P1_BETA3 + + util/ntp-keygen-opts.c@1.503 +9 -9 + NTP_4_2_8P1_BETA3 + + util/ntp-keygen-opts.h@1.501 +3 -3 + NTP_4_2_8P1_BETA3 + + util/ntp-keygen.1ntp-keygenman@1.313 +3 -3 + NTP_4_2_8P1_BETA3 + + util/ntp-keygen.1ntp-keygenmdoc@1.313 +2 -2 + NTP_4_2_8P1_BETA3 + + util/ntp-keygen.html@1.160 +2 -2 + NTP_4_2_8P1_BETA3 + + util/ntp-keygen.man.in@1.313 +3 -3 + NTP_4_2_8P1_BETA3 + + util/ntp-keygen.mdoc.in@1.313 +2 -2 + NTP_4_2_8P1_BETA3 + +ChangeSet@1.3281.3.3, 2015-01-02 17:37:39+01:00, jnperlin@hydra.(none) + [Bug 2627] changelog file syntax + + ChangeLog@1.1604.3.2 +1 -0 + [Bug 2627] changelog file syntax + +ChangeSet@1.3281.3.2, 2015-01-02 17:23:21+01:00, jnperlin@nemesis.localnet + [Bug 2627] sidekick: avoid runtime conversion trap on MSVC builds + + ntpd/ntp_leapsec.c@1.13.1.1 +2 -1 + [Bug 2627] sidekick: avoid runtime conversion trap on MSVC builds + +ChangeSet@1.3273.1.1, 2015-01-02 13:45:05+01:00, jnperlin@hydra.(none) + [Bug 2627] shm refclock allows only two units with owner-only access + + ChangeLog@1.1597.1.1 +3 -0 + [Bug 2627] shm refclock allows only two units with owner-only access + + html/drivers/driver28.html@1.17 +122 -17 + [Bug 2627] shm refclock allows only two units with owner-only access + update docu + + ntpd/refclock_shm.c@1.30 +111 -114 + [Bug 2627] shm refclock allows only two units with owner-only access + use mode bit 0 to select public access for units >= 2 (default is private for all now) + +ChangeSet@1.3288, 2015-01-02 07:59:13+00:00, stenn@psp-fb1.ntp.org + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/Makefile.am@1.132 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_loopfilter.c@1.176 +44 -8 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/m4/hms_search_lib.m4@1.2 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/m4/ntp_libntp.m4@1.28 +6 -0 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + +ChangeSet@1.3281.1.2, 2015-01-01 07:31:57+00:00, stenn@psp-deb1.ntp.org + [Bug 2681] Fix display of certificate EOValidity dates on 32-bit systems + + ChangeLog@1.1604.1.2 +1 -0 + [Bug 2681] Fix display of certificate EOValidity dates on 32-bit systems + + ntpd/ntp_control.c@1.192.2.1 +28 -4 + [Bug 2681] Fix display of certificate EOValidity dates on 32-bit systems + +ChangeSet@1.3281.2.2, 2014-12-30 05:48:04-05:00, murray@pogo.udel.edu + ChangeLog: + add --- to top of ChangeLog + + ChangeLog@1.1604.2.2 +1 -1 + add --- to top of ChangeLog + +ChangeSet@1.3281.2.1, 2014-12-30 04:55:11-05:00, murray@pogo.udel.edu + ChangeLog, ntp_control.c: + Fix for bug 2700 + + ChangeLog@1.1604.2.1 +2 -0 + Fix for bug 2700 + + ntpd/ntp_control.c@1.192.1.1 +4 -1 + Fix for bug 2700 + +ChangeSet@1.3287, 2014-12-30 01:28:39+00:00, stenn@psp-fb1.ntp.org + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + html/confopt.html@1.63 +3 -1 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + ntpd/ntp.conf.def@1.14 +14 -0 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + +ChangeSet@1.3286, 2014-12-30 00:29:47+00:00, stenn@psp-fb1.ntp.org + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_wwvb.c@1.35 +1 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + +ChangeSet@1.3285, 2014-12-30 00:28:06+00:00, stenn@psp-fb1.ntp.org + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + ChangeLog@1.1609 +1 -0 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + ntpd/keyword-gen.c@1.26 +2 -1 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + ntpd/ntp_config.c@1.321 +29 -13 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + + ntpd/ntp_parser.y@1.82 +3 -0 + [Bug 2715] mdnstries option for ntp.conf from NetBSD + +ChangeSet@1.3278.1.1, 2014-12-29 08:47:40+00:00, stenn@psp-fb1.ntp.org + [Bug 2695] 4.2.8 does not build on Windows + + ChangeLog@1.1601.1.1 +1 -0 + [Bug 2695] 4.2.8 does not build on Windows + + ports/winnt/include/config.h@1.108 +1 -0 + [Bug 2695] 4.2.8 does not build on Windows + + ports/winnt/vs2008/libntp/libntp.vcproj@1.51 +6 -2 + [Bug 2695] 4.2.8 does not build on Windows + + ports/winnt/vs2013/libntp/libntp.vcxproj@1.5 +1 -0 + [Bug 2695] 4.2.8 does not build on Windows + +ChangeSet@1.3284, 2014-12-29 06:57:50+00:00, stenn@psp-fb1.ntp.org + [Bug 2714] libevent may need to be built independently of any build of sntp + + ChangeLog@1.1608 +1 -0 + [Bug 2714] libevent may need to be built independently of any build of sntp + + sntp/Makefile.am@1.78 +7 -7 + [Bug 2714] libevent may need to be built independently of any build of sntp + +ChangeSet@1.3283, 2014-12-29 06:42:07+00:00, stenn@psp-fb1.ntp.org + [Bug 2706] libparse/info_trimble.c build dependencies are broken + + ChangeLog@1.1607 +1 -0 + [Bug 2706] libparse/info_trimble.c build dependencies are broken + + libparse/Makefile.am@1.31 +30 -2 + [Bug 2706] libparse/info_trimble.c build dependencies are broken + + libparse/info_trimble.c@1.6 +2 -2 + [Bug 2706] libparse/info_trimble.c build dependencies are broken + + libparse/mkinfo_rcmd.sed@1.4 +1 -1 + [Bug 2706] libparse/info_trimble.c build dependencies are broken + + libparse/mkinfo_scmd.sed@1.4 +1 -1 + [Bug 2706] libparse/info_trimble.c build dependencies are broken + +ChangeSet@1.3282, 2014-12-29 06:39:40+00:00, stenn@psp-fb1.ntp.org + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ChangeLog@1.1606 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ChangeLog@1.1605 +3 -0 + [Bug 2713] variable type/cast cleanup from NetBSD + + include/audio.h@1.8 +1 -1 + [Bug 2713] variable type/cast cleanup from NetBSD + + include/icom.h@1.6 +1 -1 + [Bug 2713] variable type/cast cleanup from NetBSD + + include/ntp_config.h@1.82 +3 -2 + [Bug 2713] variable type/cast cleanup from NetBSD + + include/ntp_filegen.h@1.11 +1 -1 + [Bug 2713] variable type/cast cleanup from NetBSD + + include/ntp_stdlib.h@1.77 +5 -5 + [Bug 2713] variable type/cast cleanup from NetBSD + + include/ntpd.h@1.184 +3 -3 + [Bug 2713] variable type/cast cleanup from NetBSD + + lib/isc/backtrace.c@1.2 +4 -4 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + lib/isc/event.c@1.2 +1 -3 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + lib/isc/include/isc/backtrace.h@1.2 +2 -2 + [Bug 2713] variable type/cast, parameter name cleanup from NetBSD + + lib/isc/include/isc/socket.h@1.3 +7 -7 + [Bug 2713] variable type/cast, parameter name cleanup from NetBSD + + lib/isc/log.c@1.7 +2 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + lib/isc/netaddr.c@1.13 +2 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + lib/isc/sockaddr.c@1.12 +8 -4 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + lib/isc/unix/ifiter_getifaddrs.c@1.13 +7 -3 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libjsmn/jsmn.c@1.3 +3 -3 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/atoint.c@1.4 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/atolfp.c@1.5 +5 -5 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/atouint.c@1.5 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/audio.c@1.35 +12 -12 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/authkeys.c@1.25 +1 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/authreadkeys.c@1.20 +4 -4 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/emalloc.c@1.17 +2 -0 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/hextoint.c@1.5 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/hextolfp.c@1.4 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/humandate.c@1.12 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/icom.c@1.18 +1 -3 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/modetoa.c@1.6 +3 -3 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/mstolfp.c@1.4 +5 -5 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/ntp_calendar.c@1.14 +5 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/ntp_crypto_rnd.c@1.3 +4 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/ntp_intres.c@1.98 +2 -17 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/ntp_lineedit.c@1.12 +6 -7 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/octtoint.c@1.4 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/prettydate.c@1.19 +7 -7 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/ssl_init.c@1.17 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libntp/timetoa.c@1.5 +3 -6 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libparse/clk_meinberg.c@1.11 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libparse/clk_rawdcf.c@1.17 +10 -10 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + libparse/data_mbg.c@1.12 +3 -3 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_control.c@1.193 +60 -62 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_crypto.c@1.171 +8 -10 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_filegen.c@1.25 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_io.c@1.398 +63 -30 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_leapsec.c@1.14 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_proto.c@1.353 +13 -14 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_request.c@1.113 +8 -9 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_restrict.c@1.36 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_scanner.c@1.46 +14 -14 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntp_util.c@1.116 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/ntpd.c@1.158 +6 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_acts.c@1.54 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_arc.c@1.32 +3 -3 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_chu.c@1.56 +0 -4 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_gpsdjson.c@1.16 +6 -6 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_heath.c@1.19 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_irig.c@1.37 +1 -3 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_jjy.c@1.26 +22 -23 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_jupiter.c@1.29 +54 -55 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_neoclock4x.c@1.23 +7 -7 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_nmea.c@1.76 +7 -6 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_oncore.c@1.102 +80 -80 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_parse.c@1.69 +228 -214 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_pcf.c@1.13 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_true.c@1.23 +1 -0 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_wwv.c@1.79 +3 -3 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpd/refclock_wwvb.c@1.34 +2 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpdate/ntpdate.c@1.93 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpdc/ntpdc.c@1.102 +42 -30 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpdc/ntpdc.h@1.11 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpdc/ntpdc_ops.c@1.80 +6 -6 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpq/ntpq-subs.c@1.102 +103 -107 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpq/ntpq.c@1.154 +43 -32 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpq/ntpq.h@1.29 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpsnmpd/netsnmp_daemonize.c@1.5 +1 -0 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + ntpsnmpd/ntp_snmp.h@1.2 +3 -0 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/crypto.c@1.18 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/autoopts.h@1.19 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/autoopts/options.h@1.29 +9 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/configfile.c@1.22 +6 -6 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/enum.c@1.11 +5 -5 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/file.c@1.15 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/find.c@1.11 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/init.c@1.7 +5 -8 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/load.c@1.20 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/makeshell.c@1.19 +8 -8 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/nested.c@1.15 +7 -7 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/numeric.c@1.14 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/parse-duration.c@1.13 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/pgusage.c@1.17 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/reset.c@1.16 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/save.c@1.17 +10 -10 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/tokenize.c@1.12 +1 -1 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/libopts/usage.c@1.20 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/main.c@1.94 +7 -6 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/networking.c@1.65 +16 -7 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + sntp/sntp-opts.c@1.499 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + util/jitter.h@1.4 +3 -3 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + util/ntp-keygen-opts.c@1.502 +2 -2 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + util/ntp-keygen.c@1.100 +26 -25 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + + util/ntptime.c@1.25 +5 -4 + [Bug 2713] variable type/cast, parameter name, general cleanup from NetBSD + +ChangeSet@1.3281, 2014-12-27 06:33:35-05:00, stenn@deacon.udel.edu + NTP_4_2_8P1_BETA2 + TAG: NTP_4_2_8P1_BETA2 + + ChangeLog@1.1604 +1 -0 + NTP_4_2_8P1_BETA2 + + ntpd/invoke-ntp.conf.texi@1.170 +1 -1 + NTP_4_2_8P1_BETA2 + + ntpd/invoke-ntp.keys.texi@1.167 +1 -1 + NTP_4_2_8P1_BETA2 + + ntpd/invoke-ntpd.texi@1.483 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpd/ntp.conf.5man@1.204 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpd/ntp.conf.5mdoc@1.204 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpd/ntp.conf.html@1.163 +1 -1 + NTP_4_2_8P1_BETA2 + + ntpd/ntp.conf.man.in@1.204 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpd/ntp.conf.mdoc.in@1.204 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpd/ntp.keys.5man@1.201 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpd/ntp.keys.5mdoc@1.201 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpd/ntp.keys.html@1.164 +1 -1 + NTP_4_2_8P1_BETA2 + + ntpd/ntp.keys.man.in@1.201 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpd/ntp.keys.mdoc.in@1.201 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpd/ntpd-opts.c@1.504 +7 -7 + NTP_4_2_8P1_BETA2 + + ntpd/ntpd-opts.h@1.503 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpd/ntpd.1ntpdman@1.312 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpd/ntpd.1ntpdmdoc@1.312 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpd/ntpd.html@1.158 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpd/ntpd.man.in@1.312 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpd/ntpd.mdoc.in@1.312 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpdc/invoke-ntpdc.texi@1.481 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpdc/ntpdc-opts.c@1.499 +7 -7 + NTP_4_2_8P1_BETA2 + + ntpdc/ntpdc-opts.h@1.498 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpdc/ntpdc.1ntpdcman@1.312 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpdc/ntpdc.1ntpdcmdoc@1.312 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpdc/ntpdc.html@1.325 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpdc/ntpdc.man.in@1.312 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpdc/ntpdc.mdoc.in@1.312 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpq/invoke-ntpq.texi@1.487 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpq/ntpq-opts.c@1.504 +7 -7 + NTP_4_2_8P1_BETA2 + + ntpq/ntpq-opts.h@1.502 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpq/ntpq.1ntpqman@1.315 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpq/ntpq.1ntpqmdoc@1.315 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpq/ntpq.html@1.155 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpq/ntpq.man.in@1.315 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpq/ntpq.mdoc.in@1.315 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.483 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpsnmpd/ntpsnmpd-opts.c@1.501 +7 -7 + NTP_4_2_8P1_BETA2 + + ntpsnmpd/ntpsnmpd-opts.h@1.500 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.312 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.312 +2 -2 + NTP_4_2_8P1_BETA2 + + ntpsnmpd/ntpsnmpd.html@1.153 +1 -1 + NTP_4_2_8P1_BETA2 + + ntpsnmpd/ntpsnmpd.man.in@1.312 +3 -3 + NTP_4_2_8P1_BETA2 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.312 +2 -2 + NTP_4_2_8P1_BETA2 + + packageinfo.sh@1.495 +1 -1 + NTP_4_2_8P1_BETA2 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.74 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.74 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/calc_tickadj/calc_tickadj.html@1.76 +1 -1 + NTP_4_2_8P1_BETA2 + + scripts/calc_tickadj/calc_tickadj.man.in@1.73 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.74 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.78 +1 -1 + NTP_4_2_8P1_BETA2 + + scripts/invoke-plot_summary.texi@1.95 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/invoke-summary.texi@1.95 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.304 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntp-wait/ntp-wait-opts@1.40 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.302 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.302 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntp-wait/ntp-wait.html@1.321 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntp-wait/ntp-wait.man.in@1.302 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.302 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.93 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntpsweep/ntpsweep-opts@1.42 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.81 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.81 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntpsweep/ntpsweep.html@1.94 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntpsweep/ntpsweep.man.in@1.81 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.82 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntptrace/invoke-ntptrace.texi@1.93 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntptrace/ntptrace-opts@1.42 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntptrace/ntptrace.1ntptraceman@1.81 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.81 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntptrace/ntptrace.html@1.94 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/ntptrace/ntptrace.man.in@1.81 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/ntptrace/ntptrace.mdoc.in@1.82 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/plot_summary-opts@1.42 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/plot_summary.1plot_summaryman@1.93 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/plot_summary.1plot_summarymdoc@1.93 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/plot_summary.html@1.96 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/plot_summary.man.in@1.93 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/plot_summary.mdoc.in@1.93 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/summary-opts@1.42 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/summary.1summaryman@1.93 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/summary.1summarymdoc@1.93 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/summary.html@1.96 +2 -2 + NTP_4_2_8P1_BETA2 + + scripts/summary.man.in@1.93 +3 -3 + NTP_4_2_8P1_BETA2 + + scripts/summary.mdoc.in@1.93 +2 -2 + NTP_4_2_8P1_BETA2 + + sntp/invoke-sntp.texi@1.480 +2 -2 + NTP_4_2_8P1_BETA2 + + sntp/sntp-opts.c@1.498 +7 -7 + NTP_4_2_8P1_BETA2 + + sntp/sntp-opts.h@1.497 +3 -3 + NTP_4_2_8P1_BETA2 + + sntp/sntp.1sntpman@1.315 +3 -3 + NTP_4_2_8P1_BETA2 + + sntp/sntp.1sntpmdoc@1.315 +2 -2 + NTP_4_2_8P1_BETA2 + + sntp/sntp.html@1.495 +2 -2 + NTP_4_2_8P1_BETA2 + + sntp/sntp.man.in@1.315 +3 -3 + NTP_4_2_8P1_BETA2 + + sntp/sntp.mdoc.in@1.315 +2 -2 + NTP_4_2_8P1_BETA2 + + util/invoke-ntp-keygen.texi@1.484 +2 -2 + NTP_4_2_8P1_BETA2 + + util/ntp-keygen-opts.c@1.501 +7 -7 + NTP_4_2_8P1_BETA2 + + util/ntp-keygen-opts.h@1.500 +3 -3 + NTP_4_2_8P1_BETA2 + + util/ntp-keygen.1ntp-keygenman@1.312 +3 -3 + NTP_4_2_8P1_BETA2 + + util/ntp-keygen.1ntp-keygenmdoc@1.312 +2 -2 + NTP_4_2_8P1_BETA2 + + util/ntp-keygen.html@1.159 +2 -2 + NTP_4_2_8P1_BETA2 + + util/ntp-keygen.man.in@1.312 +3 -3 + NTP_4_2_8P1_BETA2 + + util/ntp-keygen.mdoc.in@1.312 +2 -2 + NTP_4_2_8P1_BETA2 + +ChangeSet@1.3280, 2014-12-26 22:21:06-05:00, stenn@deacon.udel.edu + [Bug 2674] Install sntp in sbin on NetBSD + + ChangeLog@1.1603 +1 -0 + [Bug 2674] Install sntp in sbin on NetBSD + + sntp/loc/netbsd@1.3 +1 -1 + [Bug 2674] Install sntp in sbin on NetBSD + +ChangeSet@1.3279, 2014-12-26 22:11:56-05:00, stenn@deacon.udel.edu + [Bug 2707] Avoid a C90 extension in libjsmn/jsmn.c + + ChangeLog@1.1602 +1 -0 + [Bug 2707] Avoid a C90 extension in libjsmn/jsmn.c + + libjsmn/jsmn.c@1.2 +2 -1 + [Bug 2707] Avoid a C90 extension in libjsmn/jsmn.c + +ChangeSet@1.3278, 2014-12-26 23:56:33+00:00, stenn@psp-deb1.ntp.org + [Bug 2693] ntp-keygen doesn't build without OpenSSL and sntp + + ChangeLog@1.1601 +1 -0 + [Bug 2693] ntp-keygen doesn't build without OpenSSL and sntp + + sntp/Makefile.am@1.77 +5 -4 + [Bug 2693] ntp-keygen doesn't build without OpenSSL and sntp + +ChangeSet@1.3277, 2014-12-26 23:50:15+00:00, stenn@psp-deb1.ntp.org + [Bug 2709] see if we have a C99 compiler (not yet required) + + ChangeLog@1.1600 +1 -1 + [Bug 2709] see if we have a C99 compiler (not yet required) + +ChangeSet@1.3276, 2014-12-26 23:48:57+00:00, stenn@psp-deb1.ntp.org + build: see if we have a C99 compiler (not yet required) + + ChangeLog@1.1599 +3 -0 + build: see if we have a C99 compiler (not yet required) + + sntp/m4/ntp_compiler.m4@1.5 +1 -0 + build: see if we have a C99 compiler (not yet required) + +ChangeSet@1.3275, 2014-12-23 16:59:55-05:00, stenn@deacon.udel.edu + NTP_4_2_8P1_BETA1 + TAG: NTP_4_2_8P1_BETA1 + + ChangeLog@1.1598 +1 -0 + NTP_4_2_8P1_BETA1 + + ntpd/invoke-ntp.conf.texi@1.169 +1 -1 + NTP_4_2_8P1_BETA1 + + ntpd/invoke-ntp.keys.texi@1.166 +1 -1 + NTP_4_2_8P1_BETA1 + + ntpd/invoke-ntpd.texi@1.482 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpd/ntp.conf.5man@1.203 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpd/ntp.conf.5mdoc@1.203 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpd/ntp.conf.html@1.162 +1 -1 + NTP_4_2_8P1_BETA1 + + ntpd/ntp.conf.man.in@1.203 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpd/ntp.conf.mdoc.in@1.203 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpd/ntp.keys.5man@1.200 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpd/ntp.keys.5mdoc@1.200 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpd/ntp.keys.html@1.163 +1 -1 + NTP_4_2_8P1_BETA1 + + ntpd/ntp.keys.man.in@1.200 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpd/ntp.keys.mdoc.in@1.200 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpd/ntpd-opts.c@1.503 +239 -239 + NTP_4_2_8P1_BETA1 + + ntpd/ntpd-opts.h@1.502 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpd/ntpd.1ntpdman@1.311 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpd/ntpd.1ntpdmdoc@1.311 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpd/ntpd.html@1.157 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpd/ntpd.man.in@1.311 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpd/ntpd.mdoc.in@1.311 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpdc/invoke-ntpdc.texi@1.480 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpdc/ntpdc-opts.c@1.498 +107 -107 + NTP_4_2_8P1_BETA1 + + ntpdc/ntpdc-opts.h@1.497 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpdc/ntpdc.1ntpdcman@1.311 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpdc/ntpdc.1ntpdcmdoc@1.311 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpdc/ntpdc.html@1.324 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpdc/ntpdc.man.in@1.311 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpdc/ntpdc.mdoc.in@1.311 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpq/invoke-ntpq.texi@1.486 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpq/ntpq-opts.c@1.503 +106 -106 + NTP_4_2_8P1_BETA1 + + ntpq/ntpq-opts.h@1.501 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpq/ntpq.1ntpqman@1.314 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpq/ntpq.1ntpqmdoc@1.314 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpq/ntpq.html@1.154 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpq/ntpq.man.in@1.314 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpq/ntpq.mdoc.in@1.314 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.482 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpsnmpd/ntpsnmpd-opts.c@1.500 +68 -68 + NTP_4_2_8P1_BETA1 + + ntpsnmpd/ntpsnmpd-opts.h@1.499 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.311 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.311 +2 -2 + NTP_4_2_8P1_BETA1 + + ntpsnmpd/ntpsnmpd.html@1.152 +1 -1 + NTP_4_2_8P1_BETA1 + + ntpsnmpd/ntpsnmpd.man.in@1.311 +3 -3 + NTP_4_2_8P1_BETA1 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.311 +2 -2 + NTP_4_2_8P1_BETA1 + + packageinfo.sh@1.494 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.73 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.73 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/calc_tickadj/calc_tickadj.html@1.75 +1 -1 + NTP_4_2_8P1_BETA1 + + scripts/calc_tickadj/calc_tickadj.man.in@1.72 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.73 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.77 +1 -1 + NTP_4_2_8P1_BETA1 + + scripts/invoke-plot_summary.texi@1.94 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/invoke-summary.texi@1.94 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.303 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntp-wait/ntp-wait-opts@1.39 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.301 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.301 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntp-wait/ntp-wait.html@1.320 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntp-wait/ntp-wait.man.in@1.301 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.301 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.92 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntpsweep/ntpsweep-opts@1.41 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.80 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.80 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntpsweep/ntpsweep.html@1.93 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntpsweep/ntpsweep.man.in@1.80 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.81 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntptrace/invoke-ntptrace.texi@1.92 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntptrace/ntptrace-opts@1.41 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntptrace/ntptrace.1ntptraceman@1.80 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.80 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntptrace/ntptrace.html@1.93 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/ntptrace/ntptrace.man.in@1.80 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/ntptrace/ntptrace.mdoc.in@1.81 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/plot_summary-opts@1.41 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/plot_summary.1plot_summaryman@1.92 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/plot_summary.1plot_summarymdoc@1.92 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/plot_summary.html@1.95 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/plot_summary.man.in@1.92 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/plot_summary.mdoc.in@1.92 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/summary-opts@1.41 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/summary.1summaryman@1.92 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/summary.1summarymdoc@1.92 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/summary.html@1.95 +2 -2 + NTP_4_2_8P1_BETA1 + + scripts/summary.man.in@1.92 +3 -3 + NTP_4_2_8P1_BETA1 + + scripts/summary.mdoc.in@1.92 +2 -2 + NTP_4_2_8P1_BETA1 + + sntp/invoke-sntp.texi@1.479 +2 -2 + NTP_4_2_8P1_BETA1 + + sntp/sntp-opts.c@1.497 +159 -159 + NTP_4_2_8P1_BETA1 + + sntp/sntp-opts.h@1.496 +3 -3 + NTP_4_2_8P1_BETA1 + + sntp/sntp.1sntpman@1.314 +3 -3 + NTP_4_2_8P1_BETA1 + + sntp/sntp.1sntpmdoc@1.314 +2 -2 + NTP_4_2_8P1_BETA1 + + sntp/sntp.html@1.494 +2 -2 + NTP_4_2_8P1_BETA1 + + sntp/sntp.man.in@1.314 +3 -3 + NTP_4_2_8P1_BETA1 + + sntp/sntp.mdoc.in@1.314 +2 -2 + NTP_4_2_8P1_BETA1 + + util/invoke-ntp-keygen.texi@1.483 +2 -2 + NTP_4_2_8P1_BETA1 + + util/ntp-keygen-opts.c@1.500 +173 -173 + NTP_4_2_8P1_BETA1 + + util/ntp-keygen-opts.h@1.499 +3 -3 + NTP_4_2_8P1_BETA1 + + util/ntp-keygen.1ntp-keygenman@1.311 +3 -3 + NTP_4_2_8P1_BETA1 + + util/ntp-keygen.1ntp-keygenmdoc@1.311 +2 -2 + NTP_4_2_8P1_BETA1 + + util/ntp-keygen.html@1.158 +2 -2 + NTP_4_2_8P1_BETA1 + + util/ntp-keygen.man.in@1.311 +3 -3 + NTP_4_2_8P1_BETA1 + + util/ntp-keygen.mdoc.in@1.311 +2 -2 + NTP_4_2_8P1_BETA1 + +ChangeSet@1.3274, 2014-12-23 21:36:47+00:00, stenn@psp-deb1.ntp.org + Disable config.cache-* files for now + + build@1.49 +5 -1 + Disable config.cache-* files for now + +ChangeSet@1.3273, 2014-12-23 04:34:37+00:00, stenn@psp-deb1.ntp.org + Update cvo.sh for new CentOS version format + + sntp/scripts/cvo.sh@1.8 +7 -1 + Update cvo.sh for new CentOS version format + +ChangeSet@1.3272, 2014-12-22 05:59:33+00:00, stenn@psp-fb1.ntp.org + [Bug 2693] ntp-keygen doesn't build without OpenSSL + + ChangeLog@1.1597 +2 -1 + [Bug 2693] ntp-keygen doesn't build without OpenSSL + + Makefile.am@1.124 +3 -2 + [Bug 2693] ntp-keygen doesn't build without OpenSSL + + configure.ac@1.579 +5 -1 + [Bug 2693] ntp-keygen doesn't build without OpenSSL + + libntp/ntp_crypto_rnd.c@1.2 +15 -0 + [Bug 2693] ntp-keygen doesn't build without OpenSSL + + sntp/configure.ac@1.77 +8 -5 + [Bug 2693] ntp-keygen doesn't build without OpenSSL + + sntp/m4/ntp_libevent.m4@1.12 +23 -2 + [Bug 2693] ntp-keygen doesn't build without OpenSSL + + util/Makefile.am@1.77 +1 -0 + [Bug 2693] ntp-keygen doesn't build without OpenSSL + +ChangeSet@1.3271, 2014-12-22 05:51:47+00:00, stenn@psp-fb1.ntp.org + [Bug 2699] IN6_IS_ADDR_LOOPBACK build problems on some OSes + + ChangeLog@1.1596 +1 -0 + [Bug 2699] IN6_IS_ADDR_LOOPBACK build problems on some OSes + +ChangeSet@1.3270, 2014-12-22 02:55:14+00:00, stenn@psp-deb1.ntp.org + [Bug 2699] HAVE_SYS_SELECT_H is misspelled in refclock_gpsdjson.c + + ChangeLog@1.1595 +3 -0 + [Bug 2699] HAVE_SYS_SELECT_H is misspelled in refclock_gpsdjson.c + + ntpd/refclock_gpsdjson.c@1.15 +1 -1 + [Bug 2699] HAVE_SYS_SELECT_H is misspelled in refclock_gpsdjson.c + +ChangeSet@1.3269, 2014-12-22 02:52:42+00:00, stenn@psp-deb1.ntp.org + NEWS file update + + NEWS@1.129 +39 -12 + +ChangeSet@1.3268, 2014-12-21 01:24:15+00:00, stenn@psp-deb1.ntp.org + [Sec 2672] On some OSes ::1 can be spoofed, bypassing source IP ACLs + + ChangeLog@1.1594 +1 -0 + [Sec 2672] On some OSes ::1 can be spoofed, bypassing source IP ACLs + + ntpd/ntp_io.c@1.397 +4 -6 + [Sec 2672] On some OSes ::1 can be spoofed, bypassing source IP ACLs + +ChangeSet@1.3267, 2014-12-21 00:35:39+00:00, stenn@psp-deb1.ntp.org + typo + + build@1.48 +1 -1 + typo + +ChangeSet@1.3266, 2014-12-19 07:53:07-05:00, stenn@deacon.udel.edu + NTP_4_2_8 + TAG: NTP_4_2_8 + + ChangeLog@1.1593 +1 -0 + NTP_4_2_8 + + ntpd/invoke-ntp.conf.texi@1.168 +1 -1 + NTP_4_2_8 + + ntpd/invoke-ntp.keys.texi@1.165 +1 -1 + NTP_4_2_8 + + ntpd/invoke-ntpd.texi@1.481 +2 -2 + NTP_4_2_8 + + ntpd/ntp.conf.5man@1.202 +3 -3 + NTP_4_2_8 + + ntpd/ntp.conf.5mdoc@1.202 +2 -2 + NTP_4_2_8 + + ntpd/ntp.conf.html@1.161 +1 -1 + NTP_4_2_8 + + ntpd/ntp.conf.man.in@1.202 +3 -3 + NTP_4_2_8 + + ntpd/ntp.conf.mdoc.in@1.202 +2 -2 + NTP_4_2_8 + + ntpd/ntp.keys.5man@1.199 +2 -2 + NTP_4_2_8 + + ntpd/ntp.keys.5mdoc@1.199 +2 -2 + NTP_4_2_8 + + ntpd/ntp.keys.html@1.162 +1 -1 + NTP_4_2_8 + + ntpd/ntp.keys.man.in@1.199 +2 -2 + NTP_4_2_8 + + ntpd/ntp.keys.mdoc.in@1.199 +2 -2 + NTP_4_2_8 + + ntpd/ntpd-opts.c@1.502 +239 -239 + NTP_4_2_8 + + ntpd/ntpd-opts.h@1.501 +3 -3 + NTP_4_2_8 + + ntpd/ntpd.1ntpdman@1.310 +3 -3 + NTP_4_2_8 + + ntpd/ntpd.1ntpdmdoc@1.310 +2 -2 + NTP_4_2_8 + + ntpd/ntpd.html@1.156 +2 -2 + NTP_4_2_8 + + ntpd/ntpd.man.in@1.310 +3 -3 + NTP_4_2_8 + + ntpd/ntpd.mdoc.in@1.310 +2 -2 + NTP_4_2_8 + + ntpdc/invoke-ntpdc.texi@1.479 +2 -2 + NTP_4_2_8 + + ntpdc/ntpdc-opts.c@1.497 +107 -107 + NTP_4_2_8 + + ntpdc/ntpdc-opts.h@1.496 +3 -3 + NTP_4_2_8 + + ntpdc/ntpdc.1ntpdcman@1.310 +3 -3 + NTP_4_2_8 + + ntpdc/ntpdc.1ntpdcmdoc@1.310 +2 -2 + NTP_4_2_8 + + ntpdc/ntpdc.html@1.323 +2 -2 + NTP_4_2_8 + + ntpdc/ntpdc.man.in@1.310 +3 -3 + NTP_4_2_8 + + ntpdc/ntpdc.mdoc.in@1.310 +2 -2 + NTP_4_2_8 + + ntpq/invoke-ntpq.texi@1.485 +2 -2 + NTP_4_2_8 + + ntpq/ntpq-opts.c@1.502 +106 -106 + NTP_4_2_8 + + ntpq/ntpq-opts.h@1.500 +3 -3 + NTP_4_2_8 + + ntpq/ntpq.1ntpqman@1.313 +3 -3 + NTP_4_2_8 + + ntpq/ntpq.1ntpqmdoc@1.313 +2 -2 + NTP_4_2_8 + + ntpq/ntpq.html@1.153 +2 -2 + NTP_4_2_8 + + ntpq/ntpq.man.in@1.313 +3 -3 + NTP_4_2_8 + + ntpq/ntpq.mdoc.in@1.313 +2 -2 + NTP_4_2_8 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.481 +2 -2 + NTP_4_2_8 + + ntpsnmpd/ntpsnmpd-opts.c@1.499 +68 -68 + NTP_4_2_8 + + ntpsnmpd/ntpsnmpd-opts.h@1.498 +3 -3 + NTP_4_2_8 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.310 +3 -3 + NTP_4_2_8 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.310 +2 -2 + NTP_4_2_8 + + ntpsnmpd/ntpsnmpd.html@1.151 +1 -1 + NTP_4_2_8 + + ntpsnmpd/ntpsnmpd.man.in@1.310 +3 -3 + NTP_4_2_8 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.310 +2 -2 + NTP_4_2_8 + + packageinfo.sh@1.493 +1 -1 + NTP_4_2_8 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.72 +3 -3 + NTP_4_2_8 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.72 +2 -2 + NTP_4_2_8 + + scripts/calc_tickadj/calc_tickadj.html@1.74 +1 -1 + NTP_4_2_8 + + scripts/calc_tickadj/calc_tickadj.man.in@1.71 +3 -3 + NTP_4_2_8 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.72 +2 -2 + NTP_4_2_8 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.76 +1 -1 + NTP_4_2_8 + + scripts/invoke-plot_summary.texi@1.93 +2 -2 + NTP_4_2_8 + + scripts/invoke-summary.texi@1.93 +2 -2 + NTP_4_2_8 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.302 +2 -2 + NTP_4_2_8 + + scripts/ntp-wait/ntp-wait-opts@1.38 +2 -2 + NTP_4_2_8 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.300 +3 -3 + NTP_4_2_8 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.300 +2 -2 + NTP_4_2_8 + + scripts/ntp-wait/ntp-wait.html@1.319 +2 -2 + NTP_4_2_8 + + scripts/ntp-wait/ntp-wait.man.in@1.300 +3 -3 + NTP_4_2_8 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.300 +2 -2 + NTP_4_2_8 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.91 +2 -2 + NTP_4_2_8 + + scripts/ntpsweep/ntpsweep-opts@1.40 +2 -2 + NTP_4_2_8 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.79 +3 -3 + NTP_4_2_8 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.79 +2 -2 + NTP_4_2_8 + + scripts/ntpsweep/ntpsweep.html@1.92 +2 -2 + NTP_4_2_8 + + scripts/ntpsweep/ntpsweep.man.in@1.79 +3 -3 + NTP_4_2_8 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.80 +2 -2 + NTP_4_2_8 + + scripts/ntptrace/invoke-ntptrace.texi@1.91 +2 -2 + NTP_4_2_8 + + scripts/ntptrace/ntptrace-opts@1.40 +2 -2 + NTP_4_2_8 + + scripts/ntptrace/ntptrace.1ntptraceman@1.79 +3 -3 + NTP_4_2_8 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.79 +2 -2 + NTP_4_2_8 + + scripts/ntptrace/ntptrace.html@1.92 +2 -2 + NTP_4_2_8 + + scripts/ntptrace/ntptrace.man.in@1.79 +3 -3 + NTP_4_2_8 + + scripts/ntptrace/ntptrace.mdoc.in@1.80 +2 -2 + NTP_4_2_8 + + scripts/plot_summary-opts@1.40 +2 -2 + NTP_4_2_8 + + scripts/plot_summary.1plot_summaryman@1.91 +3 -3 + NTP_4_2_8 + + scripts/plot_summary.1plot_summarymdoc@1.91 +2 -2 + NTP_4_2_8 + + scripts/plot_summary.html@1.94 +2 -2 + NTP_4_2_8 + + scripts/plot_summary.man.in@1.91 +3 -3 + NTP_4_2_8 + + scripts/plot_summary.mdoc.in@1.91 +2 -2 + NTP_4_2_8 + + scripts/summary-opts@1.40 +2 -2 + NTP_4_2_8 + + scripts/summary.1summaryman@1.91 +3 -3 + NTP_4_2_8 + + scripts/summary.1summarymdoc@1.91 +2 -2 + NTP_4_2_8 + + scripts/summary.html@1.94 +2 -2 + NTP_4_2_8 + + scripts/summary.man.in@1.91 +3 -3 + NTP_4_2_8 + + scripts/summary.mdoc.in@1.91 +2 -2 + NTP_4_2_8 + + sntp/invoke-sntp.texi@1.478 +2 -2 + NTP_4_2_8 + + sntp/sntp-opts.c@1.496 +159 -159 + NTP_4_2_8 + + sntp/sntp-opts.h@1.495 +3 -3 + NTP_4_2_8 + + sntp/sntp.1sntpman@1.313 +3 -3 + NTP_4_2_8 + + sntp/sntp.1sntpmdoc@1.313 +2 -2 + NTP_4_2_8 + + sntp/sntp.html@1.493 +2 -2 + NTP_4_2_8 + + sntp/sntp.man.in@1.313 +3 -3 + NTP_4_2_8 + + sntp/sntp.mdoc.in@1.313 +2 -2 + NTP_4_2_8 + + util/invoke-ntp-keygen.texi@1.482 +2 -2 + NTP_4_2_8 + + util/ntp-keygen-opts.c@1.499 +173 -173 + NTP_4_2_8 + + util/ntp-keygen-opts.h@1.498 +3 -3 + NTP_4_2_8 + + util/ntp-keygen.1ntp-keygenman@1.310 +3 -3 + NTP_4_2_8 + + util/ntp-keygen.1ntp-keygenmdoc@1.310 +2 -2 + NTP_4_2_8 + + util/ntp-keygen.html@1.157 +2 -2 + NTP_4_2_8 + + util/ntp-keygen.man.in@1.310 +3 -3 + NTP_4_2_8 + + util/ntp-keygen.mdoc.in@1.310 +2 -2 + NTP_4_2_8 + +ChangeSet@1.3265, 2014-12-19 05:55:30-05:00, stenn@deacon.udel.edu + ntp-4.2.8 + + ChangeLog@1.1592 +2 -0 + ntp-4.2.8 + + packageinfo.sh@1.492 +4 -4 + ntp-4.2.8 + +ChangeSet@1.3264, 2014-12-19 04:43:15-05:00, stenn@deacon.udel.edu + Disable Sec 2672 interim fix for now + + ntpd/ntp_io.c@1.396 +3 -0 + Disable Sec 2672 interim fix for now + +ChangeSet@1.3263, 2014-12-19 04:41:40-05:00, stenn@deacon.udel.edu + cleanup + + ChangeLog@1.1591 +0 -2 + cleanup + +ChangeSet@1.3245.1.7, 2014-12-19 08:05:17+00:00, stenn@psp-deb1.ntp.org + NEWS file for 4.2.8 + + NEWS@1.128 +136 -5 + NEWS file for 4.2.8 + +ChangeSet@1.3245.1.6, 2014-12-18 23:01:06-05:00, stenn@deacon.udel.edu + [Sec 730] Increase RSA_generate_key modulus + + ChangeLog@1.1579.1.5 +1 -0 + [Sec 730] Increase RSA_generate_key modulus + + util/ntp-keygen.c@1.97.1.1 +2 -2 + [Sec 730] Increase RSA_generate_key modulus + +ChangeSet@1.3245.1.5, 2014-12-18 21:42:38-05:00, stenn@deacon.udel.edu + [Bug 2691] Wrong variable name in refclock_ripencc.c + + ChangeLog@1.1579.1.4 +1 -0 + [Bug 2691] Wrong variable name in refclock_ripencc.c + + ntpd/refclock_ripencc.c@1.18 +1 -1 + [Bug 2691] Wrong variable name in refclock_ripencc.c + +ChangeSet@1.3260, 2014-12-18 13:14:59+00:00, stenn@psp-deb1.ntp.org + [Sec 2671] vallen in extension fields are not validated + + ChangeLog@1.1589 +1 -0 + [Sec 2671] vallen in extension fields are not validated + + ntpd/ntp_proto.c@1.352 +9 -1 + [Sec 2671] vallen in extension fields are not validated + +ChangeSet@1.3259, 2014-12-18 13:11:35+00:00, stenn@psp-deb1.ntp.org + [Sec 2672] On some OSes ::1 can be spoofed, bypassing source IP ACLs: debug output tweaking + + ntpd/ntp_io.c@1.395 +6 -2 + [Sec 2672] On some OSes ::1 can be spoofed, bypassing source IP ACLs: debug output tweaking + +ChangeSet@1.3256.1.1, 2014-12-18 10:08:38+00:00, stenn@psp-deb1.ntp.org + Comment cleanup + + ntpd/ntp_crypto.c@1.170 +1 -0 + Comment cleanup + +ChangeSet@1.3245.1.4, 2014-12-18 09:42:02+00:00, stenn@deacon.udel.edu + NTP_4_2_7P486_RC + TAG: NTP_4_2_7P486_RC + + ChangeLog@1.1579.1.3 +1 -0 + NTP_4_2_7P486_RC + + ntpd/invoke-ntp.conf.texi@1.167 +1 -1 + NTP_4_2_7P486_RC + + ntpd/invoke-ntp.keys.texi@1.164 +1 -1 + NTP_4_2_7P486_RC + + ntpd/invoke-ntpd.texi@1.480 +2 -2 + NTP_4_2_7P486_RC + + ntpd/ntp.conf.5man@1.201 +3 -3 + NTP_4_2_7P486_RC + + ntpd/ntp.conf.5mdoc@1.201 +2 -2 + NTP_4_2_7P486_RC + + ntpd/ntp.conf.html@1.160 +1 -1 + NTP_4_2_7P486_RC + + ntpd/ntp.conf.man.in@1.201 +3 -3 + NTP_4_2_7P486_RC + + ntpd/ntp.conf.mdoc.in@1.201 +2 -2 + NTP_4_2_7P486_RC + + ntpd/ntp.keys.5man@1.198 +2 -2 + NTP_4_2_7P486_RC + + ntpd/ntp.keys.5mdoc@1.198 +2 -2 + NTP_4_2_7P486_RC + + ntpd/ntp.keys.html@1.161 +1 -1 + NTP_4_2_7P486_RC + + ntpd/ntp.keys.man.in@1.198 +2 -2 + NTP_4_2_7P486_RC + + ntpd/ntp.keys.mdoc.in@1.198 +2 -2 + NTP_4_2_7P486_RC + + ntpd/ntpd-opts.c@1.501 +7 -7 + NTP_4_2_7P486_RC + + ntpd/ntpd-opts.h@1.500 +3 -3 + NTP_4_2_7P486_RC + + ntpd/ntpd.1ntpdman@1.309 +3 -3 + NTP_4_2_7P486_RC + + ntpd/ntpd.1ntpdmdoc@1.309 +2 -2 + NTP_4_2_7P486_RC + + ntpd/ntpd.html@1.155 +2 -2 + NTP_4_2_7P486_RC + + ntpd/ntpd.man.in@1.309 +3 -3 + NTP_4_2_7P486_RC + + ntpd/ntpd.mdoc.in@1.309 +2 -2 + NTP_4_2_7P486_RC + + ntpdc/invoke-ntpdc.texi@1.478 +2 -2 + NTP_4_2_7P486_RC + + ntpdc/ntpdc-opts.c@1.496 +7 -7 + NTP_4_2_7P486_RC + + ntpdc/ntpdc-opts.h@1.495 +3 -3 + NTP_4_2_7P486_RC + + ntpdc/ntpdc.1ntpdcman@1.309 +3 -3 + NTP_4_2_7P486_RC + + ntpdc/ntpdc.1ntpdcmdoc@1.309 +2 -2 + NTP_4_2_7P486_RC + + ntpdc/ntpdc.html@1.322 +2 -2 + NTP_4_2_7P486_RC + + ntpdc/ntpdc.man.in@1.309 +3 -3 + NTP_4_2_7P486_RC + + ntpdc/ntpdc.mdoc.in@1.309 +2 -2 + NTP_4_2_7P486_RC + + ntpq/invoke-ntpq.texi@1.484 +2 -2 + NTP_4_2_7P486_RC + + ntpq/ntpq-opts.c@1.501 +7 -7 + NTP_4_2_7P486_RC + + ntpq/ntpq-opts.h@1.499 +3 -3 + NTP_4_2_7P486_RC + + ntpq/ntpq.1ntpqman@1.312 +3 -3 + NTP_4_2_7P486_RC + + ntpq/ntpq.1ntpqmdoc@1.312 +2 -2 + NTP_4_2_7P486_RC + + ntpq/ntpq.html@1.152 +2 -2 + NTP_4_2_7P486_RC + + ntpq/ntpq.man.in@1.312 +3 -3 + NTP_4_2_7P486_RC + + ntpq/ntpq.mdoc.in@1.312 +2 -2 + NTP_4_2_7P486_RC + + ntpsnmpd/invoke-ntpsnmpd.texi@1.480 +2 -2 + NTP_4_2_7P486_RC + + ntpsnmpd/ntpsnmpd-opts.c@1.498 +7 -7 + NTP_4_2_7P486_RC + + ntpsnmpd/ntpsnmpd-opts.h@1.497 +3 -3 + NTP_4_2_7P486_RC + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.309 +3 -3 + NTP_4_2_7P486_RC + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.309 +2 -2 + NTP_4_2_7P486_RC + + ntpsnmpd/ntpsnmpd.html@1.150 +1 -1 + NTP_4_2_7P486_RC + + ntpsnmpd/ntpsnmpd.man.in@1.309 +3 -3 + NTP_4_2_7P486_RC + + ntpsnmpd/ntpsnmpd.mdoc.in@1.309 +2 -2 + NTP_4_2_7P486_RC + + packageinfo.sh@1.491 +1 -1 + NTP_4_2_7P486_RC + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.71 +3 -3 + NTP_4_2_7P486_RC + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.71 +2 -2 + NTP_4_2_7P486_RC + + scripts/calc_tickadj/calc_tickadj.html@1.73 +1 -1 + NTP_4_2_7P486_RC + + scripts/calc_tickadj/calc_tickadj.man.in@1.70 +3 -3 + NTP_4_2_7P486_RC + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.71 +2 -2 + NTP_4_2_7P486_RC + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.75 +1 -1 + NTP_4_2_7P486_RC + + scripts/invoke-plot_summary.texi@1.92 +2 -2 + NTP_4_2_7P486_RC + + scripts/invoke-summary.texi@1.92 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntp-wait/invoke-ntp-wait.texi@1.301 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntp-wait/ntp-wait-opts@1.37 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.299 +3 -3 + NTP_4_2_7P486_RC + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.299 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntp-wait/ntp-wait.html@1.318 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntp-wait/ntp-wait.man.in@1.299 +3 -3 + NTP_4_2_7P486_RC + + scripts/ntp-wait/ntp-wait.mdoc.in@1.299 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntpsweep/invoke-ntpsweep.texi@1.90 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntpsweep/ntpsweep-opts@1.39 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.78 +3 -3 + NTP_4_2_7P486_RC + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.78 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntpsweep/ntpsweep.html@1.91 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntpsweep/ntpsweep.man.in@1.78 +3 -3 + NTP_4_2_7P486_RC + + scripts/ntpsweep/ntpsweep.mdoc.in@1.79 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntptrace/invoke-ntptrace.texi@1.90 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntptrace/ntptrace-opts@1.39 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntptrace/ntptrace.1ntptraceman@1.78 +3 -3 + NTP_4_2_7P486_RC + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.78 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntptrace/ntptrace.html@1.91 +2 -2 + NTP_4_2_7P486_RC + + scripts/ntptrace/ntptrace.man.in@1.78 +3 -3 + NTP_4_2_7P486_RC + + scripts/ntptrace/ntptrace.mdoc.in@1.79 +2 -2 + NTP_4_2_7P486_RC + + scripts/plot_summary-opts@1.39 +2 -2 + NTP_4_2_7P486_RC + + scripts/plot_summary.1plot_summaryman@1.90 +3 -3 + NTP_4_2_7P486_RC + + scripts/plot_summary.1plot_summarymdoc@1.90 +2 -2 + NTP_4_2_7P486_RC + + scripts/plot_summary.html@1.93 +2 -2 + NTP_4_2_7P486_RC + + scripts/plot_summary.man.in@1.90 +3 -3 + NTP_4_2_7P486_RC + + scripts/plot_summary.mdoc.in@1.90 +2 -2 + NTP_4_2_7P486_RC + + scripts/summary-opts@1.39 +2 -2 + NTP_4_2_7P486_RC + + scripts/summary.1summaryman@1.90 +3 -3 + NTP_4_2_7P486_RC + + scripts/summary.1summarymdoc@1.90 +2 -2 + NTP_4_2_7P486_RC + + scripts/summary.html@1.93 +2 -2 + NTP_4_2_7P486_RC + + scripts/summary.man.in@1.90 +3 -3 + NTP_4_2_7P486_RC + + scripts/summary.mdoc.in@1.90 +2 -2 + NTP_4_2_7P486_RC + + sntp/invoke-sntp.texi@1.477 +2 -2 + NTP_4_2_7P486_RC + + sntp/sntp-opts.c@1.495 +7 -7 + NTP_4_2_7P486_RC + + sntp/sntp-opts.h@1.494 +3 -3 + NTP_4_2_7P486_RC + + sntp/sntp.1sntpman@1.312 +3 -3 + NTP_4_2_7P486_RC + + sntp/sntp.1sntpmdoc@1.312 +2 -2 + NTP_4_2_7P486_RC + + sntp/sntp.html@1.492 +2 -2 + NTP_4_2_7P486_RC + + sntp/sntp.man.in@1.312 +3 -3 + NTP_4_2_7P486_RC + + sntp/sntp.mdoc.in@1.312 +2 -2 + NTP_4_2_7P486_RC + + util/invoke-ntp-keygen.texi@1.481 +2 -2 + NTP_4_2_7P486_RC + + util/ntp-keygen-opts.c@1.498 +7 -7 + NTP_4_2_7P486_RC + + util/ntp-keygen-opts.h@1.497 +3 -3 + NTP_4_2_7P486_RC + + util/ntp-keygen.1ntp-keygenman@1.309 +3 -3 + NTP_4_2_7P486_RC + + util/ntp-keygen.1ntp-keygenmdoc@1.309 +2 -2 + NTP_4_2_7P486_RC + + util/ntp-keygen.html@1.156 +2 -2 + NTP_4_2_7P486_RC + + util/ntp-keygen.man.in@1.309 +3 -3 + NTP_4_2_7P486_RC + + util/ntp-keygen.mdoc.in@1.309 +2 -2 + NTP_4_2_7P486_RC + +ChangeSet@1.3255, 2014-12-18 01:18:29+00:00, stenn@psp-deb1.ntp.org + [Sec 2672] On some OSes ::1 can be spoofed, bypassing source IP ACLs + + ChangeLog@1.1586 +1 -0 + [Sec 2672] On some OSes ::1 can be spoofed, bypassing source IP ACLs + + ntpd/ntp_io.c@1.394 +20 -0 + [Sec 2672] On some OSes ::1 can be spoofed, bypassing source IP ACLs + +ChangeSet@1.3254, 2014-12-18 01:17:02+00:00, stenn@psp-deb1.ntp.org + ntp_io.c lint removal + + ntpd/ntp_io.c@1.393 +4 -1 + lint removal + +ChangeSet@1.3245.1.3, 2014-12-16 04:59:54-05:00, murray@pogo.udel.edu + refclock_hpgps.c: + Fix typo. + + ntpd/refclock_hpgps.c@1.16 +1 -1 + Fix typo. + +ChangeSet@1.3245.1.2, 2014-12-16 03:36:46-05:00, murray@pogo.udel.edu + refclock_hpgps.c, ChangeLog: + Fix for bug 2687: RefClock 26/hpgps doesn't work at default line speed + + ChangeLog@1.1579.1.2 +1 -0 + Fix for bug 2687: RefClock 26/hpgps doesn't work at default line speed + + ntpd/refclock_hpgps.c@1.15 +6 -3 + Fix for bug 2687: RefClock 26/hpgps doesn't work at default line speed + +ChangeSet@1.3253, 2014-12-15 13:12:45+00:00, stenn@psp-deb1.ntp.org + Use finer-grained config.cache files for our configure runs + + build@1.47 +2 -2 + Use finer-grained config.cache files for our configure runs + +ChangeSet@1.3252, 2014-12-15 05:40:20+00:00, stenn@psp-deb1.ntp.org + Quiet some debug output + + sntp/m4/ntp_crypto_rand.m4@1.2 +1 -1 + Quiet some debug output + +ChangeSet@1.3251, 2014-12-14 16:12:13+00:00, stenn@psp-deb1.ntp.org + [Sec 2666] Use cryptographic random numbers for md5 key generation + + ChangeLog@1.1585 +1 -0 + [Sec 2666] Use cryptographic random numbers for md5 key generation + + configure.ac@1.578 +2 -0 + [Sec 2666] Use cryptographic random numbers for md5 key generation + + include/ntp_random.h@1.3 +3 -0 + [Sec 2666] Use cryptographic random numbers for md5 key generation + + libntp/Makefile.am@1.75 +2 -1 + [Sec 2666] Use cryptographic random numbers for md5 key generation + + libntp/ntp_crypto_rnd.c@1.1 +96 -0 + BitKeeper file /home/stenn/ntp-dev-sec-2666/libntp/ntp_crypto_rnd.c + + libntp/ntp_crypto_rnd.c@1.0 +0 -0 + + sntp/m4/ntp_crypto_rand.m4@1.1 +53 -0 + BitKeeper file /home/stenn/ntp-dev-sec-2666/sntp/m4/ntp_crypto_rand.m4 + + sntp/m4/ntp_crypto_rand.m4@1.0 +0 -0 + + util/ntp-keygen.c@1.98 +10 -2 + [Sec 2666] Use cryptographic random numbers for md5 key generation + +ChangeSet@1.3245.1.1, 2014-12-12 11:58:58+00:00, stenn@deacon.udel.edu + NTP_4_2_7P485_RC + TAG: NTP_4_2_7P485_RC + + ChangeLog@1.1579.1.1 +1 -0 + NTP_4_2_7P485_RC + + ntpd/invoke-ntp.conf.texi@1.166 +1 -1 + NTP_4_2_7P485_RC + + ntpd/invoke-ntp.keys.texi@1.163 +1 -1 + NTP_4_2_7P485_RC + + ntpd/invoke-ntpd.texi@1.479 +2 -2 + NTP_4_2_7P485_RC + + ntpd/ntp.conf.5man@1.200 +3 -3 + NTP_4_2_7P485_RC + + ntpd/ntp.conf.5mdoc@1.200 +2 -2 + NTP_4_2_7P485_RC + + ntpd/ntp.conf.html@1.159 +1 -1 + NTP_4_2_7P485_RC + + ntpd/ntp.conf.man.in@1.200 +3 -3 + NTP_4_2_7P485_RC + + ntpd/ntp.conf.mdoc.in@1.200 +2 -2 + NTP_4_2_7P485_RC + + ntpd/ntp.keys.5man@1.197 +2 -2 + NTP_4_2_7P485_RC + + ntpd/ntp.keys.5mdoc@1.197 +2 -2 + NTP_4_2_7P485_RC + + ntpd/ntp.keys.html@1.160 +1 -1 + NTP_4_2_7P485_RC + + ntpd/ntp.keys.man.in@1.197 +2 -2 + NTP_4_2_7P485_RC + + ntpd/ntp.keys.mdoc.in@1.197 +2 -2 + NTP_4_2_7P485_RC + + ntpd/ntpd-opts.c@1.500 +7 -7 + NTP_4_2_7P485_RC + + ntpd/ntpd-opts.h@1.499 +3 -3 + NTP_4_2_7P485_RC + + ntpd/ntpd.1ntpdman@1.308 +3 -3 + NTP_4_2_7P485_RC + + ntpd/ntpd.1ntpdmdoc@1.308 +2 -2 + NTP_4_2_7P485_RC + + ntpd/ntpd.html@1.154 +2 -2 + NTP_4_2_7P485_RC + + ntpd/ntpd.man.in@1.308 +3 -3 + NTP_4_2_7P485_RC + + ntpd/ntpd.mdoc.in@1.308 +2 -2 + NTP_4_2_7P485_RC + + ntpdc/invoke-ntpdc.texi@1.477 +2 -2 + NTP_4_2_7P485_RC + + ntpdc/ntpdc-opts.c@1.495 +7 -7 + NTP_4_2_7P485_RC + + ntpdc/ntpdc-opts.h@1.494 +3 -3 + NTP_4_2_7P485_RC + + ntpdc/ntpdc.1ntpdcman@1.308 +3 -3 + NTP_4_2_7P485_RC + + ntpdc/ntpdc.1ntpdcmdoc@1.308 +2 -2 + NTP_4_2_7P485_RC + + ntpdc/ntpdc.html@1.321 +2 -2 + NTP_4_2_7P485_RC + + ntpdc/ntpdc.man.in@1.308 +3 -3 + NTP_4_2_7P485_RC + + ntpdc/ntpdc.mdoc.in@1.308 +2 -2 + NTP_4_2_7P485_RC + + ntpq/invoke-ntpq.texi@1.483 +2 -2 + NTP_4_2_7P485_RC + + ntpq/ntpq-opts.c@1.500 +7 -7 + NTP_4_2_7P485_RC + + ntpq/ntpq-opts.h@1.498 +3 -3 + NTP_4_2_7P485_RC + + ntpq/ntpq.1ntpqman@1.311 +3 -3 + NTP_4_2_7P485_RC + + ntpq/ntpq.1ntpqmdoc@1.311 +2 -2 + NTP_4_2_7P485_RC + + ntpq/ntpq.html@1.151 +2 -2 + NTP_4_2_7P485_RC + + ntpq/ntpq.man.in@1.311 +3 -3 + NTP_4_2_7P485_RC + + ntpq/ntpq.mdoc.in@1.311 +2 -2 + NTP_4_2_7P485_RC + + ntpsnmpd/invoke-ntpsnmpd.texi@1.479 +2 -2 + NTP_4_2_7P485_RC + + ntpsnmpd/ntpsnmpd-opts.c@1.497 +7 -7 + NTP_4_2_7P485_RC + + ntpsnmpd/ntpsnmpd-opts.h@1.496 +3 -3 + NTP_4_2_7P485_RC + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.308 +3 -3 + NTP_4_2_7P485_RC + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.308 +2 -2 + NTP_4_2_7P485_RC + + ntpsnmpd/ntpsnmpd.html@1.149 +1 -1 + NTP_4_2_7P485_RC + + ntpsnmpd/ntpsnmpd.man.in@1.308 +3 -3 + NTP_4_2_7P485_RC + + ntpsnmpd/ntpsnmpd.mdoc.in@1.308 +2 -2 + NTP_4_2_7P485_RC + + packageinfo.sh@1.490 +1 -1 + NTP_4_2_7P485_RC + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.70 +3 -3 + NTP_4_2_7P485_RC + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.70 +2 -2 + NTP_4_2_7P485_RC + + scripts/calc_tickadj/calc_tickadj.html@1.72 +1 -1 + NTP_4_2_7P485_RC + + scripts/calc_tickadj/calc_tickadj.man.in@1.69 +3 -3 + NTP_4_2_7P485_RC + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.70 +2 -2 + NTP_4_2_7P485_RC + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.74 +1 -1 + NTP_4_2_7P485_RC + + scripts/invoke-plot_summary.texi@1.91 +2 -2 + NTP_4_2_7P485_RC + + scripts/invoke-summary.texi@1.91 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntp-wait/invoke-ntp-wait.texi@1.300 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntp-wait/ntp-wait-opts@1.36 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.298 +3 -3 + NTP_4_2_7P485_RC + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.298 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntp-wait/ntp-wait.html@1.317 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntp-wait/ntp-wait.man.in@1.298 +3 -3 + NTP_4_2_7P485_RC + + scripts/ntp-wait/ntp-wait.mdoc.in@1.298 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntpsweep/invoke-ntpsweep.texi@1.89 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntpsweep/ntpsweep-opts@1.38 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.77 +3 -3 + NTP_4_2_7P485_RC + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.77 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntpsweep/ntpsweep.html@1.90 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntpsweep/ntpsweep.man.in@1.77 +3 -3 + NTP_4_2_7P485_RC + + scripts/ntpsweep/ntpsweep.mdoc.in@1.78 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntptrace/invoke-ntptrace.texi@1.89 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntptrace/ntptrace-opts@1.38 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntptrace/ntptrace.1ntptraceman@1.77 +3 -3 + NTP_4_2_7P485_RC + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.77 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntptrace/ntptrace.html@1.90 +2 -2 + NTP_4_2_7P485_RC + + scripts/ntptrace/ntptrace.man.in@1.77 +3 -3 + NTP_4_2_7P485_RC + + scripts/ntptrace/ntptrace.mdoc.in@1.78 +2 -2 + NTP_4_2_7P485_RC + + scripts/plot_summary-opts@1.38 +2 -2 + NTP_4_2_7P485_RC + + scripts/plot_summary.1plot_summaryman@1.89 +3 -3 + NTP_4_2_7P485_RC + + scripts/plot_summary.1plot_summarymdoc@1.89 +2 -2 + NTP_4_2_7P485_RC + + scripts/plot_summary.html@1.92 +2 -2 + NTP_4_2_7P485_RC + + scripts/plot_summary.man.in@1.89 +3 -3 + NTP_4_2_7P485_RC + + scripts/plot_summary.mdoc.in@1.89 +2 -2 + NTP_4_2_7P485_RC + + scripts/summary-opts@1.38 +2 -2 + NTP_4_2_7P485_RC + + scripts/summary.1summaryman@1.89 +3 -3 + NTP_4_2_7P485_RC + + scripts/summary.1summarymdoc@1.89 +2 -2 + NTP_4_2_7P485_RC + + scripts/summary.html@1.92 +2 -2 + NTP_4_2_7P485_RC + + scripts/summary.man.in@1.89 +3 -3 + NTP_4_2_7P485_RC + + scripts/summary.mdoc.in@1.89 +2 -2 + NTP_4_2_7P485_RC + + sntp/invoke-sntp.texi@1.476 +2 -2 + NTP_4_2_7P485_RC + + sntp/sntp-opts.c@1.494 +7 -7 + NTP_4_2_7P485_RC + + sntp/sntp-opts.h@1.493 +3 -3 + NTP_4_2_7P485_RC + + sntp/sntp.1sntpman@1.311 +3 -3 + NTP_4_2_7P485_RC + + sntp/sntp.1sntpmdoc@1.311 +2 -2 + NTP_4_2_7P485_RC + + sntp/sntp.html@1.491 +2 -2 + NTP_4_2_7P485_RC + + sntp/sntp.man.in@1.311 +3 -3 + NTP_4_2_7P485_RC + + sntp/sntp.mdoc.in@1.311 +2 -2 + NTP_4_2_7P485_RC + + util/invoke-ntp-keygen.texi@1.480 +2 -2 + NTP_4_2_7P485_RC + + util/ntp-keygen-opts.c@1.497 +7 -7 + NTP_4_2_7P485_RC + + util/ntp-keygen-opts.h@1.496 +3 -3 + NTP_4_2_7P485_RC + + util/ntp-keygen.1ntp-keygenman@1.308 +3 -3 + NTP_4_2_7P485_RC + + util/ntp-keygen.1ntp-keygenmdoc@1.308 +2 -2 + NTP_4_2_7P485_RC + + util/ntp-keygen.html@1.155 +2 -2 + NTP_4_2_7P485_RC + + util/ntp-keygen.man.in@1.308 +3 -3 + NTP_4_2_7P485_RC + + util/ntp-keygen.mdoc.in@1.308 +2 -2 + NTP_4_2_7P485_RC + +ChangeSet@1.3249, 2014-12-12 11:24:31+00:00, stenn@psp-fb1.ntp.org + [Sec 2670] Missing return; from error clause + + ChangeLog@1.1583 +1 -0 + [Sec 2670] Missing return; from error clause + + ntpd/ntp_proto.c@1.351 +1 -0 + [Sec 2670] Missing return; from error clause + +ChangeSet@1.3248, 2014-12-12 11:19:49+00:00, stenn@psp-fb1.ntp.org + [Sec 2669] buffer overflow in configure() + + ChangeLog@1.1582 +1 -0 + [Sec 2669] buffer overflow in configure() + + ntpd/ntp_control.c@1.192 +14 -0 + [Sec 2669] buffer overflow in configure() + +ChangeSet@1.3247, 2014-12-12 11:13:55+00:00, stenn@psp-fb1.ntp.org + [Sec 2668] buffer overflow in ctl_putdata() + + ChangeLog@1.1581 +1 -0 + [Sec 2668] buffer overflow in ctl_putdata() + + ntpd/ntp_control.c@1.191 +16 -1 + [Sec 2668] buffer overflow in ctl_putdata() + +ChangeSet@1.3246, 2014-12-12 11:06:53+00:00, stenn@psp-fb1.ntp.org + [Sec 2667] buffer overflow in crypto_recv() + + ChangeLog@1.1580 +1 -0 + [Sec 2667] buffer overflow in crypto_recv() + + ntpd/ntp_crypto.c@1.169 +12 -3 + [Sec 2667] buffer overflow in crypto_recv() + +ChangeSet@1.3245, 2014-12-12 08:49:58+00:00, stenn@psp-fb1.ntp.org + [Bug 2686] refclock_gpsdjson needs strtoll(), which is not always present + + ChangeLog@1.1579 +1 -0 + [Bug 2686] refclock_gpsdjson needs strtoll(), which is not always present + + configure.ac@1.577 +5 -1 + [Bug 2686] refclock_gpsdjson needs strtoll(), which is not always present + +ChangeSet@1.3244, 2014-12-11 12:13:16+00:00, stenn@deacon.udel.edu + NTP_4_2_7P484_RC + TAG: NTP_4_2_7P484_RC + + ChangeLog@1.1578 +1 -0 + NTP_4_2_7P484_RC + + ntpd/invoke-ntp.conf.texi@1.165 +1 -1 + NTP_4_2_7P484_RC + + ntpd/invoke-ntp.keys.texi@1.162 +1 -1 + NTP_4_2_7P484_RC + + ntpd/invoke-ntpd.texi@1.478 +2 -2 + NTP_4_2_7P484_RC + + ntpd/ntp.conf.5man@1.199 +3 -3 + NTP_4_2_7P484_RC + + ntpd/ntp.conf.5mdoc@1.199 +2 -2 + NTP_4_2_7P484_RC + + ntpd/ntp.conf.html@1.158 +1 -1 + NTP_4_2_7P484_RC + + ntpd/ntp.conf.man.in@1.199 +3 -3 + NTP_4_2_7P484_RC + + ntpd/ntp.conf.mdoc.in@1.199 +2 -2 + NTP_4_2_7P484_RC + + ntpd/ntp.keys.5man@1.196 +2 -2 + NTP_4_2_7P484_RC + + ntpd/ntp.keys.5mdoc@1.196 +2 -2 + NTP_4_2_7P484_RC + + ntpd/ntp.keys.html@1.159 +1 -1 + NTP_4_2_7P484_RC + + ntpd/ntp.keys.man.in@1.196 +2 -2 + NTP_4_2_7P484_RC + + ntpd/ntp.keys.mdoc.in@1.196 +2 -2 + NTP_4_2_7P484_RC + + ntpd/ntpd-opts.c@1.499 +239 -239 + NTP_4_2_7P484_RC + + ntpd/ntpd-opts.h@1.498 +3 -3 + NTP_4_2_7P484_RC + + ntpd/ntpd.1ntpdman@1.307 +3 -3 + NTP_4_2_7P484_RC + + ntpd/ntpd.1ntpdmdoc@1.307 +2 -2 + NTP_4_2_7P484_RC + + ntpd/ntpd.html@1.153 +2 -2 + NTP_4_2_7P484_RC + + ntpd/ntpd.man.in@1.307 +3 -3 + NTP_4_2_7P484_RC + + ntpd/ntpd.mdoc.in@1.307 +2 -2 + NTP_4_2_7P484_RC + + ntpdc/invoke-ntpdc.texi@1.476 +2 -2 + NTP_4_2_7P484_RC + + ntpdc/ntpdc-opts.c@1.494 +106 -106 + NTP_4_2_7P484_RC + + ntpdc/ntpdc-opts.h@1.493 +3 -3 + NTP_4_2_7P484_RC + + ntpdc/ntpdc.1ntpdcman@1.307 +3 -3 + NTP_4_2_7P484_RC + + ntpdc/ntpdc.1ntpdcmdoc@1.307 +2 -2 + NTP_4_2_7P484_RC + + ntpdc/ntpdc.html@1.320 +2 -2 + NTP_4_2_7P484_RC + + ntpdc/ntpdc.man.in@1.307 +3 -3 + NTP_4_2_7P484_RC + + ntpdc/ntpdc.mdoc.in@1.307 +2 -2 + NTP_4_2_7P484_RC + + ntpq/invoke-ntpq.texi@1.482 +2 -2 + NTP_4_2_7P484_RC + + ntpq/ntpq-opts.c@1.499 +105 -105 + NTP_4_2_7P484_RC + + ntpq/ntpq-opts.h@1.497 +3 -3 + NTP_4_2_7P484_RC + + ntpq/ntpq.1ntpqman@1.310 +3 -3 + NTP_4_2_7P484_RC + + ntpq/ntpq.1ntpqmdoc@1.310 +2 -2 + NTP_4_2_7P484_RC + + ntpq/ntpq.html@1.150 +2 -2 + NTP_4_2_7P484_RC + + ntpq/ntpq.man.in@1.310 +3 -3 + NTP_4_2_7P484_RC + + ntpq/ntpq.mdoc.in@1.310 +2 -2 + NTP_4_2_7P484_RC + + ntpsnmpd/invoke-ntpsnmpd.texi@1.478 +2 -2 + NTP_4_2_7P484_RC + + ntpsnmpd/ntpsnmpd-opts.c@1.496 +67 -67 + NTP_4_2_7P484_RC + + ntpsnmpd/ntpsnmpd-opts.h@1.495 +3 -3 + NTP_4_2_7P484_RC + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.307 +3 -3 + NTP_4_2_7P484_RC + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.307 +2 -2 + NTP_4_2_7P484_RC + + ntpsnmpd/ntpsnmpd.html@1.148 +1 -1 + NTP_4_2_7P484_RC + + ntpsnmpd/ntpsnmpd.man.in@1.307 +3 -3 + NTP_4_2_7P484_RC + + ntpsnmpd/ntpsnmpd.mdoc.in@1.307 +2 -2 + NTP_4_2_7P484_RC + + packageinfo.sh@1.489 +1 -1 + NTP_4_2_7P484_RC + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.69 +3 -3 + NTP_4_2_7P484_RC + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.69 +2 -2 + NTP_4_2_7P484_RC + + scripts/calc_tickadj/calc_tickadj.html@1.71 +1 -1 + NTP_4_2_7P484_RC + + scripts/calc_tickadj/calc_tickadj.man.in@1.68 +3 -3 + NTP_4_2_7P484_RC + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.69 +2 -2 + NTP_4_2_7P484_RC + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.73 +1 -1 + NTP_4_2_7P484_RC + + scripts/invoke-plot_summary.texi@1.90 +2 -2 + NTP_4_2_7P484_RC + + scripts/invoke-summary.texi@1.90 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntp-wait/invoke-ntp-wait.texi@1.299 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntp-wait/ntp-wait-opts@1.35 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.297 +3 -3 + NTP_4_2_7P484_RC + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.297 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntp-wait/ntp-wait.html@1.316 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntp-wait/ntp-wait.man.in@1.297 +3 -3 + NTP_4_2_7P484_RC + + scripts/ntp-wait/ntp-wait.mdoc.in@1.297 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntpsweep/invoke-ntpsweep.texi@1.88 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntpsweep/ntpsweep-opts@1.37 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.76 +3 -3 + NTP_4_2_7P484_RC + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.76 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntpsweep/ntpsweep.html@1.89 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntpsweep/ntpsweep.man.in@1.76 +3 -3 + NTP_4_2_7P484_RC + + scripts/ntpsweep/ntpsweep.mdoc.in@1.77 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntptrace/invoke-ntptrace.texi@1.88 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntptrace/ntptrace-opts@1.37 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntptrace/ntptrace.1ntptraceman@1.76 +3 -3 + NTP_4_2_7P484_RC + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.76 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntptrace/ntptrace.html@1.89 +2 -2 + NTP_4_2_7P484_RC + + scripts/ntptrace/ntptrace.man.in@1.76 +3 -3 + NTP_4_2_7P484_RC + + scripts/ntptrace/ntptrace.mdoc.in@1.77 +2 -2 + NTP_4_2_7P484_RC + + scripts/plot_summary-opts@1.37 +2 -2 + NTP_4_2_7P484_RC + + scripts/plot_summary.1plot_summaryman@1.88 +3 -3 + NTP_4_2_7P484_RC + + scripts/plot_summary.1plot_summarymdoc@1.88 +2 -2 + NTP_4_2_7P484_RC + + scripts/plot_summary.html@1.91 +2 -2 + NTP_4_2_7P484_RC + + scripts/plot_summary.man.in@1.88 +3 -3 + NTP_4_2_7P484_RC + + scripts/plot_summary.mdoc.in@1.88 +2 -2 + NTP_4_2_7P484_RC + + scripts/summary-opts@1.37 +2 -2 + NTP_4_2_7P484_RC + + scripts/summary.1summaryman@1.88 +3 -3 + NTP_4_2_7P484_RC + + scripts/summary.1summarymdoc@1.88 +2 -2 + NTP_4_2_7P484_RC + + scripts/summary.html@1.91 +2 -2 + NTP_4_2_7P484_RC + + scripts/summary.man.in@1.88 +3 -3 + NTP_4_2_7P484_RC + + scripts/summary.mdoc.in@1.88 +2 -2 + NTP_4_2_7P484_RC + + sntp/invoke-sntp.texi@1.475 +2 -2 + NTP_4_2_7P484_RC + + sntp/sntp-opts.c@1.493 +158 -158 + NTP_4_2_7P484_RC + + sntp/sntp-opts.h@1.492 +3 -3 + NTP_4_2_7P484_RC + + sntp/sntp.1sntpman@1.310 +3 -3 + NTP_4_2_7P484_RC + + sntp/sntp.1sntpmdoc@1.310 +2 -2 + NTP_4_2_7P484_RC + + sntp/sntp.html@1.490 +2 -2 + NTP_4_2_7P484_RC + + sntp/sntp.man.in@1.310 +3 -3 + NTP_4_2_7P484_RC + + sntp/sntp.mdoc.in@1.310 +2 -2 + NTP_4_2_7P484_RC + + util/invoke-ntp-keygen.texi@1.479 +2 -2 + NTP_4_2_7P484_RC + + util/ntp-keygen-opts.c@1.496 +172 -172 + NTP_4_2_7P484_RC + + util/ntp-keygen-opts.h@1.495 +3 -3 + NTP_4_2_7P484_RC + + util/ntp-keygen.1ntp-keygenman@1.307 +3 -3 + NTP_4_2_7P484_RC + + util/ntp-keygen.1ntp-keygenmdoc@1.307 +2 -2 + NTP_4_2_7P484_RC + + util/ntp-keygen.html@1.154 +2 -2 + NTP_4_2_7P484_RC + + util/ntp-keygen.man.in@1.307 +3 -3 + NTP_4_2_7P484_RC + + util/ntp-keygen.mdoc.in@1.307 +2 -2 + NTP_4_2_7P484_RC + +ChangeSet@1.3243, 2014-12-11 06:51:38-05:00, stenn@deacon.udel.edu + Start the RC cycle for 4.2.8 + + packageinfo.sh@1.488 +1 -1 + Start the RC cycle for 4.2.8 + +ChangeSet@1.3242, 2014-12-08 08:59:52+00:00, stenn@deacon.udel.edu + NTP_4_2_7P483 + TAG: NTP_4_2_7P483 + + ChangeLog@1.1577 +1 -0 + NTP_4_2_7P483 + + ntpd/invoke-ntp.conf.texi@1.164 +1 -1 + NTP_4_2_7P483 + + ntpd/invoke-ntp.keys.texi@1.161 +1 -1 + NTP_4_2_7P483 + + ntpd/invoke-ntpd.texi@1.477 +2 -2 + NTP_4_2_7P483 + + ntpd/ntp.conf.5man@1.198 +3 -3 + NTP_4_2_7P483 + + ntpd/ntp.conf.5mdoc@1.198 +2 -2 + NTP_4_2_7P483 + + ntpd/ntp.conf.html@1.157 +1 -1 + NTP_4_2_7P483 + + ntpd/ntp.conf.man.in@1.198 +3 -3 + NTP_4_2_7P483 + + ntpd/ntp.conf.mdoc.in@1.198 +2 -2 + NTP_4_2_7P483 + + ntpd/ntp.keys.5man@1.195 +2 -2 + NTP_4_2_7P483 + + ntpd/ntp.keys.5mdoc@1.195 +2 -2 + NTP_4_2_7P483 + + ntpd/ntp.keys.html@1.158 +1 -1 + NTP_4_2_7P483 + + ntpd/ntp.keys.man.in@1.195 +2 -2 + NTP_4_2_7P483 + + ntpd/ntp.keys.mdoc.in@1.195 +2 -2 + NTP_4_2_7P483 + + ntpd/ntpd-opts.c@1.498 +7 -7 + NTP_4_2_7P483 + + ntpd/ntpd-opts.h@1.497 +3 -3 + NTP_4_2_7P483 + + ntpd/ntpd.1ntpdman@1.306 +3 -3 + NTP_4_2_7P483 + + ntpd/ntpd.1ntpdmdoc@1.306 +2 -2 + NTP_4_2_7P483 + + ntpd/ntpd.html@1.152 +2 -2 + NTP_4_2_7P483 + + ntpd/ntpd.man.in@1.306 +3 -3 + NTP_4_2_7P483 + + ntpd/ntpd.mdoc.in@1.306 +2 -2 + NTP_4_2_7P483 + + ntpdc/invoke-ntpdc.texi@1.475 +2 -2 + NTP_4_2_7P483 + + ntpdc/ntpdc-opts.c@1.493 +7 -7 + NTP_4_2_7P483 + + ntpdc/ntpdc-opts.h@1.492 +3 -3 + NTP_4_2_7P483 + + ntpdc/ntpdc.1ntpdcman@1.306 +3 -3 + NTP_4_2_7P483 + + ntpdc/ntpdc.1ntpdcmdoc@1.306 +2 -2 + NTP_4_2_7P483 + + ntpdc/ntpdc.html@1.319 +2 -2 + NTP_4_2_7P483 + + ntpdc/ntpdc.man.in@1.306 +3 -3 + NTP_4_2_7P483 + + ntpdc/ntpdc.mdoc.in@1.306 +2 -2 + NTP_4_2_7P483 + + ntpq/invoke-ntpq.texi@1.481 +2 -2 + NTP_4_2_7P483 + + ntpq/ntpq-opts.c@1.498 +7 -7 + NTP_4_2_7P483 + + ntpq/ntpq-opts.h@1.496 +3 -3 + NTP_4_2_7P483 + + ntpq/ntpq.1ntpqman@1.309 +3 -3 + NTP_4_2_7P483 + + ntpq/ntpq.1ntpqmdoc@1.309 +2 -2 + NTP_4_2_7P483 + + ntpq/ntpq.html@1.149 +2 -2 + NTP_4_2_7P483 + + ntpq/ntpq.man.in@1.309 +3 -3 + NTP_4_2_7P483 + + ntpq/ntpq.mdoc.in@1.309 +2 -2 + NTP_4_2_7P483 + + ntpsnmpd/invoke-ntpsnmpd.texi@1.477 +2 -2 + NTP_4_2_7P483 + + ntpsnmpd/ntpsnmpd-opts.c@1.495 +7 -7 + NTP_4_2_7P483 + + ntpsnmpd/ntpsnmpd-opts.h@1.494 +3 -3 + NTP_4_2_7P483 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdman@1.306 +3 -3 + NTP_4_2_7P483 + + ntpsnmpd/ntpsnmpd.1ntpsnmpdmdoc@1.306 +2 -2 + NTP_4_2_7P483 + + ntpsnmpd/ntpsnmpd.html@1.147 +1 -1 + NTP_4_2_7P483 + + ntpsnmpd/ntpsnmpd.man.in@1.306 +3 -3 + NTP_4_2_7P483 + + ntpsnmpd/ntpsnmpd.mdoc.in@1.306 +2 -2 + NTP_4_2_7P483 + + packageinfo.sh@1.487 +1 -1 + NTP_4_2_7P483 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjman@1.68 +3 -3 + NTP_4_2_7P483 + + scripts/calc_tickadj/calc_tickadj.1calc_tickadjmdoc@1.68 +2 -2 + NTP_4_2_7P483 + + scripts/calc_tickadj/calc_tickadj.html@1.70 +1 -1 + NTP_4_2_7P483 + + scripts/calc_tickadj/calc_tickadj.man.in@1.67 +3 -3 + NTP_4_2_7P483 + + scripts/calc_tickadj/calc_tickadj.mdoc.in@1.68 +2 -2 + NTP_4_2_7P483 + + scripts/calc_tickadj/invoke-calc_tickadj.texi@1.72 +1 -1 + NTP_4_2_7P483 + + scripts/invoke-plot_summary.texi@1.89 +2 -2 + NTP_4_2_7P483 + + scripts/invoke-summary.texi@1.89 +2 -2 + NTP_4_2_7P483 + + scripts/ntp-wait/invoke-ntp-wait.texi@1.298 +2 -2 + NTP_4_2_7P483 + + scripts/ntp-wait/ntp-wait-opts@1.34 +2 -2 + NTP_4_2_7P483 + + scripts/ntp-wait/ntp-wait.1ntp-waitman@1.296 +3 -3 + NTP_4_2_7P483 + + scripts/ntp-wait/ntp-wait.1ntp-waitmdoc@1.296 +2 -2 + NTP_4_2_7P483 + + scripts/ntp-wait/ntp-wait.html@1.315 +2 -2 + NTP_4_2_7P483 + + scripts/ntp-wait/ntp-wait.man.in@1.296 +3 -3 + NTP_4_2_7P483 + + scripts/ntp-wait/ntp-wait.mdoc.in@1.296 +2 -2 + NTP_4_2_7P483 + + scripts/ntpsweep/invoke-ntpsweep.texi@1.87 +2 -2 + NTP_4_2_7P483 + + scripts/ntpsweep/ntpsweep-opts@1.36 +2 -2 + NTP_4_2_7P483 + + scripts/ntpsweep/ntpsweep.1ntpsweepman@1.75 +3 -3 + NTP_4_2_7P483 + + scripts/ntpsweep/ntpsweep.1ntpsweepmdoc@1.75 +2 -2 + NTP_4_2_7P483 + + scripts/ntpsweep/ntpsweep.html@1.88 +2 -2 + NTP_4_2_7P483 + + scripts/ntpsweep/ntpsweep.man.in@1.75 +3 -3 + NTP_4_2_7P483 + + scripts/ntpsweep/ntpsweep.mdoc.in@1.76 +2 -2 + NTP_4_2_7P483 + + scripts/ntptrace/invoke-ntptrace.texi@1.87 +2 -2 + NTP_4_2_7P483 + + scripts/ntptrace/ntptrace-opts@1.36 +2 -2 + NTP_4_2_7P483 + + scripts/ntptrace/ntptrace.1ntptraceman@1.75 +3 -3 + NTP_4_2_7P483 + + scripts/ntptrace/ntptrace.1ntptracemdoc@1.75 +2 -2 + NTP_4_2_7P483 + + scripts/ntptrace/ntptrace.html@1.88 +2 -2 + NTP_4_2_7P483 + + scripts/ntptrace/ntptrace.man.in@1.75 +3 -3 + NTP_4_2_7P483 + + scripts/ntptrace/ntptrace.mdoc.in@1.76 +2 -2 + NTP_4_2_7P483 + + scripts/plot_summary-opts@1.36 +2 -2 + NTP_4_2_7P483 + + scripts/plot_summary.1plot_summaryman@1.87 +3 -3 + NTP_4_2_7P483 + + scripts/plot_summary.1plot_summarymdoc@1.87 +2 -2 + NTP_4_2_7P483 + + scripts/plot_summary.html@1.90 +2 -2 + NTP_4_2_7P483 + + scripts/plot_summary.man.in@1.87 +3 -3 + NTP_4_2_7P483 + + scripts/plot_summary.mdoc.in@1.87 +2 -2 + NTP_4_2_7P483 + + scripts/summary-opts@1.36 +2 -2 + NTP_4_2_7P483 + + scripts/summary.1summaryman@1.87 +3 -3 + NTP_4_2_7P483 + + scripts/summary.1summarymdoc@1.87 +2 -2 + NTP_4_2_7P483 + + scripts/summary.html@1.90 +2 -2 + NTP_4_2_7P483 + + scripts/summary.man.in@1.87 +3 -3 + NTP_4_2_7P483 + + scripts/summary.mdoc.in@1.87 +2 -2 + NTP_4_2_7P483 + + sntp/invoke-sntp.texi@1.474 +4 -3 + NTP_4_2_7P483 + + sntp/sntp-opts.c@1.492 +9 -8 + NTP_4_2_7P483 + + sntp/sntp-opts.h@1.491 +3 -3 + NTP_4_2_7P483 + + sntp/sntp.1sntpman@1.309 +5 -4 + NTP_4_2_7P483 + + sntp/sntp.1sntpmdoc@1.309 +4 -3 + NTP_4_2_7P483 + + sntp/sntp.html@1.489 +4 -3 + NTP_4_2_7P483 + + sntp/sntp.man.in@1.309 +5 -4 + NTP_4_2_7P483 + + sntp/sntp.mdoc.in@1.309 +4 -3 + NTP_4_2_7P483 + + util/invoke-ntp-keygen.texi@1.478 +2 -2 + NTP_4_2_7P483 + + util/ntp-keygen-opts.c@1.495 +7 -7 + NTP_4_2_7P483 + + util/ntp-keygen-opts.h@1.494 +3 -3 + NTP_4_2_7P483 + + util/ntp-keygen.1ntp-keygenman@1.306 +3 -3 + NTP_4_2_7P483 + + util/ntp-keygen.1ntp-keygenmdoc@1.306 +2 -2 + NTP_4_2_7P483 + + util/ntp-keygen.html@1.153 +2 -2 + NTP_4_2_7P483 + + util/ntp-keygen.man.in@1.306 +3 -3 + NTP_4_2_7P483 + + util/ntp-keygen.mdoc.in@1.306 +2 -2 + NTP_4_2_7P483 + +ChangeSet@1.3241, 2014-12-07 11:30:07+00:00, stenn@psp-fb1.ntp.org + [Bug 2685] Better document the KOD file for sntp + + ChangeLog@1.1576 +1 -0 + [Bug 2685] Better document the KOD file for sntp + + html/sntp.html@1.11 +3 -2 + [Bug 2685] Better document the KOD file for sntp + + sntp/sntp-opts.def@1.45 +2 -1 + [Bug 2685] Better document the KOD file for sntp + ChangeSet@1.3240, 2014-12-02 08:59:55+00:00, stenn@deacon.udel.edu NTP_4_2_7P482 TAG: NTP_4_2_7P482 @@ -176078,7 +183957,7 @@ ChangeSet@1.1251.85.3, 2006-04-21 00:09:43-04:00, stenn@whimsy.udel.edu NTP_4_2_1P241_RC ChangeSet@1.1251.85.2, 2006-04-20 23:59:56-04:00, stenn@whimsy.udel.edu - [Bug 527] Losed signalled IO. + [Bug 527] Lose signalled IO. configure.ac@1.359.1.28 +7 -2 [Bug 527] Losed signalled IO. @@ -177530,7 +185409,7 @@ ChangeSet@1.1251.67.12, 2005-10-27 21:38:04-04:00, stenn@deacon.udel.edu [Bug 516] unprotected crypto_update() call fix from Dave Mills ChangeSet@1.1251.67.11, 2005-10-25 20:15:47-04:00, stenn@deacon.udel.edu - [Bug 519] Allow dynamic SSL libraries + [Bug 517] Allow dynamic SSL libraries configure.ac@1.359.1.24 +3 -2 [Bug 519] Allow dynamic SSL libraries: also check /usr/sfw/{lib,include} @@ -183006,7 +190885,8 @@ ChangeSet@1.1251.1.29, 2004-11-29 00:45:58-05:00, stenn@whimsy.udel.edu [Bug 363] ntpdate: use -1 to represent an invalid fd (from Rainer Weikusat) ChangeSet@1.1251.1.28, 2004-11-28 03:35:01-05:00, stenn@whimsy.udel.edu - [Bug 363] ntpdate: use -1 to represent an invalid fd + [Bug 363] ntpdate: use -1 to represent an invalid fd. + Fix from Rainer Weikusat. ntpdate/ntpdate.c@1.48 +2 -2 [Bug 363] ntpdate: use -1 to represent an invalid fd diff --git a/Makefile.am b/Makefile.am index 2908f96..fc76719 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,7 +2,10 @@ ACLOCAL_AMFLAGS = -I sntp/m4 -I sntp/libevent/m4 -I sntp/libopts/m4 NULL = +# moved sntp first to get libtool and libevent built. + SUBDIRS = \ + sntp \ scripts \ include \ libntp \ @@ -17,7 +20,6 @@ SUBDIRS = \ clockstuff \ kernel \ util \ - sntp \ tests \ $(NULL) @@ -64,7 +66,6 @@ BUILT_SOURCES = \ .gcc-warning \ libtool \ html/.datecheck \ - sntp/built-sources-only \ $(srcdir)/COPYRIGHT \ $(srcdir)/.checkChangeLog \ $(NULL) diff --git a/Makefile.in b/Makefile.in index 3ab13a2..47232a6 100644 --- a/Makefile.in +++ b/Makefile.in @@ -36,19 +36,20 @@ host_triplet = @host@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ - $(top_srcdir)/configure ChangeLog INSTALL NEWS TODO install-sh \ + $(top_srcdir)/configure ChangeLog INSTALL NEWS TODO compile \ + config.guess config.sub depcomp install-sh ltmain.sh missing \ sntp/libevent/build-aux/compile \ sntp/libevent/build-aux/config.guess \ sntp/libevent/build-aux/config.sub \ sntp/libevent/build-aux/depcomp \ sntp/libevent/build-aux/install-sh \ sntp/libevent/build-aux/ltmain.sh \ - sntp/libevent/build-aux/missing sntp/libevent/build-aux/ylwrap + sntp/libevent/build-aux/missing sntp/libevent/build-aux/ylwrap \ + ylwrap ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap-thread-check.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap.m4 \ + $(top_srcdir)/sntp/m4/ax_c99_struct_init.m4 \ $(top_srcdir)/sntp/m4/define_dir.m4 \ $(top_srcdir)/sntp/m4/hms_search_lib.m4 \ $(top_srcdir)/sntp/m4/libtool.m4 \ @@ -59,6 +60,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_cacheversion.m4 \ $(top_srcdir)/sntp/m4/ntp_compiler.m4 \ $(top_srcdir)/sntp/m4/ntp_crosscompile.m4 \ + $(top_srcdir)/sntp/m4/ntp_crypto_rand.m4 \ $(top_srcdir)/sntp/m4/ntp_debug.m4 \ $(top_srcdir)/sntp/m4/ntp_dir_sep.m4 \ $(top_srcdir)/sntp/m4/ntp_facilitynames.m4 \ @@ -76,6 +78,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_sntp.m4 \ $(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \ $(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \ + $(top_srcdir)/sntp/m4/openldap-thread-check.m4 \ + $(top_srcdir)/sntp/m4/openldap.m4 \ $(top_srcdir)/sntp/m4/os_cflags.m4 \ $(top_srcdir)/sntp/m4/snprintf.m4 \ $(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac @@ -168,6 +172,7 @@ CHUTEST = @CHUTEST@ CONFIG_SHELL = @CONFIG_SHELL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_LIBEVENT = @CPPFLAGS_LIBEVENT@ CPPFLAGS_NTP = @CPPFLAGS_NTP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -202,7 +207,9 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ +LDADD_LIBEVENT = @LDADD_LIBEVENT@ LDADD_LIBNTP = @LDADD_LIBNTP@ +LDADD_LIBUTIL = @LDADD_LIBUTIL@ LDADD_NLIST = @LDADD_NLIST@ LDADD_NTP = @LDADD_NTP@ LDFLAGS = @LDFLAGS@ @@ -341,6 +348,11 @@ TIMETRIM_DL = @TIMETRIM_DL@ TIMETRIM_DS = @TIMETRIM_DS@ TIMETRIM_MS = @TIMETRIM_MS@ TIMETRIM_NI = @TIMETRIM_NI@ +UPDATE_LEAP_DB = @UPDATE_LEAP_DB@ +UPDATE_LEAP_DL = @UPDATE_LEAP_DL@ +UPDATE_LEAP_DS = @UPDATE_LEAP_DS@ +UPDATE_LEAP_MS = @UPDATE_LEAP_MS@ +UPDATE_LEAP_NI = @UPDATE_LEAP_NI@ VERSION = @VERSION@ VER_SUFFIX = @VER_SUFFIX@ YACC = @YACC@ @@ -401,7 +413,10 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I sntp/m4 -I sntp/libevent/m4 -I sntp/libopts/m4 NULL = + +# moved sntp first to get libtool and libevent built. SUBDIRS = \ + sntp \ scripts \ include \ libntp \ @@ -416,7 +431,6 @@ SUBDIRS = \ clockstuff \ kernel \ util \ - sntp \ tests \ $(NULL) @@ -462,7 +476,6 @@ BUILT_SOURCES = \ .gcc-warning \ libtool \ html/.datecheck \ - sntp/built-sources-only \ $(srcdir)/COPYRIGHT \ $(srcdir)/.checkChangeLog \ $(NULL) diff --git a/NEWS b/NEWS index bbd260e..a425a9a 100644 --- a/NEWS +++ b/NEWS @@ -1,11 +1,368 @@ --- -NTP 4.2.8- +NTP 4.2.8p2 (Harlan Stenn , 2015/04/xx) + +Focus: Security and Bug fixes, enhancements. + +Severity: MEDIUM + +In addition to bug fixes and enhancements, this release fixes the +following medium-severity vulnerabilities involving private key +authentication: + +* [Sec 2779] ntpd accepts unauthenticated packets with symmetric key crypto. + + References: Sec 2779 / CVE-2015-1798 / VU#374268 + Affects: All NTP4 releases starting with ntp-4.2.5p99 up to but not + including ntp-4.2.8p2 where the installation uses symmetric keys + to authenticate remote associations. + CVSS: (AV:A/AC:M/Au:N/C:P/I:P/A:P) Base Score: 5.4 + Date Resolved: Stable (4.2.8p2) 07 Apr 2015 + Summary: When ntpd is configured to use a symmetric key to authenticate + a remote NTP server/peer, it checks if the NTP message + authentication code (MAC) in received packets is valid, but not if + there actually is any MAC included. Packets without a MAC are + accepted as if they had a valid MAC. This allows a MITM attacker to + send false packets that are accepted by the client/peer without + having to know the symmetric key. The attacker needs to know the + transmit timestamp of the client to match it in the forged reply + and the false reply needs to reach the client before the genuine + reply from the server. The attacker doesn't necessarily need to be + relaying the packets between the client and the server. + + Authentication using autokey doesn't have this problem as there is + a check that requires the key ID to be larger than NTP_MAXKEY, + which fails for packets without a MAC. + Mitigation: + Upgrade to 4.2.8p2, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Configure ntpd with enough time sources and monitor it properly. + Credit: This issue was discovered by Miroslav Lichvar, of Red Hat. + +* [Sec 2781] Authentication doesn't protect symmetric associations against + DoS attacks. + + References: Sec 2781 / CVE-2015-1799 / VU#374268 + Affects: All NTP releases starting with at least xntp3.3wy up to but + not including ntp-4.2.8p2 where the installation uses symmetric + key authentication. + CVSS: (AV:A/AC:M/Au:N/C:P/I:P/A:P) Base Score: 5.4 + Note: the CVSS base Score for this issue could be 4.3 or lower, and + it could be higher than 5.4. + Date Resolved: Stable (4.2.8p2) 07 Apr 2015 + Summary: An attacker knowing that NTP hosts A and B are peering with + each other (symmetric association) can send a packet to host A + with source address of B which will set the NTP state variables + on A to the values sent by the attacker. Host A will then send + on its next poll to B a packet with originate timestamp that + doesn't match the transmit timestamp of B and the packet will + be dropped. If the attacker does this periodically for both + hosts, they won't be able to synchronize to each other. This is + a known denial-of-service attack, described at + https://www.eecis.udel.edu/~mills/onwire.html . + + According to the document the NTP authentication is supposed to + protect symmetric associations against this attack, but that + doesn't seem to be the case. The state variables are updated even + when authentication fails and the peers are sending packets with + originate timestamps that don't match the transmit timestamps on + the receiving side. + + This seems to be a very old problem, dating back to at least + xntp3.3wy. It's also in the NTPv3 (RFC 1305) and NTPv4 (RFC 5905) + specifications, so other NTP implementations with support for + symmetric associations and authentication may be vulnerable too. + An update to the NTP RFC to correct this error is in-process. + Mitigation: + Upgrade to 4.2.8p2, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Note that for users of autokey, this specific style of MITM attack + is simply a long-known potential problem. + Configure ntpd with appropriate time sources and monitor ntpd. + Alert your staff if problems are detected. + Credit: This issue was discovered by Miroslav Lichvar, of Red Hat. + +* New script: update-leap +The update-leap script will verify and if necessary, update the +leap-second definition file. +It requires the following commands in order to work: + + wget logger tr sed shasum + +Some may choose to run this from cron. It needs more portability testing. + +Bug Fixes and Improvements: + +* [Bug 1787] DCF77's formerly "antenna" bit is "call bit" since 2003. +* [Bug 1960] setsockopt IPV6_MULTICAST_IF: Invalid argument. +* [Bug 2346] "graceful termination" signals do not do peer cleanup. +* [Bug 2728] See if C99-style structure initialization works. +* [Bug 2747] Upgrade libevent to 2.1.5-beta. +* [Bug 2749] ntp/lib/NTP/Util.pm needs update for ntpq -w, IPv6, .POOL. . +* [Bug 2751] jitter.h has stale copies of l_fp macros. +* [Bug 2756] ntpd hangs in startup with gcc 3.3.5 on ARM. +* [Bug 2757] Quiet compiler warnings. +* [Bug 2759] Expose nonvolatile/clk_wander_threshold to ntpq. +* [Bug 2763] Allow different thresholds for forward and backward steps. +* [Bug 2766] ntp-keygen output files should not be world-readable. +* [Bug 2767] ntp-keygen -M should symlink to ntp.keys. +* [Bug 2771] nonvolatile value is documented in wrong units. +* [Bug 2773] Early leap announcement from Palisade/Thunderbolt +* [Bug 2774] Unreasonably verbose printout - leap pending/warning +* [Bug 2775] ntp-keygen.c fails to compile under Windows. +* [Bug 2777] Fixed loops and decoding of Meinberg GPS satellite info. + Removed non-ASCII characters from some copyright comments. + Removed trailing whitespace. + Updated definitions for Meinberg clocks from current Meinberg header files. + Now use C99 fixed-width types and avoid non-ASCII characters in comments. + Account for updated definitions pulled from Meinberg header files. + Updated comments on Meinberg GPS receivers which are not only called GPS16x. + Replaced some constant numbers by defines from ntp_calendar.h + Modified creation of parse-specific variables for Meinberg devices + in gps16x_message(). + Reworked mk_utcinfo() to avoid printing of ambiguous leap second dates. + Modified mbg_tm_str() which now expexts an additional parameter controlling + if the time status shall be printed. +* [Sec 2779] ntpd accepts unauthenticated packets with symmetric key crypto. +* [Sec 2781] Authentication doesn't protect symmetric associations against + DoS attacks. +* [Bug 2783] Quiet autoconf warnings about missing AC_LANG_SOURCE. +* [Bug 2789] Quiet compiler warnings from libevent. +* [Bug 2790] If ntpd sets the Windows MM timer highest resolution + pause briefly before measuring system clock precision to yield + correct results. +* Comment from Juergen Perlinger in ntp_calendar.c to make the code clearer. +* Use predefined function types for parse driver functions + used to set up function pointers. + Account for changed prototype of parse_inp_fnc_t functions. + Cast parse conversion results to appropriate types to avoid + compiler warnings. + Let ioctl() for Windows accept a (void *) to avoid compiler warnings + when called with pointers to different types. + +--- +NTP 4.2.8p1 (Harlan Stenn , 2015/02/04) + +Focus: Security and Bug fixes, enhancements. + +Severity: HIGH + +In addition to bug fixes and enhancements, this release fixes the +following high-severity vulnerabilities: + +* vallen is not validated in several places in ntp_crypto.c, leading + to a potential information leak or possibly a crash + + References: Sec 2671 / CVE-2014-9297 / VU#852879 + Affects: All NTP4 releases before 4.2.8p1 that are running autokey. + CVSS: (AV:N/AC:L/Au:N/C:P/I:P/A:P) Base Score: 7.5 + Date Resolved: Stable (4.2.8p1) 04 Feb 2015 + Summary: The vallen packet value is not validated in several code + paths in ntp_crypto.c which can lead to information leakage + or perhaps a crash of the ntpd process. + Mitigation - any of: + Upgrade to 4.2.8p1, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page. + Disable Autokey Authentication by removing, or commenting out, + all configuration directives beginning with the "crypto" + keyword in your ntp.conf file. + Credit: This vulnerability was discovered by Stephen Roettger of the + Google Security Team, with additional cases found by Sebastian + Krahmer of the SUSE Security Team and Harlan Stenn of Network + Time Foundation. + +* ::1 can be spoofed on some OSes, so ACLs based on IPv6 ::1 addresses + can be bypassed. + + References: Sec 2672 / CVE-2014-9298 / VU#852879 + Affects: All NTP4 releases before 4.2.8p1, under at least some + versions of MacOS and Linux. *BSD has not been seen to be vulnerable. + CVSS: (AV:N/AC:L/Au:N/C:P/I:P/A:C) Base Score: 9 + Date Resolved: Stable (4.2.8p1) 04 Feb 2014 + Summary: While available kernels will prevent 127.0.0.1 addresses + from "appearing" on non-localhost IPv4 interfaces, some kernels + do not offer the same protection for ::1 source addresses on + IPv6 interfaces. Since NTP's access control is based on source + address and localhost addresses generally have no restrictions, + an attacker can send malicious control and configuration packets + by spoofing ::1 addresses from the outside. Note Well: This is + not really a bug in NTP, it's a problem with some OSes. If you + have one of these OSes where ::1 can be spoofed, ALL ::1 -based + ACL restrictions on any application can be bypassed! + Mitigation: + Upgrade to 4.2.8p1, or later, from the NTP Project Download Page + or the NTP Public Services Project Download Page + Install firewall rules to block packets claiming to come from + ::1 from inappropriate network interfaces. + Credit: This vulnerability was discovered by Stephen Roettger of + the Google Security Team. + +Additionally, over 30 bugfixes and improvements were made to the codebase. +See the ChangeLog for more information. + +--- +NTP 4.2.8 (Harlan Stenn , 2014/12/18) + +Focus: Security and Bug fixes, enhancements. + +Severity: HIGH + +In addition to bug fixes and enhancements, this release fixes the +following high-severity vulnerabilities: + +************************** vv NOTE WELL vv ***************************** + +The vulnerabilities listed below can be significantly mitigated by +following the BCP of putting + + restrict default ... noquery + +in the ntp.conf file. With the exception of: + + receive(): missing return on error + References: Sec 2670 / CVE-2014-9296 / VU#852879 + +below (which is a limited-risk vulnerability), none of the recent +vulnerabilities listed below can be exploited if the source IP is +restricted from sending a 'query'-class packet by your ntp.conf file. + +************************** ^^ NOTE WELL ^^ ***************************** + +* Weak default key in config_auth(). + + References: [Sec 2665] / CVE-2014-9293 / VU#852879 + CVSS: (AV:N/AC:L/Au:M/C:P/I:P/A:C) Base Score: 7.3 + Vulnerable Versions: all releases prior to 4.2.7p11 + Date Resolved: 28 Jan 2010 + + Summary: If no 'auth' key is set in the configuration file, ntpd + would generate a random key on the fly. There were two + problems with this: 1) the generated key was 31 bits in size, + and 2) it used the (now weak) ntp_random() function, which was + seeded with a 32-bit value and could only provide 32 bits of + entropy. This was sufficient back in the late 1990s when the + code was written. Not today. + + Mitigation - any of: + - Upgrade to 4.2.7p11 or later. + - Follow BCP and put 'restrict ... noquery' in your ntp.conf file. + + Credit: This vulnerability was noticed in ntp-4.2.6 by Neel Mehta + of the Google Security Team. + +* Non-cryptographic random number generator with weak seed used by + ntp-keygen to generate symmetric keys. + + References: [Sec 2666] / CVE-2014-9294 / VU#852879 + CVSS: (AV:N/AC:L/Au:M/C:P/I:P/A:C) Base Score: 7.3 + Vulnerable Versions: All NTP4 releases before 4.2.7p230 + Date Resolved: Dev (4.2.7p230) 01 Nov 2011 + + Summary: Prior to ntp-4.2.7p230 ntp-keygen used a weak seed to + prepare a random number generator that was of good quality back + in the late 1990s. The random numbers produced was then used to + generate symmetric keys. In ntp-4.2.8 we use a current-technology + cryptographic random number generator, either RAND_bytes from + OpenSSL, or arc4random(). + + Mitigation - any of: + - Upgrade to 4.2.7p230 or later. + - Follow BCP and put 'restrict ... noquery' in your ntp.conf file. + + Credit: This vulnerability was discovered in ntp-4.2.6 by + Stephen Roettger of the Google Security Team. + +* Buffer overflow in crypto_recv() + + References: Sec 2667 / CVE-2014-9295 / VU#852879 + CVSS: (AV:N/AC:L/Au:N/C:P/I:P/A:P) Base Score: 7.5 + Versions: All releases before 4.2.8 + Date Resolved: Stable (4.2.8) 18 Dec 2014 + + Summary: When Autokey Authentication is enabled (i.e. the ntp.conf + file contains a 'crypto pw ...' directive) a remote attacker + can send a carefully crafted packet that can overflow a stack + buffer and potentially allow malicious code to be executed + with the privilege level of the ntpd process. + + Mitigation - any of: + - Upgrade to 4.2.8, or later, or + - Disable Autokey Authentication by removing, or commenting out, + all configuration directives beginning with the crypto keyword + in your ntp.conf file. + + Credit: This vulnerability was discovered by Stephen Roettger of the + Google Security Team. + +* Buffer overflow in ctl_putdata() + + References: Sec 2668 / CVE-2014-9295 / VU#852879 + CVSS: (AV:N/AC:L/Au:N/C:P/I:P/A:P) Base Score: 7.5 + Versions: All NTP4 releases before 4.2.8 + Date Resolved: Stable (4.2.8) 18 Dec 2014 + + Summary: A remote attacker can send a carefully crafted packet that + can overflow a stack buffer and potentially allow malicious + code to be executed with the privilege level of the ntpd process. + + Mitigation - any of: + - Upgrade to 4.2.8, or later. + - Follow BCP and put 'restrict ... noquery' in your ntp.conf file. + + Credit: This vulnerability was discovered by Stephen Roettger of the + Google Security Team. + +* Buffer overflow in configure() + + References: Sec 2669 / CVE-2014-9295 / VU#852879 + CVSS: (AV:N/AC:L/Au:N/C:P/I:P/A:P) Base Score: 7.5 + Versions: All NTP4 releases before 4.2.8 + Date Resolved: Stable (4.2.8) 18 Dec 2014 + + Summary: A remote attacker can send a carefully crafted packet that + can overflow a stack buffer and potentially allow malicious + code to be executed with the privilege level of the ntpd process. + + Mitigation - any of: + - Upgrade to 4.2.8, or later. + - Follow BCP and put 'restrict ... noquery' in your ntp.conf file. + + Credit: This vulnerability was discovered by Stephen Roettger of the + Google Security Team. + +* receive(): missing return on error + + References: Sec 2670 / CVE-2014-9296 / VU#852879 + CVSS: (AV:N/AC:L/Au:N/C:N/I:N/A:P) Base Score: 5.0 + Versions: All NTP4 releases before 4.2.8 + Date Resolved: Stable (4.2.8) 18 Dec 2014 + + Summary: Code in ntp_proto.c:receive() was missing a 'return;' in + the code path where an error was detected, which meant + processing did not stop when a specific rare error occurred. + We haven't found a way for this bug to affect system integrity. + If there is no way to affect system integrity the base CVSS + score for this bug is 0. If there is one avenue through which + system integrity can be partially affected, the base score + becomes a 5. If system integrity can be partially affected + via all three integrity metrics, the CVSS base score become 7.5. + + Mitigation - any of: + - Upgrade to 4.2.8, or later, + - Remove or comment out all configuration directives + beginning with the crypto keyword in your ntp.conf file. + + Credit: This vulnerability was discovered by Stephen Roettger of the + Google Security Team. + +See http://support.ntp.org/security for more information. + +New features / changes in this release: Important Changes * Internal NTP Era counters -The internal counters that track which "era" (range of years) we are in +The internal counters that track the "era" (range of years) we are in rolls over every 136 years'. The current "era" started at the stroke of midnight on 1 Jan 1900, and ends just before the stroke of midnight on 1 Jan 2036. @@ -16,8 +373,6 @@ more. We now compile a timestamp into the ntpd executable and when we get a timestamp we us the "built-on" to tell us what era we are in. This check "looks back" 10 years, and "looks forward" 126 years. -So if you have a system that ... - * ntpdc responses disabled by default Dave Hart writes: @@ -40,7 +395,7 @@ ntpq's text-based, label=value approach involves more code reuse and allows compatible changes without extra work in most cases. Mode 7 has always been defined as vendor/implementation-specific while -mode 6 is described in RFC 1305 and intended to be open to interop +mode 6 is described in RFC 1305 and intended to be open to interoperate with other implementations. There is an early draft of an updated mode 6 description that likely will join the other NTPv4 RFCs eventually. (http://tools.ietf.org/html/draft-odonoghue-ntpv4-control-01) @@ -51,6 +406,10 @@ deprecating ntpdc. If you are in the habit of using ntpdc for certain operations, please try the ntpq equivalent. If there's no equivalent, please open a bug report at http://bugs.ntp.org./ +In addition to the above, over 1100 issues have been resolved between +the 4.2.6 branch and 4.2.8. The ChangeLog file in the distribution +lists these. + --- NTP 4.2.6p5 (Harlan Stenn , 2011/12/24) diff --git a/aclocal.m4 b/aclocal.m4 index 4ae90ff..24036a4 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1132,8 +1132,7 @@ AC_SUBST([am__untar]) m4_include([sntp/libopts/m4/libopts.m4]) m4_include([sntp/libopts/m4/stdnoreturn.m4]) -m4_include([sntp/libevent/m4/openldap-thread-check.m4]) -m4_include([sntp/libevent/m4/openldap.m4]) +m4_include([sntp/m4/ax_c99_struct_init.m4]) m4_include([sntp/m4/define_dir.m4]) m4_include([sntp/m4/hms_search_lib.m4]) m4_include([sntp/m4/libtool.m4]) @@ -1144,6 +1143,7 @@ m4_include([sntp/m4/lt~obsolete.m4]) m4_include([sntp/m4/ntp_cacheversion.m4]) m4_include([sntp/m4/ntp_compiler.m4]) m4_include([sntp/m4/ntp_crosscompile.m4]) +m4_include([sntp/m4/ntp_crypto_rand.m4]) m4_include([sntp/m4/ntp_debug.m4]) m4_include([sntp/m4/ntp_dir_sep.m4]) m4_include([sntp/m4/ntp_facilitynames.m4]) @@ -1161,5 +1161,7 @@ m4_include([sntp/m4/ntp_rlimit.m4]) m4_include([sntp/m4/ntp_sntp.m4]) m4_include([sntp/m4/ntp_ver_suffix.m4]) m4_include([sntp/m4/ntp_vpathhack.m4]) +m4_include([sntp/m4/openldap-thread-check.m4]) +m4_include([sntp/m4/openldap.m4]) m4_include([sntp/m4/os_cflags.m4]) m4_include([sntp/m4/snprintf.m4]) diff --git a/adjtimed/Makefile.in b/adjtimed/Makefile.in index 67394eb..56f4dfb 100644 --- a/adjtimed/Makefile.in +++ b/adjtimed/Makefile.in @@ -49,8 +49,7 @@ subdir = adjtimed ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap-thread-check.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap.m4 \ + $(top_srcdir)/sntp/m4/ax_c99_struct_init.m4 \ $(top_srcdir)/sntp/m4/define_dir.m4 \ $(top_srcdir)/sntp/m4/hms_search_lib.m4 \ $(top_srcdir)/sntp/m4/libtool.m4 \ @@ -61,6 +60,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_cacheversion.m4 \ $(top_srcdir)/sntp/m4/ntp_compiler.m4 \ $(top_srcdir)/sntp/m4/ntp_crosscompile.m4 \ + $(top_srcdir)/sntp/m4/ntp_crypto_rand.m4 \ $(top_srcdir)/sntp/m4/ntp_debug.m4 \ $(top_srcdir)/sntp/m4/ntp_dir_sep.m4 \ $(top_srcdir)/sntp/m4/ntp_facilitynames.m4 \ @@ -78,6 +78,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_sntp.m4 \ $(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \ $(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \ + $(top_srcdir)/sntp/m4/openldap-thread-check.m4 \ + $(top_srcdir)/sntp/m4/openldap.m4 \ $(top_srcdir)/sntp/m4/os_cflags.m4 \ $(top_srcdir)/sntp/m4/snprintf.m4 \ $(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac @@ -152,6 +154,7 @@ CHUTEST = @CHUTEST@ CONFIG_SHELL = @CONFIG_SHELL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_LIBEVENT = @CPPFLAGS_LIBEVENT@ CPPFLAGS_NTP = @CPPFLAGS_NTP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -186,7 +189,9 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ +LDADD_LIBEVENT = @LDADD_LIBEVENT@ LDADD_LIBNTP = @LDADD_LIBNTP@ +LDADD_LIBUTIL = @LDADD_LIBUTIL@ LDADD_NLIST = @LDADD_NLIST@ LDADD_NTP = @LDADD_NTP@ LDFLAGS = @LDFLAGS@ @@ -325,6 +330,11 @@ TIMETRIM_DL = @TIMETRIM_DL@ TIMETRIM_DS = @TIMETRIM_DS@ TIMETRIM_MS = @TIMETRIM_MS@ TIMETRIM_NI = @TIMETRIM_NI@ +UPDATE_LEAP_DB = @UPDATE_LEAP_DB@ +UPDATE_LEAP_DL = @UPDATE_LEAP_DL@ +UPDATE_LEAP_DS = @UPDATE_LEAP_DS@ +UPDATE_LEAP_MS = @UPDATE_LEAP_MS@ +UPDATE_LEAP_NI = @UPDATE_LEAP_NI@ VERSION = @VERSION@ VER_SUFFIX = @VER_SUFFIX@ YACC = @YACC@ diff --git a/build b/build index 75f20a2..15fe39a 100755 --- a/build +++ b/build @@ -162,7 +162,11 @@ if [ -z "$TEST" ] ; then fi fi -CONFIGURE="../configure --cache-file=../config.cache-$IAM$CCSUF $CONFIG_ARGS" +CONFIGURE="../configure" +# We need KEYSUF because of RAND_ and others, and -noopenssl" +#CONFIGURE="$CONFIGURE --cache-file=../config.cache-$IAM$KEYSUF$CCSUF" +CONFIGURE="$CONFIGURE $CONFIG_ARGS" + ( # This sequence of commands is logged to make.log. # If config.status is newer than ../configure, and the same diff --git a/clockstuff/Makefile.in b/clockstuff/Makefile.in index 179c98d..c852adb 100644 --- a/clockstuff/Makefile.in +++ b/clockstuff/Makefile.in @@ -42,8 +42,7 @@ subdir = clockstuff ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap-thread-check.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap.m4 \ + $(top_srcdir)/sntp/m4/ax_c99_struct_init.m4 \ $(top_srcdir)/sntp/m4/define_dir.m4 \ $(top_srcdir)/sntp/m4/hms_search_lib.m4 \ $(top_srcdir)/sntp/m4/libtool.m4 \ @@ -54,6 +53,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_cacheversion.m4 \ $(top_srcdir)/sntp/m4/ntp_compiler.m4 \ $(top_srcdir)/sntp/m4/ntp_crosscompile.m4 \ + $(top_srcdir)/sntp/m4/ntp_crypto_rand.m4 \ $(top_srcdir)/sntp/m4/ntp_debug.m4 \ $(top_srcdir)/sntp/m4/ntp_dir_sep.m4 \ $(top_srcdir)/sntp/m4/ntp_facilitynames.m4 \ @@ -71,6 +71,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_sntp.m4 \ $(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \ $(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \ + $(top_srcdir)/sntp/m4/openldap-thread-check.m4 \ + $(top_srcdir)/sntp/m4/openldap.m4 \ $(top_srcdir)/sntp/m4/os_cflags.m4 \ $(top_srcdir)/sntp/m4/snprintf.m4 \ $(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac @@ -148,6 +150,7 @@ CHUTEST = @CHUTEST@ CONFIG_SHELL = @CONFIG_SHELL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_LIBEVENT = @CPPFLAGS_LIBEVENT@ CPPFLAGS_NTP = @CPPFLAGS_NTP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -182,7 +185,9 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ +LDADD_LIBEVENT = @LDADD_LIBEVENT@ LDADD_LIBNTP = @LDADD_LIBNTP@ +LDADD_LIBUTIL = @LDADD_LIBUTIL@ LDADD_NLIST = @LDADD_NLIST@ LDADD_NTP = @LDADD_NTP@ LDFLAGS = @LDFLAGS@ @@ -321,6 +326,11 @@ TIMETRIM_DL = @TIMETRIM_DL@ TIMETRIM_DS = @TIMETRIM_DS@ TIMETRIM_MS = @TIMETRIM_MS@ TIMETRIM_NI = @TIMETRIM_NI@ +UPDATE_LEAP_DB = @UPDATE_LEAP_DB@ +UPDATE_LEAP_DL = @UPDATE_LEAP_DL@ +UPDATE_LEAP_DS = @UPDATE_LEAP_DS@ +UPDATE_LEAP_MS = @UPDATE_LEAP_MS@ +UPDATE_LEAP_NI = @UPDATE_LEAP_NI@ VERSION = @VERSION@ VER_SUFFIX = @VER_SUFFIX@ YACC = @YACC@ diff --git a/compile b/compile new file mode 100755 index 0000000..1b1d232 --- /dev/null +++ b/compile @@ -0,0 +1,142 @@ +#! /bin/sh +# Wrapper for compilers which do not understand `-c -o'. + +scriptversion=2005-05-14.22 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# 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, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand `-c -o'. +Remove `-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file `INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; +esac + +ofile= +cfile= +eat= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as `compile cc -o foo foo.c'. + # So we strip `-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no `-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # `.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` + +# Create the lock directory. +# Note: use `[/.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..b02565c --- /dev/null +++ b/config.guess @@ -0,0 +1,1517 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. + +timestamp='2011-06-03' + +# This file 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 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/config.h.in b/config.h.in index ad7408c..5ca9484 100644 --- a/config.h.in +++ b/config.h.in @@ -327,6 +327,9 @@ */ #undef HAVE_ALLOCA_H +/* Define to 1 if you have the `arc4random_buf' function. */ +#undef HAVE_ARC4RANDOM_BUF + /* Define to 1 if you have the header file. */ #undef HAVE_ARPA_NAMESER_H @@ -701,6 +704,12 @@ /* Define to 1 if you have the `pututxline' function. */ #undef HAVE_PUTUTXLINE +/* Define to 1 if you have the `RAND_bytes' function. */ +#undef HAVE_RAND_BYTES + +/* Define to 1 if you have the `RAND_poll' function. */ +#undef HAVE_RAND_POLL + /* Define to 1 if you have the header file. */ #undef HAVE_READLINE_H @@ -860,6 +869,9 @@ /* Define to 1 if you have the `strsignal' function. */ #undef HAVE_STRSIGNAL +/* Define to 1 if you have the `strtoll' function. */ +#undef HAVE_STRTOLL + /* Define to 1 if `decimal_point' is a member of `struct lconv'. */ #undef HAVE_STRUCT_LCONV_DECIMAL_POINT @@ -1319,6 +1331,10 @@ /* Should we recommend a minimum value for tickadj? */ #undef MIN_REC_TICKADJ +/* Define to 1 if the compiler does not support C99's structure + initialization. */ +#undef MISSING_C99_STRUCT_INIT + /* Do we need HPUX adjtime() library support? */ #undef NEED_HPUX_ADJTIME @@ -1546,6 +1562,12 @@ typedef unsigned int uintptr_t; /* Must we have a CTTY for fsetown? */ #undef USE_FSETOWNCTTY +/* Use OpenSSL's crypto random functions */ +#undef USE_OPENSSL_CRYPTO_RAND + +/* OK to use snprintb()? */ +#undef USE_SNPRINTB + /* Can we use SIGPOLL for tty IO? */ #undef USE_TTY_SIGPOLL diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..f9fcdc8 --- /dev/null +++ b/config.sub @@ -0,0 +1,1756 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011 Free Software Foundation, Inc. + +timestamp='2011-06-03' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file 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 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 \ + | ns16k | ns32k \ + | open8 \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/configure b/configure index 041a51e..29d777c 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for ntp4 4.2.7p482. +# Generated by GNU Autoconf 2.68 for ntp 4.2.8p2. # # Report bugs to . # @@ -568,10 +568,10 @@ MFLAGS= MAKEFLAGS= # Identity of this package. -PACKAGE_NAME='ntp4' -PACKAGE_TARNAME='ntp4' -PACKAGE_VERSION='4.2.7p482' -PACKAGE_STRING='ntp4 4.2.7p482' +PACKAGE_NAME='ntp' +PACKAGE_TARNAME='ntp' +PACKAGE_VERSION='4.2.8p2' +PACKAGE_STRING='ntp 4.2.8p2' PACKAGE_BUGREPORT='http://bugs.ntp.org./' PACKAGE_URL='http://www.ntp.org./' @@ -649,7 +649,6 @@ DCFD TESTDCF MAKE_CHECK_LAYOUT VER_SUFFIX -PKG_CONFIG MAKE_CHECK_Y2K MAKE_LIBPARSE_KERNEL MAKE_LIBPARSE @@ -667,12 +666,18 @@ PTHREADS_TRUE LIBISC_PTHREADS_NOTHREADS PTHREAD_LIBS HAVE_INLINE +LDADD_LIBUTIL ALLOCA LIBM EDITLINE_LIBS LDADD_LIBNTP NTP_CROSSCOMPILE_FALSE NTP_CROSSCOMPILE_TRUE +BUILD_LIBEVENT_FALSE +BUILD_LIBEVENT_TRUE +LDADD_LIBEVENT +CPPFLAGS_LIBEVENT +PKG_CONFIG LIBOPTS_DIR LIBOPTS_CFLAGS LIBOPTS_LDADD @@ -705,6 +710,13 @@ LD FGREP SED LIBTOOL +INSTALL_UPDATE_LEAP_FALSE +INSTALL_UPDATE_LEAP_TRUE +UPDATE_LEAP_NI +UPDATE_LEAP_MS +UPDATE_LEAP_DS +UPDATE_LEAP_DL +UPDATE_LEAP_DB TIMETRIM_NI TIMETRIM_MS TIMETRIM_DS @@ -987,6 +999,7 @@ with_crypto with_openssl_libdir with_openssl_incdir with_rpath +enable_openssl_random enable_autokey enable_kmem enable_accurate_adjtime @@ -1567,7 +1580,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures ntp4 4.2.7p482 to adapt to many kinds of systems. +\`configure' configures ntp 4.2.8p2 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1615,7 +1628,7 @@ Fine tuning of the installation directories: --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/ntp4] + --docdir=DIR documentation root [DATAROOTDIR/doc/ntp] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] @@ -1637,7 +1650,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of ntp4 4.2.7p482:";; + short | recursive ) echo "Configuration of ntp 4.2.8p2:";; esac cat <<\_ACEOF @@ -1751,6 +1764,8 @@ Optional Features and Packages: --without-rpath s Disable auto-added -R linker paths + --enable-openssl-random Use OpenSSL's crypto random number functions, if + available (default is yes) --enable-autokey + support NTP Autokey protocol --enable-kmem s read /dev/kmem for tick and/or tickadj --enable-accurate-adjtime @@ -1801,7 +1816,7 @@ Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . -ntp4 home page: . +ntp home page: . _ACEOF ac_status=$? fi @@ -1864,7 +1879,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -ntp4 configure 4.2.7p482 +ntp configure 4.2.8p2 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -2689,7 +2704,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by ntp4 $as_me 4.2.7p482, which was +It was created by ntp $as_me 4.2.8p2, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -3635,8 +3650,8 @@ fi # Define the identity of the package. - PACKAGE='ntp4' - VERSION='4.2.7p482' + PACKAGE='ntp' + VERSION='4.2.8p2' cat >>confdefs.h <<_ACEOF @@ -5426,6 +5441,183 @@ if test "x$ac_cv_prog_cc_c89" != xno; then : fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if ${ac_cv_prog_cc_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#include + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -xc99=all -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + +fi + + @@ -6159,6 +6351,7 @@ fi + CFLAGS_NTP= CPPFLAGS_NTP= LDADD_NTP= @@ -7594,6 +7787,44 @@ $as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h fi + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports C99 structure initialization" >&5 +$as_echo_n "checking whether the compiler supports C99 structure initialization... " >&6; } + + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + struct foo_s {int i1; int i2;}; + int main() { struct foo_s foo[] = { { .i1 = 1, .i2 = 1 }, { .i1 = 2, .i2 = 2 }, { .i1 = 0, .i2 = 0 } }; } + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +$as_echo "#define MISSING_C99_STRUCT_INIT 1" >>confdefs.h + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking to see if we need ylwrap VPATH hack" >&5 $as_echo_n "checking to see if we need ylwrap VPATH hack... " >&6; } @@ -7755,6 +7986,19 @@ fi + + + + + + + if test -z "$UPDATE_LEAP_NI" ; then + INSTALL_UPDATE_LEAP_TRUE= + INSTALL_UPDATE_LEAP_FALSE='#' +else + INSTALL_UPDATE_LEAP_TRUE='#' + INSTALL_UPDATE_LEAP_FALSE= +fi @@ -19234,6 +19478,126 @@ fi +ntp_pkgconfig_min_version='0.15.0' +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +{ ac_cv_path_PKG_CONFIG=; unset ac_cv_path_PKG_CONFIG;} +{ ac_cv_path_ac_pt_PKG_CONFIG=; unset ac_cv_path_ac_pt_PKG_CONFIG;} + +case "$PKG_CONFIG" in + /*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if pkg-config is at least version $ntp_pkgconfig_min_version" >&5 +$as_echo_n "checking if pkg-config is at least version $ntp_pkgconfig_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $ntp_pkgconfig_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi + ;; +esac + + + + # Check whether --enable-local-libevent was given. if test "${enable_local_libevent+set}" = set; then : enableval=$enable_local_libevent; ntp_use_local_libevent=$enableval @@ -19246,6 +19610,91 @@ fi +ntp_libevent_min_version=2 +ntp_libevent_tearoff=sntp/libevent + + + + +case "$ntp_use_local_libevent" in + yes) + ;; + *) # If we have (a good enough) pkg-config, see if it can find libevent + case "$PKG_CONFIG" in + /*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libevent $ntp_libevent_min_version or later is installed" >&5 +$as_echo_n "checking if libevent $ntp_libevent_min_version or later is installed... " >&6; } + if $PKG_CONFIG --atleast-version=$ntp_libevent_min_version libevent + then + ntp_use_local_libevent=no + { $as_echo "$as_me:${as_lineno-$LINENO}: Using the installed libevent" >&5 +$as_echo "$as_me: Using the installed libevent" >&6;} + CPPFLAGS_LIBEVENT=`$PKG_CONFIG --cflags-only-I libevent` + # HMS: I hope the following is accurate. + # We don't need -levent, we only need -levent_core. + # While we could grab only the -L stuff, there *might* be + # other flags there we want. Originally we just removed -levent + # but then somebody decided to install -levent-2.0 + # LDADD_LIBEVENT=`$PKG_CONFIG --libs libevent | sed 's:-levent::'` + # So now we dance... + LDADD_LIBEVENT= + for i in `$PKG_CONFIG --libs libevent` + do + case "$i" in + -levent*) ;; + *) case "$LDADD_LIBEVENT" in + '') LDADD_LIBEVENT="$i" ;; + *) LDADD_LIBEVENT="$LDADD_LIBEVENT $i" ;; + esac + ;; + esac + done + case "$LIBISC_PTHREADS_NOTHREADS" in + pthreads) + LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_pthreads" + esac + LDADD_LIBEVENT="$LDADD_LIBEVENT -levent_core" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + ntp_use_local_libevent=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + ntp_use_local_libevent=yes + ;; + esac + ;; +esac + +case "$ntp_use_local_libevent" in + yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: Using libevent tearoff" >&5 +$as_echo "$as_me: Using libevent tearoff" >&6;} + CPPFLAGS_LIBEVENT="-I\$(top_builddir)/$ntp_libevent_tearoff/include -I\$(top_srcdir)/$ntp_libevent_tearoff/include" + case "$LIBISC_PTHREADS_NOTHREADS" in + pthreads) + LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_pthreads.la \$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la" + ;; + *) + LDADD_LIBEVENT="\$(top_builddir)/$ntp_libevent_tearoff/libevent_core.la" + esac +esac + + if test "x$ntp_use_local_libevent" = "xyes"; then + BUILD_LIBEVENT_TRUE= + BUILD_LIBEVENT_FALSE='#' +else + BUILD_LIBEVENT_TRUE='#' + BUILD_LIBEVENT_FALSE= +fi + + + + + # Expose a cross-compilation indicator to makefiles if test $build != $host; then @@ -21075,6 +21524,73 @@ fi done +# Bug 2713 +LDADD_LIBUTIL= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing snprintb" >&5 +$as_echo_n "checking for library containing snprintb... " >&6; } +if ${ac_cv_search_snprintb+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char snprintb (); +int +main () +{ +return snprintb (); + ; + return 0; +} +_ACEOF +for ac_lib in '' util; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_snprintb=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_snprintb+:} false; then : + break +fi +done +if ${ac_cv_search_snprintb+:} false; then : + +else + ac_cv_search_snprintb=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_snprintb" >&5 +$as_echo "$ac_cv_search_snprintb" >&6; } +ac_res=$ac_cv_search_snprintb +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + case "$ac_cv_search_snprintb" in + 'none required') ;; + no) ;; + *) LDADD_LIBUTIL="$ac_cv_search_snprintb $LDADD_LIBUTIL" ;; + esac + +$as_echo "#define USE_SNPRINTB 1" >>confdefs.h + +fi + + # for ac_header in errno.h sys/socket.h sys/types.h time.h do : @@ -29947,6 +30463,20 @@ fi esac +#### + +for ac_func in arc4random_buf +do : + ac_fn_c_check_func "$LINENO" "arc4random_buf" "ac_cv_func_arc4random_buf" +if test "x$ac_cv_func_arc4random_buf" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ARC4RANDOM_BUF 1 +_ACEOF + +fi +done + + #### saved_LIBS="$LIBS" @@ -31237,10 +31767,10 @@ else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - #if !defined(SYS_ntp_gettime) || !defined(SYS_ntp_adjtime) - # error - #endif + #include + #if !defined(SYS_ntp_gettime) || !defined(SYS_ntp_adjtime) + # error + #endif _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : @@ -31276,10 +31806,10 @@ else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include - #ifndef STA_FLL - # error - #endif + #include + #ifndef STA_FLL + # error + #endif _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : @@ -32258,13 +32788,27 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ntp_ok" >&5 $as_echo "$ntp_ok" >&6; } +for ac_func in strtoll +do : + ac_fn_c_check_func "$LINENO" "strtoll" "ac_cv_func_strtoll" +if test "x$ac_cv_func_strtoll" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRTOLL 1 +_ACEOF + +fi +done + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GPSD JSON receiver" >&5 $as_echo_n "checking for GPSD JSON receiver... " >&6; } # Check whether --enable-GPSD was given. if test "${enable_GPSD+set}" = set; then : enableval=$enable_GPSD; ntp_ok=$enableval else - ntp_ok=$ntp_eac + case "$ac_cv_func_strtoll" in + yes) ntp_ok=$ntp_eac ;; + *) ntp_ok="no" ;; + esac fi @@ -33029,126 +33573,6 @@ $as_echo "$ans" >&6; } -ntp_pkgconfig_min_version='0.15.0' -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. -set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_PKG_CONFIG"; then - ac_pt_PKG_CONFIG=$PKG_CONFIG - # Extract the first word of "pkg-config", so it can be a program name with args. -set dummy pkg-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG -if test -n "$ac_pt_PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 -$as_echo "$ac_pt_PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_PKG_CONFIG" = x; then - PKG_CONFIG="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - PKG_CONFIG=$ac_pt_PKG_CONFIG - fi -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - -{ ac_cv_path_PKG_CONFIG=; unset ac_cv_path_PKG_CONFIG;} -{ ac_cv_path_ac_pt_PKG_CONFIG=; unset ac_cv_path_ac_pt_PKG_CONFIG;} - -case "$PKG_CONFIG" in - /*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if pkg-config is at least version $ntp_pkgconfig_min_version" >&5 -$as_echo_n "checking if pkg-config is at least version $ntp_pkgconfig_min_version... " >&6; } - if $PKG_CONFIG --atleast-pkgconfig-version $ntp_pkgconfig_min_version; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - PKG_CONFIG="" - fi - ;; -esac - - - - VER_SUFFIX= @@ -33560,6 +33984,49 @@ LIBS="$NTPO_SAVED_LIBS" { ntp_openssl_from_pkg_config=; unset ntp_openssl_from_pkg_config;} + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if we want to use OpenSSL's crypto random (if available)" >&5 +$as_echo_n "checking if we want to use OpenSSL's crypto random (if available)... " >&6; } +# Check whether --enable-openssl-random was given. +if test "${enable_openssl_random+set}" = set; then : + enableval=$enable_openssl_random; ntp_use_openssl_random=$enableval +else + ntp_use_openssl_random=yes + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ntp_use_openssl_random" >&5 +$as_echo "$ntp_use_openssl_random" >&6; } + +# The following might need extra libraries +NTPO_SAVED_LIBS="$LIBS" +LIBS="$NTPO_SAVED_LIBS $LDADD_NTP" +for ac_func in RAND_bytes RAND_poll +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +LIBS="$NTPO_SAVED_LIBS" +case "$ntp_use_openssl_random$ac_cv_func_RAND_bytes$ac_cv_func_RAND_poll" in + yesyesyes) + +$as_echo "#define USE_OPENSSL_CRYPTO_RAND 1" >>confdefs.h + + ;; + *) ntp_use_openssl_random=no ;; +esac + + + # if we are using OpenSSL (--with-crypto), by default Autokey is enabled { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we want to include NTP Autokey protocol support" >&5 $as_echo_n "checking if we want to include NTP Autokey protocol support... " >&6; } @@ -34917,7 +35384,6 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we should enable NIST lockclock scheme" >&5 $as_echo_n "checking if we should enable NIST lockclock scheme... " >&6; } - # Check whether --enable-nist was given. if test "${enable_nist+set}" = set; then : enableval=$enable_nist; ans=$enableval @@ -34939,7 +35405,6 @@ esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we want support for Samba's signing daemon" >&5 $as_echo_n "checking if we want support for Samba's signing daemon... " >&6; } - # Check whether --enable-ntp-signd was given. if test "${enable_ntp_signd+set}" = set; then : enableval=$enable_ntp_signd; ans=$enableval @@ -36035,33 +36500,35 @@ ac_config_files="$ac_config_files parseutil/Makefile" ac_config_files="$ac_config_files scripts/Makefile" -ac_config_files="$ac_config_files scripts/lib/Makefile" +ac_config_files="$ac_config_files scripts/build/Makefile" -ac_config_files="$ac_config_files scripts/calc_tickadj/calc_tickadj" +ac_config_files="$ac_config_files scripts/build/mkver" ac_config_files="$ac_config_files scripts/calc_tickadj/Makefile" -ac_config_files="$ac_config_files scripts/build/mkver" +ac_config_files="$ac_config_files scripts/calc_tickadj/calc_tickadj" -ac_config_files="$ac_config_files scripts/ntp-wait/ntp-wait" +ac_config_files="$ac_config_files scripts/lib/Makefile" ac_config_files="$ac_config_files scripts/ntp-wait/Makefile" -ac_config_files="$ac_config_files scripts/ntpsweep/ntpsweep" +ac_config_files="$ac_config_files scripts/ntp-wait/ntp-wait" ac_config_files="$ac_config_files scripts/ntpsweep/Makefile" -ac_config_files="$ac_config_files scripts/ntptrace/ntptrace" +ac_config_files="$ac_config_files scripts/ntpsweep/ntpsweep" ac_config_files="$ac_config_files scripts/ntptrace/Makefile" +ac_config_files="$ac_config_files scripts/ntptrace/ntptrace" + ac_config_files="$ac_config_files scripts/ntpver" ac_config_files="$ac_config_files scripts/plot_summary" ac_config_files="$ac_config_files scripts/summary" -ac_config_files="$ac_config_files scripts/build/Makefile" +ac_config_files="$ac_config_files scripts/update-leap/Makefile" ac_config_files="$ac_config_files tests/Makefile" @@ -36255,6 +36722,10 @@ if test -z "${INSTALL_NTPSWEEP_TRUE}" && test -z "${INSTALL_NTPSWEEP_FALSE}"; th as_fn_error $? "conditional \"INSTALL_NTPSWEEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${INSTALL_UPDATE_LEAP_TRUE}" && test -z "${INSTALL_UPDATE_LEAP_FALSE}"; then + as_fn_error $? "conditional \"INSTALL_UPDATE_LEAP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${GL_GENERATE_STDNORETURN_H_TRUE}" && test -z "${GL_GENERATE_STDNORETURN_H_FALSE}"; then as_fn_error $? "conditional \"GL_GENERATE_STDNORETURN_H\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -36267,6 +36738,10 @@ if test -z "${NEED_LIBOPTS_TRUE}" && test -z "${NEED_LIBOPTS_FALSE}"; then as_fn_error $? "conditional \"NEED_LIBOPTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${BUILD_LIBEVENT_TRUE}" && test -z "${BUILD_LIBEVENT_FALSE}"; then + as_fn_error $? "conditional \"BUILD_LIBEVENT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${NTP_CROSSCOMPILE_TRUE}" && test -z "${NTP_CROSSCOMPILE_FALSE}"; then as_fn_error $? "conditional \"NTP_CROSSCOMPILE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -36696,7 +37171,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by ntp4 $as_me 4.2.7p482, which was +This file was extended by ntp $as_me 4.2.8p2, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -36757,13 +37232,13 @@ Configuration commands: $config_commands Report bugs to . -ntp4 home page: ." +ntp home page: ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -ntp4 config.status 4.2.7p482 +ntp config.status 4.2.8p2 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" @@ -37290,20 +37765,21 @@ do "ntpsnmpd/Makefile") CONFIG_FILES="$CONFIG_FILES ntpsnmpd/Makefile" ;; "parseutil/Makefile") CONFIG_FILES="$CONFIG_FILES parseutil/Makefile" ;; "scripts/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/Makefile" ;; - "scripts/lib/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/lib/Makefile" ;; - "scripts/calc_tickadj/calc_tickadj") CONFIG_FILES="$CONFIG_FILES scripts/calc_tickadj/calc_tickadj" ;; - "scripts/calc_tickadj/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/calc_tickadj/Makefile" ;; + "scripts/build/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/build/Makefile" ;; "scripts/build/mkver") CONFIG_FILES="$CONFIG_FILES scripts/build/mkver" ;; - "scripts/ntp-wait/ntp-wait") CONFIG_FILES="$CONFIG_FILES scripts/ntp-wait/ntp-wait" ;; + "scripts/calc_tickadj/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/calc_tickadj/Makefile" ;; + "scripts/calc_tickadj/calc_tickadj") CONFIG_FILES="$CONFIG_FILES scripts/calc_tickadj/calc_tickadj" ;; + "scripts/lib/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/lib/Makefile" ;; "scripts/ntp-wait/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/ntp-wait/Makefile" ;; - "scripts/ntpsweep/ntpsweep") CONFIG_FILES="$CONFIG_FILES scripts/ntpsweep/ntpsweep" ;; + "scripts/ntp-wait/ntp-wait") CONFIG_FILES="$CONFIG_FILES scripts/ntp-wait/ntp-wait" ;; "scripts/ntpsweep/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/ntpsweep/Makefile" ;; - "scripts/ntptrace/ntptrace") CONFIG_FILES="$CONFIG_FILES scripts/ntptrace/ntptrace" ;; + "scripts/ntpsweep/ntpsweep") CONFIG_FILES="$CONFIG_FILES scripts/ntpsweep/ntpsweep" ;; "scripts/ntptrace/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/ntptrace/Makefile" ;; + "scripts/ntptrace/ntptrace") CONFIG_FILES="$CONFIG_FILES scripts/ntptrace/ntptrace" ;; "scripts/ntpver") CONFIG_FILES="$CONFIG_FILES scripts/ntpver" ;; "scripts/plot_summary") CONFIG_FILES="$CONFIG_FILES scripts/plot_summary" ;; "scripts/summary") CONFIG_FILES="$CONFIG_FILES scripts/summary" ;; - "scripts/build/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/build/Makefile" ;; + "scripts/update-leap/Makefile") CONFIG_FILES="$CONFIG_FILES scripts/update-leap/Makefile" ;; "tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;; "tests/libntp/Makefile") CONFIG_FILES="$CONFIG_FILES tests/libntp/Makefile" ;; "tests/ntpd/Makefile") CONFIG_FILES="$CONFIG_FILES tests/ntpd/Makefile" ;; @@ -38841,8 +39317,8 @@ _LT_EOF ;; "ntpd/complete.conf":F) sed -e '/^rlimit$/d' < ntpd/complete.conf > ntpd/complete.conf.new && mv ntpd/complete.conf.new ntpd/complete.conf ;; "ntpdc/nl.pl":F) chmod +x ntpdc/nl.pl ;; - "scripts/calc_tickadj/calc_tickadj":F) chmod +x scripts/calc_tickadj/calc_tickadj ;; "scripts/build/mkver":F) chmod +x scripts/build/mkver ;; + "scripts/calc_tickadj/calc_tickadj":F) chmod +x scripts/calc_tickadj/calc_tickadj ;; "scripts/ntp-wait/ntp-wait":F) chmod +x scripts/ntp-wait/ntp-wait ;; "scripts/ntpsweep/ntpsweep":F) chmod +x scripts/ntpsweep/ntpsweep ;; "scripts/ntptrace/ntptrace":F) chmod +x scripts/ntptrace/ntptrace ;; diff --git a/configure.ac b/configure.ac index 1044d8c..dc5c7fc 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ dnl m4_include([sntp/m4/version.m4]) AC_PREREQ([2.61]) AC_INIT( - [ntp4], + [ntp], [VERSION_NUMBER], [http://bugs.ntp.org./], [], @@ -68,6 +68,7 @@ AC_PROG_CPP AC_PROG_CXX AC_PROG_YACC AC_PROG_CC_C_O +AX_C99_STRUCT_INIT NTP_VPATH_HACK dnl used only by ntpd/Makefile.am @@ -102,7 +103,7 @@ esac enable_nls=no LIBOPTS_CHECK_NOBUILD([sntp/libopts]) -NTP_ENABLE_LOCAL_LIBEVENT +NTP_LIBEVENT_CHECK_NOBUILD([2], [sntp/libevent]) NTP_LIBNTP @@ -771,6 +772,10 @@ esac #### +AC_CHECK_FUNCS([arc4random_buf]) + +#### + saved_LIBS="$LIBS" LIBS="$LIBS $LDADD_LIBNTP" AC_CHECK_FUNCS([daemon]) @@ -1495,12 +1500,13 @@ AC_CACHE_CHECK( ;; *) AC_PREPROC_IFELSE( - [ - #include - #if !defined(SYS_ntp_gettime) || !defined(SYS_ntp_adjtime) - # error - #endif - ], + [AC_LANG_SOURCE( + [ + #include + #if !defined(SYS_ntp_gettime) || !defined(SYS_ntp_adjtime) + # error + #endif + ])], [ntp_cv_var_ntp_syscalls=kernel] ) ;; @@ -1522,12 +1528,13 @@ AC_CACHE_CHECK( [if sys/timex.h has STA_FLL], [ntp_cv_var_sta_fll], [AC_PREPROC_IFELSE( - [ - #include - #ifndef STA_FLL - # error - #endif - ], + [AC_LANG_SOURCE( + [ + #include + #ifndef STA_FLL + # error + #endif + ])], [ntp_cv_var_sta_fll=yes], [ntp_cv_var_sta_fll=no] )] @@ -1582,12 +1589,12 @@ AC_MSG_CHECKING([for TTY PPS ioctl TIOCGPPSEV]) case "$ac_cv_header_termios_h" in yes) AC_PREPROC_IFELSE( - [ + [AC_LANG_SOURCE([ #include #ifndef TIOCGPPSEV # error #endif - ], + ])], [ntp_ok=yes], [ntp_ok=no] ) @@ -1608,12 +1615,12 @@ AC_MSG_CHECKING([for TTY PPS ioctl TIOCSPPS]) case "$ac_cv_header_termios_h" in yes) AC_PREPROC_IFELSE( - [ + [AC_LANG_SOURCE([ #include #ifndef TIOCSPPS # error #endif - ], + ])], [ntp_ok=yes], [ntp_ok=no] ) @@ -1634,12 +1641,12 @@ AC_MSG_CHECKING([for TTY PPS ioctl CIOGETEV]) case "$ac_cv_header_sys_ppsclock_h" in yes) AC_PREPROC_IFELSE( - [ + [AC_LANG_SOURCE([ #include #ifndef CIOGETEV # error #endif - ], + ])], [ntp_ok=yes], [ntp_ok=no] ) @@ -1685,7 +1692,7 @@ case "$ac_cv_header_sys_ppsclock_h$ac_cv_header_linux_serial_h" in yesyes) AC_MSG_CHECKING([ioctl TIOCGSERIAL, TIOCSSERIAL, ASYNC_PPS_CD_POS, ASYNC_PPS_CD_NEG]) AC_PREPROC_IFELSE( - [ + [AC_LANG_SOURCE([ #include typedef int u_int; #include @@ -1706,7 +1713,7 @@ case "$ac_cv_header_sys_ppsclock_h$ac_cv_header_linux_serial_h" in #ifndef CIOGETEV # error #endif - ], + ])], [ntp_ok=yes], [ntp_ok=no] ) @@ -2343,6 +2350,7 @@ case "$ntp_ok" in esac AC_MSG_RESULT([$ntp_ok]) +AC_CHECK_FUNCS([strtoll]) AC_MSG_CHECKING([for GPSD JSON receiver]) AC_ARG_ENABLE( [GPSD], @@ -2351,7 +2359,10 @@ AC_ARG_ENABLE( [+ GPSD JSON receiver] )], [ntp_ok=$enableval], - [ntp_ok=$ntp_eac] + [case "$ac_cv_func_strtoll" in + yes) ntp_ok=$ntp_eac ;; + *) ntp_ok="no" ;; + esac] ) case "$ntp_ok" in yes) @@ -3017,6 +3028,8 @@ AC_MSG_RESULT([$ans]) NTP_OPENSSL +NTP_CRYPTO_RAND + # if we are using OpenSSL (--with-crypto), by default Autokey is enabled AC_MSG_CHECKING([if we want to include NTP Autokey protocol support]) AC_ARG_ENABLE( @@ -4183,7 +4196,6 @@ case "$ans" in esac AC_MSG_CHECKING([if we should enable NIST lockclock scheme]) - AC_ARG_ENABLE( [nist], [AS_HELP_STRING( @@ -4203,7 +4215,6 @@ case "$ans" in esac AC_MSG_CHECKING([if we want support for Samba's signing daemon]) - AC_ARG_ENABLE( [ntp-signd], [AS_HELP_STRING( @@ -4256,14 +4267,14 @@ AC_CACHE_CHECK( [for interface list sysctl], [ntp_cv_iflist_sysctl], [AC_PREPROC_IFELSE( - [ + [AC_LANG_SOURCE([ #include #include #include #ifndef NET_RT_IFLIST # error #endif - ], + ])], [ntp_cv_iflist_sysctl=yes], [ntp_cv_iflist_sysctl=no] )] @@ -4323,20 +4334,21 @@ AC_CONFIG_FILES([ntpq/Makefile]) AC_CONFIG_FILES([ntpsnmpd/Makefile]) AC_CONFIG_FILES([parseutil/Makefile]) AC_CONFIG_FILES([scripts/Makefile]) -AC_CONFIG_FILES([scripts/lib/Makefile]) -AC_CONFIG_FILES([scripts/calc_tickadj/calc_tickadj], [chmod +x scripts/calc_tickadj/calc_tickadj]) -AC_CONFIG_FILES([scripts/calc_tickadj/Makefile]) +AC_CONFIG_FILES([scripts/build/Makefile]) AC_CONFIG_FILES([scripts/build/mkver], [chmod +x scripts/build/mkver]) -AC_CONFIG_FILES([scripts/ntp-wait/ntp-wait], [chmod +x scripts/ntp-wait/ntp-wait]) +AC_CONFIG_FILES([scripts/calc_tickadj/Makefile]) +AC_CONFIG_FILES([scripts/calc_tickadj/calc_tickadj], [chmod +x scripts/calc_tickadj/calc_tickadj]) +AC_CONFIG_FILES([scripts/lib/Makefile]) AC_CONFIG_FILES([scripts/ntp-wait/Makefile]) -AC_CONFIG_FILES([scripts/ntpsweep/ntpsweep], [chmod +x scripts/ntpsweep/ntpsweep]) +AC_CONFIG_FILES([scripts/ntp-wait/ntp-wait], [chmod +x scripts/ntp-wait/ntp-wait]) AC_CONFIG_FILES([scripts/ntpsweep/Makefile]) -AC_CONFIG_FILES([scripts/ntptrace/ntptrace], [chmod +x scripts/ntptrace/ntptrace]) +AC_CONFIG_FILES([scripts/ntpsweep/ntpsweep], [chmod +x scripts/ntpsweep/ntpsweep]) AC_CONFIG_FILES([scripts/ntptrace/Makefile]) +AC_CONFIG_FILES([scripts/ntptrace/ntptrace], [chmod +x scripts/ntptrace/ntptrace]) AC_CONFIG_FILES([scripts/ntpver], [chmod +x scripts/ntpver]) AC_CONFIG_FILES([scripts/plot_summary], [chmod +x scripts/plot_summary]) AC_CONFIG_FILES([scripts/summary], [chmod +x scripts/summary]) -AC_CONFIG_FILES([scripts/build/Makefile]) +AC_CONFIG_FILES([scripts/update-leap/Makefile]) AC_CONFIG_FILES([tests/Makefile]) AC_CONFIG_FILES([tests/libntp/Makefile]) AC_CONFIG_FILES([tests/ntpd/Makefile]) diff --git a/depcomp b/depcomp new file mode 100755 index 0000000..04701da --- /dev/null +++ b/depcomp @@ -0,0 +1,530 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2005-07-09.11 + +# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. + +# 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, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mecanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/html/build.html b/html/build.html index 9683b29..5e3c2d8 100644 --- a/html/build.html +++ b/html/build.html @@ -11,7 +11,7 @@ giffrom Pogo, Walt Kelly

For putting out compiler fires.

Last update: - 31-Mar-2014 05:39 + 1-Apr-2015 02:57


Related Links

@@ -27,7 +27,7 @@

Building and Installing the Distribution

-

It is not possible in a software distribution such as this to support every individual computer and operating system with a common executable, even with the same system but different versions and options. Therefore, it is necessary to configure, build and install for each system and version. In almost all cases, these procedures are completely automatic, The user types ./configure, make and install in that order and the autoconfigure system does the rest. There are some exceptions, as noted below and on the Hints and Kinks pages.

+

It is not possible in a software distribution such as this to support every individual computer and operating system with a common executable, even with the same system but different versions and options. Therefore, it is necessary to configure, build and install for each system and version. In almost all cases, these procedures are completely automatic, The user types ./configure, and make install in that order and the autoconfigure system does the rest. There are some exceptions, as noted below and on the Hints and Kinks pages.

If available, the OpenSSL library from http://www.openssl.org is used to support public key cryptography. The library must be built and installed prior to building NTP. The procedures for doing that are included in the OpenSSL documentation. The library is found during the normal NTP configure phase and the interface routines compiled automatically. Only the libcrypto.a library file and openssl header files are needed. If the library is not available or disabled, this step is not required.

The Build Options page describes a number of options that determine whether debug support is included, whether and which reference clock drivers are included and the locations of the executables and library files, if not the default. By default debugging options and all reference clock drivers are included.

Building and Installing for Unix

diff --git a/html/confopt.html b/html/confopt.html index 8c8ae37..b964d24 100644 --- a/html/confopt.html +++ b/html/confopt.html @@ -91,11 +91,13 @@ outgoing NTP packets. Versions 1-4 are the choices, with version 4 the default.<

Auxiliary Commands

broadcastclient
-
Enable reception of broadcast server messages to any local interface (type b address). Ordinarily, upon receiving a broadcast message for the first time, the broadcast client measures the nominal server propagation delay using a brief client/server exchange, after which it continues in listen-only mode. If a nonzero value is specified in the broadcastdelay command, the value becomes the delay and the volley is not executed. Note: the novolley option has been deprecated for future enhancements. Note that, in order to avoid accidental or malicious disruption in this mode, both the server and client should operate using symmetric key or public key authentication as described in the Authentication Options page. Note that the volley is required with public key authentication in order to run the Autokey protocol..
+
Enable reception of broadcast server messages to any local interface (type b address). Ordinarily, upon receiving a broadcast message for the first time, the broadcast client measures the nominal server propagation delay using a brief client/server exchange, after which it continues in listen-only mode. If a nonzero value is specified in the broadcastdelay command, the value becomes the delay and the volley is not executed. Note: the novolley option has been deprecated for future enhancements. Note that, in order to avoid accidental or malicious disruption in this mode, both the server and client should operate using symmetric key or public key authentication as described in the Authentication Options page. Note that the volley is required with public key authentication in order to run the Autokey protocol.
manycastserver address [...]
Enable reception of manycast client messages (type m) to the multicasts group address(es) (type m) specified. At least one address is required. Note that, in order to avoid accidental or malicious disruption, both the server and client should operate using symmetric key or public key authentication as described in the Authentication Options page.
multicastclient address [...]
Enable reception of multicast server messages to the multicast group address(es) (type m) specified. Upon receiving a message for the first time, the multicast client measures the nominal server propagation delay using a brief client/server exchange with the server, then enters the broadcast client mode, in which it synchronizes to succeeding multicast messages. Note that, in order to avoid accidental or malicious disruption in this mode, both the server and client should operate using symmetric key or public key authentication as described in the Authentication Options page.
+
mdnstries number
+
If we are participating in mDNS, after we have synched for the first time we attempt to register with the mDNS system. If that registration attempt fails, we try again at one minute intervals for up to mdnstries times. After all, ntpd may be starting before mDNS. The default value for mdnstries is 5.

diff --git a/html/copyright.html b/html/copyright.html index 08272d4..94fffc4 100644 --- a/html/copyright.html +++ b/html/copyright.html @@ -10,16 +10,16 @@

Copyright Notice

jpg "Clone me," says Dolly sheepishly.

Last update: - 9-Aug-2014 07:56 + 17-Jan-2015 00:16 UTC



-

The following copyright notice applies to all files collectively called the Network Time Protocol Version 4 Distribution. Unless specifically declared otherwise in an individual file, this notice applies as if the text was explicitly included in the file.

+

The following copyright notice applies to all files collectively called the Network Time Protocol Version 4 Distribution. Unless specifically declared otherwise in an individual file, this entire notice applies as if the text was explicitly included in the file.

 ***********************************************************************
 *                                                                     *
-* Copyright (c) University of Delaware 1992-2014                      *
+* Copyright (c) University of Delaware 1992-2015                      *
 *                                                                     *
 * Permission to use, copy, modify, and distribute this software and   *
 * its documentation for any purpose with or without fee is hereby     *
@@ -35,6 +35,38 @@
 *                                                                     *
 ***********************************************************************
 
+

Content starting in 2011 from Harlan Stenn, Danny Mayer, and Martin Burnicki is:

+
+***********************************************************************
+*                                                                     *
+* Copyright (c) Network Time Foundation 2011-2015                     *
+*                                                                     *
+* All Rights Reserved                                                 *
+*                                                                     *
+* Redistribution and use in source and binary forms, with or without  *
+* modification, are permitted provided that the following conditions  *
+* are met:                                                            *
+* 1. Redistributions of source code must retain the above copyright   *
+*    notice, this list of conditions and the following disclaimer.    *
+* 2. Redistributions in binary form must reproduce the above          *
+*    copyright notice, this list of conditions and the following      *
+*    disclaimer in the documentation and/or other materials provided  *
+*    with the distribution.                                           *
+*                                                                     *
+* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS  *
+* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED   *
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE  *
+* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE    *
+* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR *
+* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT   *
+* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR  *
+* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF          *
+* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT           *
+* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE   *
+* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH    *
+* DAMAGE.                                                             *
+***********************************************************************
+

The following individuals contributed in part to the Network Time Protocol Distribution Version 4 and are acknowledged as authors of this work.

  1. Takao Abe <takao_abe@xurb.jp> Clock driver for JJY receivers
  2. diff --git a/html/drivers/driver28.html b/html/drivers/driver28.html index 8c7fd80..efa862f 100644 --- a/html/drivers/driver28.html +++ b/html/drivers/driver28.html @@ -7,6 +7,10 @@ Shared Memory Driver + @@ -21,7 +25,13 @@ Driver ID: SHM

    Description

    -

    This driver receives its reference clock info from a shared memory-segment. The shared memory-segment is created with owner-only access for unit 0 and 1, and world access for unit 2 and 3

    +

    This driver receives its reference clock info from a shared + memory-segment. The shared memory-segment is created with owner-only + access by default, unless otherwise requested by the mode word for units + ≥2. Units 0 and 1 are always created with owner-only access for + backward compatibility. +

    +

    Structure of shared memory-segment

    struct shmTime {
    @@ -49,14 +59,14 @@
     
             

    Operation mode=0

    Each second, the value of valid of the shared memory-segment is checked:

    -

    If set, the values in the record (clockTimeStampSec, clockTimeStampUSec, receiveTimeStampSec, receiveTimeStampUSec, leap, precision) are passed to ntp, and valid is cleared and count is bumped.

    +

    If set, the values in the record (clockTimeStampSec, clockTimeStampUSec, receiveTimeStampSec, receiveTimeStampUSec, leap, precision) are passed to NTPD, and valid is cleared and count is bumped.

    If not set, count is bumped.

    Operation mode=1

    Each second, valid in the shared memory-segment is checked:

    -

    If set, the count field of the record is remembered, and the values in the record (clockTimeStampSec, clockTimeStampUSec, receiveTimeStampSec, receiveTimeStampUSec, leap, precision) are read. Then, the remembered count is compared to current value of count now in the record. If both are equal, the values read from the record are passed to ntp. If they differ, another process has modified the record while it was read out (was not able to produce this case), and failure is reported to ntp. The valid flag is cleared and count is bumped.

    +

    If set, the count field of the record is remembered, and the values in the record (clockTimeStampSec, clockTimeStampUSec, receiveTimeStampSec, receiveTimeStampUSec, leap, precision) are read. Then, the remembered count is compared to current value of count now in the record. If both are equal, the values read from the record are passed to NTPD. If they differ, another process has modified the record while it was read out (was not able to produce this case), and failure is reported to NTPD. The valid flag is cleared and count is bumped.

    If not set, count is bumped

    -

    Mode-independent postprocessing

    +

    Mode-independent post-processing

    After the time stamps have been successfully plucked from the SHM segment, some sanity checks take place:
      @@ -69,30 +79,38 @@ segment, some sanity checks take place: set to 1.
    -

    gpsd

    +

    GPSD

    -gpsd +GPSD knows how to talk to many GPS devices. -It can work with ntpd through the SHM driver. +It can work with NTPD through the SHM driver.

    -The gpsd man page suggests setting minpoll and maxpoll to 4. +The GPSD man page suggests setting minpoll and maxpoll to 4. That was an attempt to reduce jitter. The SHM driver was fixed (ntp-4.2.5p138) to collect data each second rather than once per polling interval so that suggestion is no longer reasonable.

    - Note: The GPSD client driver (type 46) uses the gpsd - client protocol to connect and talk to gpsd, but using the - SHM driver is the ancient way to have gpsd talk to ntpd. + Note: The GPSD client driver (type 46) uses the GPSD + client protocol to connect and talk to GPSD, but using the + SHM driver is the ancient way to have GPSD talk to NTPD. There + are some tricky points when using the SHM interface to interface + with GPSD, because GPSD will use two SHM clocks, one for the + serial data stream and one for the PPS information when + available. Receivers with a loose/sloppy timing between PPS and serial data + can easily cause trouble here because NTPD has no way to join the two + data streams and correlate the serial data with the PPS events. +

    +

    Clockstats

    If flag4 is set when the driver is polled, a clockstats record is written. The first 3 fields are the normal date, time, and IP address common to all clockstats records.

    The 4th field is the number of second ticks since the last poll. -The 5th field is the number of good data samples found. The last 64 will be used by ntpd. +The 5th field is the number of good data samples found. The last 64 will be used by NTPD. The 6th field is the number of sample that didn't have valid data ready. The 7th field is the number of bad samples. -The 8th field is the number of times the the mode 1 info was update while nptd was trying to grab a sample. +The 8th field is the number of times the the mode 1 info was update while NTPD was trying to grab a sample.

    Here is a sample showing the GPS reception fading out: @@ -112,6 +130,39 @@ Here is a sample showing the GPS reception fading out: 54364 85700.160 127.127.28.0 65 0 65 0 0

    +

    The 'mode' word

    + +

    + Some aspects of the driver behavior can be adjusted by setting bits of + the 'mode' word in the server configuration line:
    +   server 127.127.28.x mode Y +

    + + + + + + + + + + + + + + + + + + + + + + +
    mode word bits and bit groups
    BitDecHexMeaning
    011The SHM segment is private (mode 0600). This is the fixed + default for clock units 0 and 1; clock units >1 are mode + 0666 unless this bit is set for the specific unit.
    1-31--reserved -- do not use
    +

    Fudge Factors

    time1 time @@ -136,9 +187,64 @@ Here is a sample showing the GPS reception fading out:
    Not used by this driver.
    flag4 0 | 1
    If flag4 is set, clockstats records will be written when the driver is polled. -

    Additional Information

    -

    Reference Clock Drivers

    + +

    Public vs. Private SHM segments

    + +

    The driver attempts to create a shared memory segment with an + identifier depending on the unit number. This identifier (which can be + a numeric value or a string) clearly depends on the method used, which + in turn depends on the host operating system:

    + +
      +
    • + Windows uses a file mapping to the page file with the + name 'Global\NTPu' for public accessible + mappings, where u is the clock unit. Private / + non-public mappings are created as + 'Local\NTPu'. +

      + Public access assigns a NULL DACL to the memory mapping, while + private access just uses the default DACL of the process creating + the mapping. +

      +
    • +
    • + SYSV IPC creates a shared memory segment with a key value + of 0x4E545030 + u, where u is again + the clock unit. (This value could be hex-decoded as 'NTP0', + 'NTP1',..., with funny characters for units > 9.) +

      + Public access means a permission set of 0666, while private access + creates the mapping with a permission set of 0600. +

      +
    • +
    + +

    There's no support for POSIX shared memory yet.

    + +

    NTPD is started as root on most POSIX-like operating systems + and uses the setuid/setgid system API to run under reduced rights once + the initial setup of the process is done. One consequence out of this + is that the allocation of SHM segments must be done early during the + clock setup. The actual polling of the clock is done as the run-time + user; deferring the creation of the SHM segment to this point will + create a SHM segment owned by the runtime-user account. The internal + structure of NTPD does not permit the use of a fudge flag if + this is to be avoided; this is the reason why a mode bit is used for + the configuration of a public segment. +

    + +

    When running under Windows, the chosen user account must be able to + create a SHM segment in the global object name space for SHM clocks with + public access. Otherwise the session isolation used by Windows kernels + after WinXP will get into the way if the client program does not run in + the same session. +

    + +

    Additional Information

    +

    Reference Clock Drivers

    +
    diff --git a/html/miscopt.html b/html/miscopt.html index 62f41b6..5750d17 100644 --- a/html/miscopt.html +++ b/html/miscopt.html @@ -10,7 +10,7 @@ giffrom Pogo, Walt Kelly

    We have three, now looking for more.

    Last update: - 31-Jan-2014 06:54 + 28-Feb-2015 12:01 UTC


    Related Links

    @@ -90,7 +90,7 @@
    nonvolatile threshold
    -
    Specify the threshold in PPM to write the frequency file, with default 0.1 PPM. The frequency file is inspected each hour. If the difference between the current frequency and the last value written exceeds the threshold, the file is written and the threshold becomes the new threshold value. If the threshold is not exceeded, it is reduced by half. This is intended to reduce the frequency of unnecessary file writes for embedded systems with nonvolatile memory.
    +
    Specify the threshold in seconds to write the frequency file, with default of 1e-7 (0.1 PPM). The frequency file is inspected each hour. If the difference between the current frequency and the last value written exceeds the threshold, the file is written and the threshold becomes the new threshold value. If the threshold is not exceeded, it is reduced by half. This is intended to reduce the frequency of unnecessary file writes for embedded systems with nonvolatile memory.
    phone dial ...
    This command is used in conjunction with the ACTS modem driver (type 18). The arguments consist of a maximum of 10 telephone numbers used to dial USNO, NIST or European time services. The Hayes command ATDT is normally prepended to the number, which can contain other modem control codes as well.
    reset [allpeers] [auth] [ctl] [io] [mem] [sys] [timer]
    diff --git a/html/sntp.html b/html/sntp.html index 0c270cb..84c6f29 100644 --- a/html/sntp.html +++ b/html/sntp.html @@ -3,6 +3,7 @@ sntp - Simple Network Time Protocol (SNTP) Client + @@ -10,7 +11,7 @@ giffrom Alice's Adventures in Wonderland, Lewis Carroll

    S is for snakeoil.

    Last update: - 3-Oct-2011 21:51 + 1-Apr-2015 11:05 UTC



    @@ -19,8 +20,8 @@

    Description

    This program is a Simple Network Time Protocol (SNTP) client that can be used to query a Network Time Protocol (NTP) server and display the time offset of the system clock relative to the server clock. Run as root it can correct the system clock to this offset as well. It can be run as an interactive command or from a script by a cron job. The program implements the SNTP client protocol defined in RFC 5905, including the full on-wire protocol but does not provide the sanity checks, access controls, security functions and mitigation algorithms as in the full NTP version 4 specification, also defined in RFC 5905.

    By default, sntp writes the local date and time (i.e., not UTC) to the standard output in the format

    -

    2011-08-04 00:40:36.642222 (+0000) +0.006611 +/- 0.041061 psp-os1 149.20.68.26

    -

    where the +0.006611 +/- 0.041061 indicates the time offset and error bound of the system clock relative to the server clock, in seconds.

    +

    2011-08-04 00:40:36.642222 (+0000) +0.006611 +/- 0.041061 psp-os1 149.20.68.26 s3 no-leap

    +

    where the +0.006611 +/- 0.041061 indicates the time offset and error bound of the system clock relative to the server clock, in seconds. The hostname and/or the IP is displayed, as is the stratum of the server. Finally, the leap indicator status is displayed.

    If -b bcaddress is not specified, the program sends a single message to each address and waits up to uctimeout (default 5) seconds for a unicast server response. Otherwise, it sends no message and waits up to bctimeout (default 68) seconds for a broadcast NTP message.

    Options

    sntp recognizes the following options:

    @@ -46,7 +47,7 @@
    -g delay, --gap delay
    Specify the delay in milliseconds between outgoing queries, defaulting to 50. sntp sends queries to all provided hostnames/addresses in short succession, and by default terminates once the first valid response is received. With multiple time sources provided, all but one will not be used. To limit the number of queries whose responses will not be used, each query is separated from the preceding one by delay milliseconds, to allow time for responses to earlier queries to be received. A larger delay reduces the query load on the time sources, increasing the time to receive a valid response if the first source attempted is slow or unreachable.
    -K kodfile, --kod kodfile
    -
    Specifies the filename kodfile to be used for the persistent history of KoD (Kiss Of Death, or rate-limiting) responses received from servers. The default is /var/db/ntp-kod. Note that the short option is -K, an uppercase letter K.
    +
    Specifies the filename kodfile to be used for the persistent history of KoD (Kiss Of Death, or rate-limiting) responses received from servers. The default is /var/db/ntp-kod. If the file does not exist, a warning message will be displayed. The file will not be created. Note that the short option is -K, an uppercase letter K.
    -k keyfile, --keyfile keyfile
    Specifies the filename keyfile used with the -a/--authentication option. The format of the file is described on the ntp-keygen page.
    -l logfile, --filelog logfile
    diff --git a/include/Makefile.in b/include/Makefile.in index e50f270..cb21004 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -40,8 +40,7 @@ DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap-thread-check.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap.m4 \ + $(top_srcdir)/sntp/m4/ax_c99_struct_init.m4 \ $(top_srcdir)/sntp/m4/define_dir.m4 \ $(top_srcdir)/sntp/m4/hms_search_lib.m4 \ $(top_srcdir)/sntp/m4/libtool.m4 \ @@ -52,6 +51,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_cacheversion.m4 \ $(top_srcdir)/sntp/m4/ntp_compiler.m4 \ $(top_srcdir)/sntp/m4/ntp_crosscompile.m4 \ + $(top_srcdir)/sntp/m4/ntp_crypto_rand.m4 \ $(top_srcdir)/sntp/m4/ntp_debug.m4 \ $(top_srcdir)/sntp/m4/ntp_dir_sep.m4 \ $(top_srcdir)/sntp/m4/ntp_facilitynames.m4 \ @@ -69,6 +69,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_sntp.m4 \ $(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \ $(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \ + $(top_srcdir)/sntp/m4/openldap-thread-check.m4 \ + $(top_srcdir)/sntp/m4/openldap.m4 \ $(top_srcdir)/sntp/m4/os_cflags.m4 \ $(top_srcdir)/sntp/m4/snprintf.m4 \ $(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac @@ -150,6 +152,7 @@ CHUTEST = @CHUTEST@ CONFIG_SHELL = @CONFIG_SHELL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_LIBEVENT = @CPPFLAGS_LIBEVENT@ CPPFLAGS_NTP = @CPPFLAGS_NTP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -184,7 +187,9 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ +LDADD_LIBEVENT = @LDADD_LIBEVENT@ LDADD_LIBNTP = @LDADD_LIBNTP@ +LDADD_LIBUTIL = @LDADD_LIBUTIL@ LDADD_NLIST = @LDADD_NLIST@ LDADD_NTP = @LDADD_NTP@ LDFLAGS = @LDFLAGS@ @@ -323,6 +328,11 @@ TIMETRIM_DL = @TIMETRIM_DL@ TIMETRIM_DS = @TIMETRIM_DS@ TIMETRIM_MS = @TIMETRIM_MS@ TIMETRIM_NI = @TIMETRIM_NI@ +UPDATE_LEAP_DB = @UPDATE_LEAP_DB@ +UPDATE_LEAP_DL = @UPDATE_LEAP_DL@ +UPDATE_LEAP_DS = @UPDATE_LEAP_DS@ +UPDATE_LEAP_MS = @UPDATE_LEAP_MS@ +UPDATE_LEAP_NI = @UPDATE_LEAP_NI@ VERSION = @VERSION@ VER_SUFFIX = @VER_SUFFIX@ YACC = @YACC@ diff --git a/include/audio.h b/include/audio.h index 1b969bd..0d74226 100644 --- a/include/audio.h +++ b/include/audio.h @@ -9,6 +9,6 @@ /* * Function prototypes */ -int audio_init (char *, int, int); +int audio_init (const char *, int, int); int audio_gain (int, int, int); void audio_show (void); diff --git a/include/binio.h b/include/binio.h index d1ee944..cf98633 100644 --- a/include/binio.h +++ b/include/binio.h @@ -42,11 +42,21 @@ void put_lsb_short (unsigned char **, long); long get_lsb_long (unsigned char **); void put_lsb_long (unsigned char **, long); +#define get_lsb_int16( _x_ ) ((int16_t) get_lsb_short( _x_ )) +#define get_lsb_uint16( _x_ ) ((uint16_t) get_lsb_short( _x_ )) +#define get_lsb_int32( _x_ ) ((int32_t) get_lsb_long( _x_ )) +#define get_lsb_uint32( _x_ ) ((uint32_t) get_lsb_long( _x_ )) + long get_msb_short (unsigned char **); void put_msb_short (unsigned char **, long); long get_msb_long (unsigned char **); void put_msb_long (unsigned char **, long); +#define get_msb_int16( _x_ ) ((int16_t) get_msb_short( _x_ )) +#define get_msb_uint16( _x_ ) ((uint16_t) get_msb_short( _x_ )) +#define get_msb_int32( _x_ ) ((int32_t) get_msb_long( _x_ )) +#define get_msb_uint32( _x_ ) ((uint32_t) get_msb_long( _x_ )) + #endif /* * History: diff --git a/include/icom.h b/include/icom.h index 66d12e5..b271afb 100644 --- a/include/icom.h +++ b/include/icom.h @@ -83,5 +83,5 @@ /* * Function prototypes */ -int icom_init (char *, int, int); +int icom_init (const char *, int, int); int icom_freq (int, int, double); diff --git a/include/isc/Makefile.in b/include/isc/Makefile.in index af01dcd..ad0da46 100644 --- a/include/isc/Makefile.in +++ b/include/isc/Makefile.in @@ -40,8 +40,7 @@ DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap-thread-check.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap.m4 \ + $(top_srcdir)/sntp/m4/ax_c99_struct_init.m4 \ $(top_srcdir)/sntp/m4/define_dir.m4 \ $(top_srcdir)/sntp/m4/hms_search_lib.m4 \ $(top_srcdir)/sntp/m4/libtool.m4 \ @@ -52,6 +51,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_cacheversion.m4 \ $(top_srcdir)/sntp/m4/ntp_compiler.m4 \ $(top_srcdir)/sntp/m4/ntp_crosscompile.m4 \ + $(top_srcdir)/sntp/m4/ntp_crypto_rand.m4 \ $(top_srcdir)/sntp/m4/ntp_debug.m4 \ $(top_srcdir)/sntp/m4/ntp_dir_sep.m4 \ $(top_srcdir)/sntp/m4/ntp_facilitynames.m4 \ @@ -69,6 +69,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_sntp.m4 \ $(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \ $(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \ + $(top_srcdir)/sntp/m4/openldap-thread-check.m4 \ + $(top_srcdir)/sntp/m4/openldap.m4 \ $(top_srcdir)/sntp/m4/os_cflags.m4 \ $(top_srcdir)/sntp/m4/snprintf.m4 \ $(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac @@ -112,6 +114,7 @@ CHUTEST = @CHUTEST@ CONFIG_SHELL = @CONFIG_SHELL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_LIBEVENT = @CPPFLAGS_LIBEVENT@ CPPFLAGS_NTP = @CPPFLAGS_NTP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -146,7 +149,9 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ +LDADD_LIBEVENT = @LDADD_LIBEVENT@ LDADD_LIBNTP = @LDADD_LIBNTP@ +LDADD_LIBUTIL = @LDADD_LIBUTIL@ LDADD_NLIST = @LDADD_NLIST@ LDADD_NTP = @LDADD_NTP@ LDFLAGS = @LDFLAGS@ @@ -285,6 +290,11 @@ TIMETRIM_DL = @TIMETRIM_DL@ TIMETRIM_DS = @TIMETRIM_DS@ TIMETRIM_MS = @TIMETRIM_MS@ TIMETRIM_NI = @TIMETRIM_NI@ +UPDATE_LEAP_DB = @UPDATE_LEAP_DB@ +UPDATE_LEAP_DL = @UPDATE_LEAP_DL@ +UPDATE_LEAP_DS = @UPDATE_LEAP_DS@ +UPDATE_LEAP_MS = @UPDATE_LEAP_MS@ +UPDATE_LEAP_NI = @UPDATE_LEAP_NI@ VERSION = @VERSION@ VER_SUFFIX = @VER_SUFFIX@ YACC = @YACC@ diff --git a/include/mbg_gps166.h b/include/mbg_gps166.h index 974deba..b9b3d77 100644 --- a/include/mbg_gps166.h +++ b/include/mbg_gps166.h @@ -39,206 +39,459 @@ #define MBG_GPS166_H -/***************************************************************************/ -/* */ -/* File: GPSSERIO.H 4.1 */ -/* */ -/* Project: Common C Library */ -/* */ -/* Compiler: Borland C++ */ -/* */ -/* Author: M. Burnicki, Meinberg Funkuhren */ -/* */ -/* */ -/* Description: */ -/* This file defines structures and codes to be used to access GPS166 */ -/* via its serial interface COM0. COM0 should be set to a high baud */ -/* rate, default is 19200. */ -/* */ -/* Standard GPS166 serial operation is to send a time string that is */ -/* compatible with Meinberg UA31 or PZF535 DCF77 radio remote clocks. */ -/* That string can be transmitted automatically once per second, once */ -/* per minute or on request per ASCII '?'. */ -/* */ -/* Parameter setup or parameter readout works using blocks of binary */ -/* data which have to be isolated from the standard string. A block of */ -/* data starts with a SOH code (ASCII Start Of Header, 0x01) followed */ -/* by a message header with constant length and a data portion with */ -/* variable length. The first field (cmd) of the message header holds */ -/* the command code rsp. the type of data to be transmitted. The next */ -/* field (len) gives the number of data bytes that are transmitted */ -/* after the header. This number ranges from 0 to sizeof( MSG_DATA ). */ -/* The third field (data_csum) holds a checksum of all data bytes and */ -/* the last field of the header finally holds the checksum of the. */ -/* header. */ -/* */ -/***************************************************************************/ - -/* the control codes defined below are to be or'ed with a command/type code */ - -#define GPS_REQACK 0x8000 /* to GPS166: request acknowledge */ -#define GPS_ACK 0x4000 /* from GPS166: acknowledge a command */ -#define GPS_NACK 0x2000 /* from GPS166: error receiving command */ - -#define GPS_CTRL_MSK 0xF000 /* masks control code from command */ - - -/* The codes below specify commands/types of data to be supplied to GPS166: */ - -/* GPS166 auto-message to host */ -/* þ host request, GPS166 response */ -/* þ þ host download to GPS166 */ -/* þ þ þ */ -enum { /* þ þ þ */ - /* system data */ - GPS_AUTO_ON = 0x000, /* þ þ þ X þ enable auto-messages from GPS166 */ - GPS_AUTO_OFF, /* þ þ þ X þ disable auto-messages from GPS166 */ - GPS_SW_REV, /* þ þ X þ þ request software revision */ - GPS_STAT, /* þ þ X þ þ request status of buffered variables */ - GPS_TIME, /* þ X þ þ X þ current time or capture or init board time */ - GPS_POS_XYZ, /* þ þ X þ X þ current position in ECEF coords */ - GPS_POS_LLA, /* þ þ X þ X þ current position in geographic coords */ - GPS_TZDL, /* þ þ X þ X þ time zone / daylight saving */ - GPS_PORT_PARM, /* þ þ X þ X þ parameters of the serial ports */ - GPS_SYNTH, /* þ þ X þ X þ synthesizer's frequency and phase */ - GPS_ANT_INFO, /* þ X þ X þ þ time diff after antenna disconnect */ - GPS_UCAP, /* þ X þ X þ þ user capture */ +/*************************************************************************** + * + * Definitions taken from Meinberg's gpsserio.h and gpsdefs.h files. + * + * Author: Martin Burnicki, Meinberg Funkuhren + * + * Copyright (c) Meinberg Funkuhren, Bad Pyrmont, Germany + * + * Description: + * Structures and codes to be used to access Meinberg GPS clocks via + * their serial interface COM0. COM0 should be set to a high baud rate, + * default is 19200. + * + * Standard Meinberg GPS serial operation is to send the Meinberg + * standard time string automatically once per second, once per + * minute, or on request per ASCII '?'. + * + * GPS parameter setup or parameter readout uses blocks of binary + * data which have to be isolated from the standard string. A block + * of data starts with a SOH code (ASCII Start Of Header, 0x01) + * followed by a message header with constant length and a block of + * data with variable length. + * + * The first field (cmd) of the message header holds the command + * code resp. the type of data to be transmitted. The next field (len) + * gives the number of data bytes that follow the header. This number + * ranges from 0 to sizeof( MSG_DATA ). The third field (data_csum) + * holds a checksum of all data bytes and the last field of the header + * finally holds the checksum of the header itself. + * + ***************************************************************************/ + +/** + * @brief GPS epoch bias from ordinary time_t epoch + * + * The Unix time_t epoch is usually 1970-01-01 00:00 whereas + * the GPS epoch is 1980-01-06 00:00, so the difference is 10 years, + * plus 2 days due to leap years (1972 and 1976), plus the difference + * of the day-of-month (6 - 1), so:
    + * + * time_t t = ( gps_week * ::SECS_PER_WEEK ) + sec_of_week + ::GPS_SEC_BIAS + */ +#define GPS_SEC_BIAS 315964800UL // ( ( ( 10UL * 365UL ) + 2 + 5 ) * SECS_PER_DAY ) + + +#ifndef _COM_HS_DEFINED + /** + * @brief Enumeration of handshake modes + */ + enum COM_HANSHAKE_MODES { HS_NONE, HS_XONXOFF, HS_RTSCTS, N_COM_HS }; + #define _COM_HS_DEFINED +#endif + +#ifndef _COM_PARM_DEFINED + /** + * @brief A data type to configure a serial port's baud rate + * + * @see ::MBG_BAUD_RATES + */ + typedef int32_t BAUD_RATE; + + /** + * @brief Indices used to identify a parameter in the framing string + * + * @see ::MBG_FRAMING_STRS + */ + enum MBG_FRAMING_STR_IDXS { F_DBITS, F_PRTY, F_STBITS }; + + /** + * @brief A structure to store the configuration of a serial port + */ + typedef struct + { + BAUD_RATE baud_rate; ///< transmission speed, e.g. 19200L, see ::MBG_BAUD_RATES + char framing[4]; ///< ASCIIZ framing string, e.g. "8N1" or "7E2", see ::MBG_FRAMING_STRS + int16_t handshake; ///< handshake mode, yet only ::HS_NONE supported + + } COM_PARM; + + #define _COM_PARM_DEFINED +#endif + + +/** + * @brief Enumeration of modes supported for time string transmission + * + * This determines e.g. at which point in time a string starts + * to be transmitted via the serial port. + * Used with ::PORT_SETTINGS::mode. + * + * @see ::STR_MODE_MASKS + */ +enum STR_MODES +{ + STR_ON_REQ, ///< transmission on request by received '?' character only + STR_PER_SEC, ///< transmission automatically if second changes + STR_PER_MIN, ///< transmission automatically if minute changes + STR_AUTO, ///< transmission automatically if required, e.g. on capture event + STR_ON_REQ_SEC, ///< transmission if second changes and a request has been received before + N_STR_MODE ///< the number of known modes +}; + + +/** + * The number of serial ports which are at least available + * even with very old GPS receiver models. For devices providing + * a ::RECEIVER_INFO structure the number of provided COM ports + * is available in ::RECEIVER_INFO::n_com_ports. + */ +#define DEFAULT_N_COM 2 + + +/** + * @brief A The structure used to store the configuration of two serial ports + * + * @deprecated This structure is deprecated, ::PORT_SETTINGS and related structures + * should be used instead, if supported by the device. + */ +typedef struct +{ + COM_PARM com[DEFAULT_N_COM]; ///< COM0 and COM1 settings + uint8_t mode[DEFAULT_N_COM]; ///< COM0 and COM1 output mode + +} PORT_PARM; + + +/** + * @brief The type of a GPS command code + * + * @see ::GPS_CMD_CODES + */ +typedef uint16_t GPS_CMD; + + +/** + * @brief Control codes to be or'ed with a particular command/type code + */ +enum GPS_CMD_CTRL_CODES +{ + GPS_REQACK = 0x8000, ///< to device: request acknowledge + GPS_ACK = 0x4000, ///< from device: acknowledge a command + GPS_NACK = 0x2000, ///< from device: error evaluating a command +}; + +#define GPS_CTRL_MSK 0xF000 ///< bit mask of all ::GPS_CMD_CTRL_CODES + + +/** + * @brief Command codes for the binary protocol + * + * These codes specify commands and associated data types used by Meinberg's + * binary protocol to exchange data with a device via serial port, direct USB, + * or socket I/O. + * + * Some commands and associated data structures can be read (r) from a device, others + * can be written (w) to the device, and some can also be sent automatically (a) by + * a device after a ::GPS_AUTO_ON command has been sent to the device. + * The individual command codes are marked with (rwa) accordingly, where '-' is used + * to indicate that a particular mode is not supported. + * + * @note Not all command code are supported by all devices. + * See the hints for a particular command. + * + * @note If ::GPS_ALM, ::GPS_EPH or a code named ..._IDX is sent to retrieve + * some data from a device then an uint16_t parameter must be also supplied + * in order to specify the index number of the data set to be returned. + * The valid index range depends on the command code. + * For ::GPS_ALM and ::GPS_EPH the index is the SV number which may be 0 or + * ::MIN_SVNO_GPS to ::MAX_SVNO_GPS. If the number is 0 then all ::N_SVNO_GPS + * almanacs or ephemeris data structures are returned. + * + * @see ::GPS_CMD_CODES_TABLE + */ +enum GPS_CMD_CODES +{ /* system data */ + GPS_AUTO_ON = 0x000, ///< (-w-) no data, enable auto-msgs from device + GPS_AUTO_OFF, ///< (-w-) no data, disable auto-msgs from device + GPS_SW_REV, ///< (r--) deprecated, ::SW_REV, software revision, use only if ::GPS_RECEIVER_INFO not supp. + GPS_BVAR_STAT, ///< (r--) ::BVAR_STAT, status of buffered variables, only if ::GPS_MODEL_HAS_BVAR_STAT + GPS_TIME, ///< (-wa) ::TTM, current time or capture, or init board time + GPS_POS_XYZ, ///< (rw-) ::XYZ, current position in ECEF coordinates, only if ::GPS_MODEL_HAS_POS_XYZ + GPS_POS_LLA, ///< (rw-) ::LLA, current position in geographic coordinates, only if ::GPS_MODEL_HAS_POS_LLA + GPS_TZDL, ///< (rw-) ::TZDL, time zone / daylight saving, only if ::GPS_MODEL_HAS_TZDL + GPS_PORT_PARM, ///< (rw-) deprecated, ::PORT_PARM, use ::PORT_SETTINGS etc. if ::GPS_RECEIVER_INFO supported + GPS_SYNTH, ///< (rw-) ::SYNTH, synthesizer settings, only if ::GPS_HAS_SYNTH + GPS_ANT_INFO, ///< (r-a) ::ANT_INFO, time diff after antenna disconnect, only if ::GPS_MODEL_HAS_ANT_INFO + GPS_UCAP, ///< (r-a) ::TTM, user capture events, only if ::RECEIVER_INFO::n_ucaps > 0 /* GPS data */ - GPS_CFGH = 0x100, /* þ þ X þ X þ SVs' configuration and health codes */ - GPS_ALM, /* þ þ X þ X þ one SV's almanac */ - GPS_EPH, /* þ þ X þ X þ one SV's ephemeris */ - GPS_UTC, /* þ þ X þ X þ UTC correction parameters */ - GPS_IONO, /* þ þ X þ X þ ionospheric correction parameters */ - GPS_ASCII_MSG /* þ þ X þ þ the GPS ASCII message */ + GPS_CFGH = 0x100, ///< (rw-) ::CFGH, SVs' configuration and health codes + GPS_ALM, ///< (rw-) req: uint16_t SV num, ::SV_ALM, one SV's almanac + GPS_EPH, ///< (rw-) req: uint16_t SV num, ::SV_EPH, one SV's ephemeris + GPS_UTC, ///< (rw-) ::UTC, GPS %UTC correction parameters + GPS_IONO, ///< (rw-) ::IONO, GPS ionospheric correction parameters + GPS_ASCII_MSG ///< (r--) ::ASCII_MSG, the GPS ASCII message }; -/* - * modelled after GPSDEFS.H Revision 1.5 - */ -/***************************************************************************/ -/* */ -/* File: GPSDEFS.H 4.1 */ -/* */ -/* Project: Common C Library */ -/* */ -/* Compiler: Borland C++ */ -/* */ -/* Author: M. Burnicki, Meinberg Funkuhren */ -/* */ -/* */ -/* Description: */ -/* General definitions to be used with GPS166 */ -/* GPS166 Rev. 1.23 or above */ -/* */ -/* Modifications: see file GPSLIB.TXT */ -/* */ -/***************************************************************************/ -#define _GPSDEFS_H -/* the type of various checksums */ #ifndef _CSUM_DEFINED - typedef unsigned short CSUM; -# define _CSUM_DEFINED + typedef uint16_t CSUM; /* checksum used by some structures stored in non-volatile memory */ + #define _CSUM_DEFINED #endif -/* the message header */ -typedef struct { - unsigned short gps_cmd; - unsigned short gps_len; - unsigned short gps_data_csum; - unsigned short gps_hdr_csum; +/** + * @brief The header of a binary message. + */ +typedef struct +{ + GPS_CMD cmd; ///< see ::GPS_CMD_CODES + uint16_t len; ///< length of the data portion appended after the header + CSUM data_csum; ///< checksum of the data portion appended after the header + CSUM hdr_csum; ///< checksum of the preceding header bytes + } GPS_MSG_HDR; -/* a struct used to hold the software revision information */ -typedef struct { - unsigned short code; /* e.g. 0x0120 means rev. 1.20 */ - unsigned char name[17]; /* used to identify customized versions */ +#define GPS_ID_STR_LEN 16 +#define GPS_ID_STR_SIZE ( GPS_ID_STR_LEN + 1 ) + +/** + * @brief Software revision information + * + * Contains a software revision code, plus an optional + * identifier for a customized version. + */ +typedef struct +{ + uint16_t code; ///< Version number, e.g. 0x0120 means v1.20 + char name[GPS_ID_STR_SIZE]; ///< Optional string identifying a customized version + uint8_t reserved; ///< Reserved field to yield even structure size + } SW_REV; -/* GPS ASCII message */ -typedef struct { - CSUM csum; /* checksum of the remaining bytes */ - short valid; /* flag data are valid */ - char s[23]; /* 22 chars GPS ASCII message plus trailing zero */ -} ASCII_MSG; +/** + * @brief GNSS satellite numbers + * + * @todo: Check if MAX_SVNO_GLN is 94 instead of 95, and thus + * N_SVNO_GLN is 30 instead of 31, as reported by Wikipedia. + */ +enum GNSS_SVNOS +{ + MIN_SVNO_GPS = 1, ///< min. GPS satellite PRN number + MAX_SVNO_GPS = 32, ///< max. GPS satellite PRN number + N_SVNO_GPS = 32, ///< max. number of active GPS satellites + + MIN_SVNO_WAAS = 33, ///< min. WAAS satellite number + MAX_SVNO_WAAS = 64, ///< max. WAAS satellite number + N_SVNO_WAAS = 32, ///< max. number of active WAAS satellites + + MIN_SVNO_GLONASS = 65, ///< min. Glonass satellite number (64 + sat slot ID) + MAX_SVNO_GLONASS = 95, ///< max. Glonass satellite number (64 + sat slot ID) + N_SVNO_GLONASS = 31 ///< max. number of active Glonass satellites +}; + + +typedef uint16_t SVNO; ///< the number of an SV (Space Vehicle, i.e. satellite) +typedef uint16_t HEALTH; ///< an SV's 6 bit health code +typedef uint16_t CFG; ///< an SV's 4 bit configuration code +typedef uint16_t IOD; ///< Issue-Of-Data code + + +/** + * @brief Status flags of battery buffered data + * + * Related to data received from the satellites, or data derived thereof. + * + * All '0' means OK, single bits set to '1' indicate + * the associated type of GPS data is not available. + * + * @see ::BVAR_FLAGS + */ +typedef uint16_t BVAR_STAT; + +#define _mbg_swab_bvar_stat( _p ) _mbg_swab16( (_p) ) -#define MIN_SVNO 1 /* min. SV number */ -#define MAX_SVNO 32 /* max. SV number */ -#define N_SVNO ( MAX_SVNO - MIN_SVNO + 1) /* number of possibly active SVs */ +/** + * @brief Enumeration of flag bits used to define ::BVAR_FLAGS + * + * For each bit which is set this means the associated data set in + * non-volatile memory is not available, or incomplete. + * Most data sets will just be re-collected from the data streams sent + * by the satellites. However, the receiver position has usually been + * computed earlier during normal operation, and will be re-computed + * when a sufficient number of satellites can be received. + * + * @see ::BVAR_STAT + * @see ::BVAR_FLAGS + * @see ::BVAR_FLAG_NAMES + */ +enum BVAR_FLAG_BITS +{ + BVAR_BIT_CFGH_INVALID, ///< Satellite configuration and health parameters incomplete + BVAR_BIT_ALM_NOT_COMPLETE, ///< Almanac parameters incomplete + BVAR_BIT_UTC_INVALID, ///< %UTC offset parameters incomplete + BVAR_BIT_IONO_INVALID, ///< Ionospheric correction parameters incomplete + BVAR_BIT_RCVR_POS_INVALID, ///< No valid receiver position available + N_BVAR_BIT ///< number of defined ::BVAR_STAT bits +}; + + +/** + * @brief Bit masks associated with ::BVAR_FLAG_BITS + * + * Used with ::BVAR_STAT. + * + * @see ::BVAR_STAT + * @see ::BVAR_FLAG_BITS + * @see ::BVAR_FLAG_NAMES + */ +enum BVAR_FLAGS +{ + BVAR_CFGH_INVALID = ( 1UL << BVAR_BIT_CFGH_INVALID ), ///< see ::BVAR_BIT_CFGH_INVALID + BVAR_ALM_NOT_COMPLETE = ( 1UL << BVAR_BIT_ALM_NOT_COMPLETE ), ///< see ::BVAR_BIT_ALM_NOT_COMPLETE + BVAR_UTC_INVALID = ( 1UL << BVAR_BIT_UTC_INVALID ), ///< see ::BVAR_BIT_UTC_INVALID + BVAR_IONO_INVALID = ( 1UL << BVAR_BIT_IONO_INVALID ), ///< see ::BVAR_BIT_IONO_INVALID + BVAR_RCVR_POS_INVALID = ( 1UL << BVAR_BIT_RCVR_POS_INVALID ), ///< see ::BVAR_BIT_RCVR_POS_INVALID +}; -typedef short SVNO; /* the number of a SV */ -typedef unsigned short HEALTH; /* a SV's health code */ -typedef unsigned short CFG; /* a SV's configuration code */ -typedef unsigned short IOD; /* Issue-Of-Data code */ -/* Date and time referred to the linear time scale defined by GPS. */ -/* GPS time is defined by the number of weeks since midnight from */ -/* January 5, 1980 to January 6, 1980 plus the number of seconds of */ -/* the current week plus fractions of a second. GPS time differs from */ -/* UTC because UTC is corrected with leap seconds while GPS time scale */ -/* is continuous. */ +/** + * @brief A structure used to hold time in GPS format + * + * Date and time refer to the linear time scale defined by GPS, with + * the epoch starting at %UTC midnight at the beginning of January 6, 1980. + * + * GPS time is counted by the week numbers since the epoch, plus second + * of the week, plus fraction of the second. The week number transmitted + * by the satellites rolls over from 1023 to 0, but Meinberg devices + * just continue to count the weeks beyond the 1024 week limit to keep + * the receiver's internal time. + * + * %UTC time differs from GPS time since a number of leap seconds have + * been inserted in the %UTC time scale after the GPS epoche. The number + * of leap seconds is disseminated by the satellites using the ::UTC + * parameter set, which also provides info on pending leap seconds. + */ +typedef struct +{ + uint16_t wn; ///< the week number since GPS has been installed + uint32_t sec; ///< the second of that week + uint32_t tick; ///< fractions of a second, 1/::RECEIVER_INFO::ticks_per_sec units -typedef struct { - unsigned short wn; /* the week number since GPS has been installed */ - unsigned long sec; /* the second of that week */ - unsigned long tick; /* fractions of a second; scale: 1E-7 */ } T_GPS; -/* Local date and time computed from GPS time. The current number */ -/* of leap seconds have to be added to get UTC from GPS time. */ -/* Additional corrections could have been made according to the */ -/* time zone/daylight saving parameters (TZDL, see below) defined */ -/* by the user. The status field can be checked to see which corrections */ -/* have been applied. */ - -#ifndef GPS166_TM_DEFINED - typedef struct { - short year; /* 0..9999 */ - char month; /* 1..12 */ - char mday; /* 1..31 */ - short yday; /* 1..366 */ - char wday; /* 0..6 == Sun..Sat */ - char hour; /* 0..23 */ - char minute; /* 0..59 */ - char second; /* 0..59 */ - long frac; /* fractions of a second, scale 1E-7 */ - long offs_from_utc; /* local time's offset from UTC */ - unsigned short status; /* flags */ - } TM; - - /* status flags used with conversion from GPS time to local time */ - -# define TM_UTC 0x01 /* UTC correction has been made */ -# define TM_LOCAL 0x02 /* UTC has been converted to local time */ -# define TM_DL_ANN 0x04 /* state of daylight saving is going to change */ -# define TM_DL_ENB 0x08 /* daylight saving is enabled */ -# define TM_LS_ANN 0x10 /* leap second will be inserted */ -# define TM_LS_ENB 0x20 /* current second is leap second */ - -# define GPS166_TM_DEFINED -#endif +/** + * @brief Local date and time computed from GPS time + * + * The current number of leap seconds have to be added to get %UTC + * from GPS time. Additional corrections could have been made according + * to the time zone/daylight saving parameters ::TZDL defined by the user. + * The status field can be checked to see which corrections + * have actually been applied. + * + * @note Conversion from GPS time to %UTC and/or local time can only be + * done if some valid ::UTC correction parameters are available in the + * receiver's non-volatile memory. + */ +typedef struct +{ + int16_t year; ///< year number, 0..9999 + int8_t month; ///< month, 1..12 + int8_t mday; ///< day of month, 1..31 + int16_t yday; ///< day of year, 1..365, or 366 in case of leap year + int8_t wday; ///< day of week, 0..6 == Sun..Sat + int8_t hour; ///< hours, 0..23 + int8_t min; ///< minutes, 0..59 + int8_t sec; ///< seconds, 0..59, or 60 in case of inserted leap second + int32_t frac; ///< fractions of a second, 1/::RECEIVER_INFO::ticks_per_sec units + int32_t offs_from_utc; ///< local time offset from %UTC [sec] + uint16_t status; ///< status flags, see ::TM_GPS_STATUS_BIT_MASKS + +} TM_GPS; + + + +/** + * @brief Status flag bits used to define ::TM_GPS_STATUS_BIT_MASKS + * + * These bits report info on the time conversion from GPS time to %UTC + * and/or local time as well as device status info. + * + * @see ::TM_GPS_STATUS_BIT_MASKS + */ +enum TM_GPS_STATUS_BITS +{ + TM_BIT_UTC, ///< %UTC correction has been made + TM_BIT_LOCAL, ///< %UTC has been converted to local time according to ::TZDL settings + TM_BIT_DL_ANN, ///< state of daylight saving is going to change + TM_BIT_DL_ENB, ///< daylight saving is in effect + TM_BIT_LS_ANN, ///< leap second pending + TM_BIT_LS_ENB, ///< current second is leap second + TM_BIT_LS_ANN_NEG, ///< set in addition to ::TM_BIT_LS_ANN if leap sec is negative + TM_BIT_INVT, ///< invalid time, e.g. if RTC battery bas been empty + + TM_BIT_EXT_SYNC, ///< synchronized externally + TM_BIT_HOLDOVER, ///< in holdover mode after previous synchronization + TM_BIT_ANT_SHORT, ///< antenna cable short circuited + TM_BIT_NO_WARM, ///< OCXO has not warmed up + TM_BIT_ANT_DISCONN, ///< antenna currently disconnected + TM_BIT_SYN_FLAG, ///< TIME_SYN output is low + TM_BIT_NO_SYNC, ///< time sync actually not verified + TM_BIT_NO_POS ///< position actually not verified, LOCK LED off +}; -/* the status flags below are defined starting with rev. 1.32 */ +/** + * @brief Status flag masks used with ::TM_GPS::status + * + * These bits report info on the time conversion from GPS time to %UTC + * and/or local time as well as device status info. + * + * @see ::TM_GPS_STATUS_BITS + */ +enum TM_GPS_STATUS_BIT_MASKS +{ + TM_UTC = ( 1UL << TM_BIT_UTC ), ///< see ::TM_BIT_UTC + TM_LOCAL = ( 1UL << TM_BIT_LOCAL ), ///< see ::TM_BIT_LOCAL + TM_DL_ANN = ( 1UL << TM_BIT_DL_ANN ), ///< see ::TM_BIT_DL_ANN + TM_DL_ENB = ( 1UL << TM_BIT_DL_ENB ), ///< see ::TM_BIT_DL_ENB + TM_LS_ANN = ( 1UL << TM_BIT_LS_ANN ), ///< see ::TM_BIT_LS_ANN + TM_LS_ENB = ( 1UL << TM_BIT_LS_ENB ), ///< see ::TM_BIT_LS_ENB + TM_LS_ANN_NEG = ( 1UL << TM_BIT_LS_ANN_NEG ), ///< see ::TM_BIT_LS_ANN_NEG + TM_INVT = ( 1UL << TM_BIT_INVT ), ///< see ::TM_BIT_INVT + + TM_EXT_SYNC = ( 1UL << TM_BIT_EXT_SYNC ), ///< see ::TM_BIT_EXT_SYNC + TM_HOLDOVER = ( 1UL << TM_BIT_HOLDOVER ), ///< see ::TM_BIT_HOLDOVER + TM_ANT_SHORT = ( 1UL << TM_BIT_ANT_SHORT ), ///< see ::TM_BIT_ANT_SHORT + TM_NO_WARM = ( 1UL << TM_BIT_NO_WARM ), ///< see ::TM_BIT_NO_WARM + TM_ANT_DISCONN = ( 1UL << TM_BIT_ANT_DISCONN ), ///< see ::TM_BIT_ANT_DISCONN + TM_SYN_FLAG = ( 1UL << TM_BIT_SYN_FLAG ), ///< see ::TM_BIT_SYN_FLAG + TM_NO_SYNC = ( 1UL << TM_BIT_NO_SYNC ), ///< see ::TM_BIT_NO_SYNC + TM_NO_POS = ( 1UL << TM_BIT_NO_POS ) ///< see ::TM_BIT_NO_POS +}; -#define TM_ANT_DISCONN 0x1000 /* antenna currently disconnected */ -#define TM_SYN_FLAG 0x2000 /* TIME_SYN output is low */ -#define TM_NO_SYNC 0x4000 /* not sync'ed after reset */ -#define TM_NO_POS 0x8000 /* position not computed after reset, */ - /* LOCK LED off */ -/* a struct used to transmit information on date and time */ +/** + * @brief A structure used to transmit information on date and time + * + * This structure can be used to transfer the current time, in which + * case the channel field has to be set to -1, or an event capture time + * retrieved from the on-board FIFO, in which case the channel field + * contains the index of the time capture input, e.g. 0 or 1. + */ +typedef struct +{ + int16_t channel; ///< -1: the current on-board time; >= 0 the capture channel number + T_GPS t; ///< time in GPS scale and format + TM_GPS tm; ///< time converted to %UTC and/or local time according to ::TZDL settings -typedef struct { - short channel; /* -1: the current time; 0, 1: capture 0, 1 */ - T_GPS t; /* time in GPS format */ - TM tm; /* that time converted to local time */ } TTM; @@ -249,282 +502,462 @@ typedef struct { /* to geographic coordinates as defined by WGS84 (World Geodetic */ /* System from 1984). */ -#ifndef _XYZ_DEFINED - /* sequence and number of components of a cartesian position */ - enum { XP, YP, ZP, N_XYZ }; +/** + * @brief Sequence and number of components of a cartesian position + */ +enum XYZ_FIELDS { XP, YP, ZP, N_XYZ }; // x, y, z + +/** + * @brief A position in cartesian coordinates + * + * Usually earth centered, earth fixed (ECEF) coordinates, + * in [m]. + * + * @note In the original code this is an array of double. + * + * @see ::XYZ_FIELDS + */ +typedef l_fp XYZ[N_XYZ]; - /* a type of array holding a cartesian position */ - typedef l_fp XYZ[N_XYZ]; /* values are in [m] */ -# define _XYZ_DEFINED -#endif +/** + * @brief Sequence and number of components of a geographic position + */ +enum LLA_FIELDS { LAT, LON, ALT, N_LLA }; /* latitude, longitude, altitude */ +/** + * @brief A geographic position based on latitude, longitude, and altitude + * + * The geographic position associated to specific cartesian coordinates + * depends on the characteristics of the ellipsoid used for the computation, + * the so-called geographic datum. GPS uses the WGS84 (World Geodetic System + * from 1984) ellipsoid by default. + * + * lon, lat in [rad], alt in [m] + * + * @note In the original code this is an array of double. + * + * @see ::LLA_FIELDS + */ +typedef l_fp LLA[N_LLA]; -#ifndef _LLA_DEFINED - /* sequence and number of components of a geographic position */ - enum { LAT, LON, ALT, N_LLA }; /* latitude, longitude, altitude */ - /* a type of array holding a geographic position */ - typedef l_fp LLA[N_LLA]; /* lon, lat in [rad], alt in [m] */ +/** + * @defgroup group_synth Synthesizer parameters + * + * Synthesizer frequency is expressed as a + * four digit decimal number (freq) to be multiplied by 0.1 Hz and an + * base 10 exponent (range). If the effective frequency is less than + * 10 kHz its phase is synchronized corresponding to the variable phase. + * Phase may be in a range from -360 deg to +360 deg with a resolution + * of 0.1 deg, so the resulting numbers to be stored are in a range of + * -3600 to +3600. + * + * Example:
    + * Assume the value of freq is 2345 (decimal) and the value of phase is 900. + * If range == 0 the effective frequency is 234.5 Hz with a phase of +90 deg. + * If range == 1 the synthesizer will generate a 2345 Hz output frequency + * and so on. + * + * Limitations:
    + * If freq == 0 the synthesizer is disabled. If range == 0 the least + * significant digit of freq is limited to 0, 3, 5 or 6. The resulting + * frequency is shown in the examples below: + * - freq == 1230 --> 123.0 Hz + * - freq == 1233 --> 123 1/3 Hz (real 1/3 Hz, NOT 123.3 Hz) + * - freq == 1235 --> 123.5 Hz + * - freq == 1236 --> 123 2/3 Hz (real 2/3 Hz, NOT 123.6 Hz) + * + * If range == ::MAX_SYNTH_RANGE the value of freq must not exceed 1000, so + * the output frequency is limited to 10 MHz (see ::MAX_SYNTH_FREQ_VAL). + * + * @{ */ -# define _LLA_DEFINED -#endif +#define N_SYNTH_FREQ_DIGIT 4 ///< number of digits to edit +#define MAX_SYNTH_FREQ 1000 ///< if range == ::MAX_SYNTH_RANGE -/* Synthesizer parameters. Synthesizer frequency is expressed as a */ -/* four digit decimal number (freq) to be multiplied by 0.1 Hz and an */ -/* base 10 exponent (range). If the effective frequency is less than */ -/* 10 kHz its phase is synchronized corresponding to the variable phase. */ -/* Phase may be in a range from -360° to +360° with a resolution of 0.1°, */ -/* so the resulting numbers to be stored are in a range of -3600 to +3600. */ - -/* Example: */ -/* Assume the value of freq is 2345 (decimal) and the value of phase is 900. */ -/* If range == 0 the effective frequency is 234.5 Hz with a phase of +90°. */ -/* If range == 1 the synthesizer will generate a 2345 Hz output frequency */ -/* and so on. */ - -/* Limitations: */ -/* If freq == 0 the synthesizer is disabled. If range == 0 the least */ -/* significant digit of freq is limited to 0, 3, 5 or 6. The resulting */ -/* frequency is shown in the examples below: */ -/* freq == 1230 --> 123.0 Hz */ -/* freq == 1233 --> 123 1/3 Hz (real 1/3 Hz, NOT 123.3 Hz) */ -/* freq == 1235 --> 123.5 Hz */ -/* freq == 1236 --> 123 2/3 Hz (real 2/3 Hz, NOT 123.6 Hz) */ - -/* If range == MAX_RANGE the value of freq must not exceed 1200, so the */ -/* output frequency is limited to 12 MHz. */ - -/* Phase will be ignored if the resulting frequency is greater or equal */ -/* to 10 kHz. */ - -#define MAX_SYNTH_FREQ 1200 /* if range == MAX_SYNTH_RANGE */ #define MIN_SYNTH_RANGE 0 #define MAX_SYNTH_RANGE 5 -#define MAX_SYNTH_PHASE 3600 +#define N_SYNTH_RANGE ( MAX_SYNTH_RANGE - MIN_SYNTH_RANGE + 1 ) -typedef struct { - short freq; /* four digits used; scale: 0.1; e.g. 1234 -> 123.4 Hz */ - short range; /* scale factor for freq; 0..MAX_SYNTH_RANGE */ - short phase; /* -MAX_SYNTH_PHASE..+MAX_SYNTH_PHASE; >0 -> pulses later */ -} SYNTH; +#define N_SYNTH_PHASE_DIGIT 4 +#define MAX_SYNTH_PHASE 3600 +#define MAX_SYNTH_FREQ_EDIT 9999 ///< max sequence of digits when editing -/* Time zone/daylight saving parameters. */ -/* the name of a time zone, 5 characters plus trailing zero */ -typedef char TZ_NAME[6]; +/** + * @brief The maximum frequency that can be configured for the synthesizer + */ +#define MAX_SYNTH_FREQ_VAL 10000000UL ///< 10 MHz +/* == MAX_SYNTH_FREQ * 10^(MAX_SYNTH_RANGE-1) */ -typedef struct { - long offs; /* offset from UTC to local time [sec] */ - long offs_dl; /* additional offset if daylight saving enabled [sec] */ - TM tm_on; /* date/time when daylight saving starts */ - TM tm_off; /* date/time when daylight saving ends */ - TZ_NAME name[2]; /* names without and with daylight saving enabled */ -} TZDL; +/** + * @brief The synthesizer's phase is only be synchronized if the frequency is below this limit + */ +#define SYNTH_PHASE_SYNC_LIMIT 10000UL ///< 10 kHz -/* The constant below is defined beginning with software rev. 1.29. */ -/* If the year in tzdl.tmon and tzdl.tm_off is or'ed with that constant, */ -/* the receiver automatically generates daylight saving year by year. */ -/* See GPSLIB.TXT for more information. */ +/** + * A Macro used to determine the position of the decimal point + * when printing the synthesizer frequency as 4 digit value + */ +#define _synth_dp_pos_from_range( _r ) \ + ( ( ( N_SYNTH_RANGE - (_r) ) % ( N_SYNTH_FREQ_DIGIT - 1 ) ) + 1 ) + +/** + * @brief Synthesizer frequency units + * + * An initializer for commonly displayed synthesizer frequency units + * (::N_SYNTH_RANGE strings) + */ +#define DEFAULT_FREQ_RANGES \ +{ \ + "Hz", \ + "kHz", \ + "kHz", \ + "kHz", \ + "MHz", \ + "MHz", \ +} -#define DL_AUTO_FLAG 0x8000 -/* Example: */ -/* for automatic daylight saving enable/disable in Central Europe, */ -/* the variables are to be set as shown below: */ -/* offs = 3600L one hour from UTC */ -/* offs_dl = 3600L one additional hour if daylight saving enabled */ -/* tm_on = first Sunday from March 25, 02:00:00h ( year |= DL_AUTO_FLAG ) */ -/* tm_off = first Sunday from Sept 24, 03:00:00h ( year |= DL_AUTO_FLAG ) */ -/* name[0] == "MEZ " name if daylight saving not enabled */ -/* name[1] == "MESZ " name if daylight saving is enabled */ +/** + * @brief Synthesizer configuration parameters + */ +typedef struct +{ + int16_t freq; ///< four digits used; scale: 0.1 Hz; e.g. 1234 -> 123.4 Hz + int16_t range; ///< scale factor for freq; 0..::MAX_SYNTH_RANGE + int16_t phase; ///< -::MAX_SYNTH_PHASE..+::MAX_SYNTH_PHASE; >0 -> pulses later +} SYNTH; +#define _mbg_swab_synth( _p ) \ +{ \ + _mbg_swab16( &(_p)->freq ); \ + _mbg_swab16( &(_p)->range ); \ + _mbg_swab16( &(_p)->phase ); \ +} -/* the structure below was defined in rev. 1.31. It reflects the status */ -/* of the antenna, the times of last disconnect/reconnect and the boards */ -/* clock offset after the phase of disconnection. */ -typedef struct { - short status; /* current status of antenna */ - TM tm_disconn; /* time of antenna disconnect */ - TM tm_reconn; /* time of antenna reconnect */ - long delta_t; /* clock offset at reconnect time, units: TICKS_PER_SEC */ -} ANT_INFO; +/** + * @brief Enumeration of synthesizer states + */ +enum SYNTH_STATES +{ + SYNTH_DISABLED, ///< disbled by cfg, i.e. freq == 0.0 + SYNTH_OFF, ///< not enabled after power-up + SYNTH_FREE, ///< enabled, but not synchronized + SYNTH_DRIFTING, ///< has initially been sync'd, but now running free + SYNTH_SYNC, ///< fully synchronized + N_SYNTH_STATE ///< the number of known states +}; + +/** + * @brief A structure used to report the synthesizer state + */ +typedef struct +{ + uint8_t state; ///< state code as enumerated in ::SYNTH_STATES + uint8_t flags; ///< reserved, currently always 0 -/* the status field may be set to one of the values below: */ +} SYNTH_STATE; -enum { - ANT_INVALID, /* struct not set yet because ant. has not been disconn. */ - ANT_DISCONN, /* ant. now disconn., tm_reconn and delta_t not set */ - ANT_RECONN /* ant. has been disconn. and reconn., all fields valid */ -}; +#define _mbg_swab_synth_state( _p ) _nop_macro_fnc() +#define SYNTH_FLAG_PHASE_IGNORED 0x01 -/* Summary of configuration and health data of all SVs. */ +/** @} defgroup group_synth */ -typedef struct { - CSUM csum; /* checksum of the remaining bytes */ - short valid; /* flag data are valid */ - T_GPS tot_51; /* time of transmission, page 51 */ - T_GPS tot_63; /* time of transmission, page 63 */ - T_GPS t0a; /* complete reference time almanac */ - CFG cfg[N_SVNO]; /* SV configuration from page 63 */ - HEALTH health[N_SVNO]; /* SV health from pages 51, 63 */ -} CFGH; +/** + * @defgroup group_tzdl Time zone / daylight saving parameters + * + * Example:
    + * For automatic daylight saving enable/disable in Central Europe, + * the variables are to be set as shown below:
    + * - offs = 3600L one hour from %UTC + * - offs_dl = 3600L one additional hour if daylight saving enabled + * - tm_on = first Sunday from March 25, 02:00:00h ( year |= ::DL_AUTO_FLAG ) + * - tm_off = first Sunday from October 25, 03:00:00h ( year |= ::DL_AUTO_FLAG ) + * - name[0] == "CET " name if daylight saving not enabled + * - name[1] == "CEST " name if daylight saving is enabled + * + * @{ */ + +/** + * @brief The name of a time zone + * + * @note Up to 5 printable characters, plus trailing zero + */ +typedef char TZ_NAME[6]; +/** + * @brief Time zone / daylight saving parameters + * + * This structure is used to specify how a device converts on-board %UTC + * to local time, including computation of beginning and end of daylight + * saving time (DST), if required. + * + * @note The ::TZDL structure contains members of type ::TM_GPS to specify + * the times for beginning and end of DST. However, the ::TM_GPS::frac, + * ::TM_GPS::offs_from_utc, and ::TM_GPS::status fields of these ::TZDL::tm_on + * and ::TZDL::tm_off members are ignored for the conversion to local time, + * and thus should be 0. + */ +typedef struct +{ + int32_t offs; ///< standard offset from %UTC to local time [sec] + int32_t offs_dl; ///< additional offset if daylight saving enabled [sec] + TM_GPS tm_on; ///< date/time when daylight saving starts + TM_GPS tm_off; ///< date/time when daylight saving ends + TZ_NAME name[2]; ///< names without and with daylight saving enabled +} TZDL; + +/** + * @brief A flag indicating automatic computation of DST + * + * If this flag is or'ed to the year numbers in ::TZDL::tm_on and ::TZDL::tm_off + * then daylight saving is computed automatically year by year. + */ +#define DL_AUTO_FLAG 0x8000 -/* UTC correction parameters */ +/** @} defgroup group_tzdl */ -typedef struct { - CSUM csum; /* checksum of the remaining bytes */ - short valid; /* flag data are valid */ - T_GPS t0t; /* Reference Time UTC Parameters [sec] */ - l_fp A0; /* ± Clock Correction Coefficient 0 [sec] */ - l_fp A1; /* ± Clock Correction Coefficient 1 [sec/sec] */ - u_short WNlsf; /* week number of nearest leap second */ - short DNt; /* the day number at the end of which LS is inserted */ - char delta_tls; /* */ - char delta_tlsf; /* */ +/** + * @brief Antenna status and error at reconnect information + * + * The structure below reflects the status of the antenna, + * the times of last disconnect/reconnect, and the board's + * clock offset when it has synchronized again after the + * disconnection interval. + * + * @note ::ANT_INFO::status changes back to ::ANT_RECONN only + * after the antenna has been reconnected and the + * receiver has re-synchronized to the satellite signal. + * In this case ::ANT_INFO::delta_t reports the time offset + * before resynchronization, i.e. how much the internal + * time has drifted while the antenna was disconnected. + */ +typedef struct +{ + int16_t status; ///< current status of antenna, see ::ANT_STATUS_CODES + TM_GPS tm_disconn; ///< time of antenna disconnect + TM_GPS tm_reconn; ///< time of antenna reconnect + int32_t delta_t; ///< clock offs at reconn. time in 1/::RECEIVER_INFO::ticks_per_sec units -} UTC; +} ANT_INFO; -/* a struct used to hold the settings of a serial port */ -#ifndef _COM_PARM_DEFINED - typedef long BAUD_RATE; +/** + * @brief Status code used with ::ANT_INFO::status + */ +enum ANT_STATUS_CODES +{ + ANT_INVALID, ///< No other fields valid since antenna has not yet been disconnected + ANT_DISCONN, ///< Antenna is disconnected, tm_reconn and delta_t not yet set + ANT_RECONN, ///< Antenna has been disconnect, and receiver sync. after reconnect, so all fields valid + N_ANT_STATUS_CODES ///< the number of known status codes +}; - /* indices used to identify a parameter in the framing string */ - enum { F_DBITS, F_PRTY, F_STBITS }; - /* types of handshake */ - enum { HS_NONE, HS_XONXOFF, HS_RTSCTS }; - typedef struct { - BAUD_RATE baud_rate; /* e.g. 19200L */ - char framing[4]; /* e.g. "8N1" */ - short handshake; /* a numeric value, only HS_NONE supported yet */ - } COM_PARM; +/** + * @brief Summary of configuration and health data of all satellites + */ +typedef struct +{ + CSUM csum; ///< checksum of the remaining bytes + int16_t valid; ///< flag data are valid + + T_GPS tot_51; ///< time of transmission, page 51 + T_GPS tot_63; ///< time of transmission, page 63 + T_GPS t0a; ///< complete reference time almanac + + CFG cfg[N_SVNO_GPS]; ///< 4 bit SV configuration code from page 63 + HEALTH health[N_SVNO_GPS]; ///< 6 bit SV health codes from pages 51, 63 + +} CFGH; + -#define _COM_PARM_DEFINED -#endif +/** + * @brief GPS %UTC correction parameters + * + * %UTC correction parameters basically as sent by the GPS satellites. + * + * The csum field is only used by the card's firmware to check the + * consistency of the structure in non-volatile memory. + * + * The field labeled valid indicates if the parameter set is valid, i.e. + * if it contains data received from the satellites. + * + * t0t, A0 and A1 contain fractional correction parameters for the current + * GPS-%UTC time offset in addition to the whole seconds. This is evaluated + * by the receivers' firmware to convert GPS time to %UTC time. + * + * The delta_tls field contains the current full seconds offset between + * GPS time and %UTC, which corresponds to the number of leap seconds inserted + * into the %UTC time scale since GPS was put into operation in January 1980. + * + * delta_tlfs holds the number of "future" leap seconds, i.e. the %UTC offset + * after the next leap second event defined by WNlsf and DNt. + * + * The fields WNlsf and DNt specify the GPS week number and the day number + * in that week for the end of which a leap second has been scheduled. + * + * @note: The satellites transmit WNlsf only as a signed 8 bit value, so it + * can only define a point in time which is +/- 127 weeks off the current time. + * The firmware tries to expand this based on the current week number, but + * the result is ambiguous if the leap second occurs or occurred more + * than 127 weeks in the future or past. + * + * So the leap second date should only be evaluated and displayed + * in a user interface if the fields delta_tls and delta_tlsf have + * different values, in which case there is indeed a leap second announcement + * inside the +/- 127 week range. + * + * @note In the original code the type of A0 and A1 is double. + */ +typedef struct +{ + CSUM csum; ///< Checksum of the remaining bytes + int16_t valid; ///< Flag indicating %UTC parameters are valid + T_GPS t0t; ///< Reference Time %UTC Parameters [wn|sec] + l_fp A0; ///< +- Clock Correction Coefficient 0 [sec] + l_fp A1; ///< +- Clock Correction Coefficient 1 [sec/sec] -/* the codes below define what has to comes out of the serial ports */ + uint16_t WNlsf; ///< Week number of nearest leap second + int16_t DNt; ///< The day number at the end of which a leap second occurs + int8_t delta_tls; ///< Current %UTC offset to GPS system time [sec] + int8_t delta_tlsf; ///< Future %UTC offset to GPS system time after next leap second transition [sec] -enum { STR_ON_REQ, STR_PER_SEC, - STR_PER_MIN, N_STR_MODE_0, /* COM0 and COM1 */ - STR_UCAP = N_STR_MODE_0, - STR_UCAP_REQ, N_STR_MODE_1 /* COM1 only */ - }; +} UTC; -#define N_COM 2 /* the number of serial ports */ +/** + * @brief GPS ASCII message + */ +typedef struct +{ + CSUM csum; ///< checksum of the remaining bytes */ + int16_t valid; ///< flag data are valid + char s[23]; ///< 22 chars GPS ASCII message plus trailing zero -/* the structure used to store the modes of both serial ports */ +} ASCII_MSG; -typedef struct { - COM_PARM com[N_COM]; /* COM0 and COM1 settings */ - u_char mode[N_COM]; /* COM0 and COM1 output mode */ -} PORT_PARM; -/* Ephemeris parameters of one specific SV. Needed to compute the position */ -/* of a satellite at a given time with high precision. Valid for an */ -/* interval of 4 to 6 hours from start of transmission. */ - -typedef struct { - CSUM csum; /* checksum of the remaining bytes */ - short valid; /* flag data are valid */ - - HEALTH health; /* health indication of transmitting SV [---] */ - IOD IODC; /* Issue Of Data, Clock */ - IOD IODE2; /* Issue of Data, Ephemeris (Subframe 2) */ - IOD IODE3; /* Issue of Data, Ephemeris (Subframe 3) */ - T_GPS tt; /* time of transmission */ - T_GPS t0c; /* Reference Time Clock [---] */ - T_GPS t0e; /* Reference Time Ephemeris [---] */ - - l_fp sqrt_A; /* Square Root of semi-major Axis [sqrt(m)] */ - l_fp e; /* Eccentricity [---] */ - l_fp M0; /* ± Mean Anomaly at Ref. Time [rad] */ - l_fp omega; /* ± Argument of Perigee [rad] */ - l_fp OMEGA0; /* ± Longit. of Asc. Node of orbit plane [rad] */ - l_fp OMEGADOT; /* ± Rate of Right Ascension [rad/sec] */ - l_fp deltan; /* ± Mean Motion Diff. from computed value [rad/sec] */ - l_fp i0; /* ± Inclination Angle [rad] */ - l_fp idot; /* ± Rate of Inclination Angle [rad/sec] */ - l_fp crc; /* ± Cosine Corr. Term to Orbit Radius [m] */ - l_fp crs; /* ± Sine Corr. Term to Orbit Radius [m] */ - l_fp cuc; /* ± Cosine Corr. Term to Arg. of Latitude [rad] */ - l_fp cus; /* ± Sine Corr. Term to Arg. of Latitude [rad] */ - l_fp cic; /* ± Cosine Corr. Term to Inclination Angle [rad] */ - l_fp cis; /* ± Sine Corr. Term to Inclination Angle [rad] */ - - l_fp af0; /* ± Clock Correction Coefficient 0 [sec] */ - l_fp af1; /* ± Clock Correction Coefficient 1 [sec/sec] */ - l_fp af2; /* ± Clock Correction Coefficient 2 [sec/sec²] */ - l_fp tgd; /* ± estimated group delay differential [sec] */ - - u_short URA; /* predicted User Range Accuracy */ - - u_char L2code; /* code on L2 channel [---] */ - u_char L2flag; /* L2 P data flag [---] */ +/** + * @brief Ephemeris parameters of one specific satellite + * + * Needed to compute the position of a satellite at a given time with + * high precision. Valid for an interval of 4 to 6 hours from start + * of transmission. + */ +typedef struct +{ + CSUM csum; ///< checksum of the remaining bytes + int16_t valid; ///< flag data are valid + + HEALTH health; ///< health indication of transmitting SV [---] + IOD IODC; ///< Issue Of Data, Clock + IOD IODE2; ///< Issue of Data, Ephemeris (Subframe 2) + IOD IODE3; ///< Issue of Data, Ephemeris (Subframe 3) + T_GPS tt; ///< time of transmission + T_GPS t0c; ///< Reference Time Clock [---] + T_GPS t0e; ///< Reference Time Ephemeris [---] + + l_fp sqrt_A; ///< Square Root of semi-major Axis [sqrt(m)] + l_fp e; ///< Eccentricity [---] + l_fp M0; ///< +- Mean Anomaly at Ref. Time [rad] + l_fp omega; ///< +- Argument of Perigee [rad] + l_fp OMEGA0; ///< +- Longit. of Asc. Node of orbit plane [rad] + l_fp OMEGADOT; ///< +- Rate of Right Ascension [rad/sec] + l_fp deltan; ///< +- Mean Motion Diff. from computed value [rad/sec] + l_fp i0; ///< +- Inclination Angle [rad] + l_fp idot; ///< +- Rate of Inclination Angle [rad/sec] + l_fp crc; ///< +- Cosine Corr. Term to Orbit Radius [m] + l_fp crs; ///< +- Sine Corr. Term to Orbit Radius [m] + l_fp cuc; ///< +- Cosine Corr. Term to Arg. of Latitude [rad] + l_fp cus; ///< +- Sine Corr. Term to Arg. of Latitude [rad] + l_fp cic; ///< +- Cosine Corr. Term to Inclination Angle [rad] + l_fp cis; ///< +- Sine Corr. Term to Inclination Angle [rad] + + l_fp af0; ///< +- Clock Correction Coefficient 0 [sec] + l_fp af1; ///< +- Clock Correction Coefficient 1 [sec/sec] + l_fp af2; ///< +- Clock Correction Coefficient 2 [sec/sec^2] + l_fp tgd; ///< +- estimated group delay differential [sec] + + uint16_t URA; ///< predicted User Range Accuracy + + uint8_t L2code; ///< code on L2 channel [---] + uint8_t L2flag; ///< L2 P data flag [---] } EPH; -/* Almanac parameters of one specific SV. A reduced precision set of */ -/* parameters used to check if a satellite is in view at a given time. */ -/* Valid for an interval of more than 7 days from start of transmission. */ -typedef struct { - CSUM csum; /* checksum of the remaining bytes */ - short valid; /* flag data are valid */ - HEALTH health; /* [---] */ - T_GPS t0a; /* Reference Time Almanac [sec] */ +/** + * @brief Almanac parameters of one specific satellite + * + * A reduced precision set of parameters used to check if a satellite + * is in view at a given time. Valid for an interval of more than 7 days + * from start of transmission. + */ +typedef struct +{ + CSUM csum; ///< checksum of the remaining bytes + int16_t valid; ///< flag data are valid + + HEALTH health; ///< [---] + T_GPS t0a; ///< Reference Time Almanac [sec] + + l_fp sqrt_A; ///< Square Root of semi-major Axis [sqrt(m)] + l_fp e; ///< Eccentricity [---] - l_fp sqrt_A; /* Square Root of semi-major Axis [sqrt(m)] */ - l_fp e; /* Eccentricity [---] */ + l_fp M0; ///< +- Mean Anomaly at Ref. Time [rad] + l_fp omega; ///< +- Argument of Perigee [rad] + l_fp OMEGA0; ///< +- Longit. of Asc. Node of orbit plane [rad] + l_fp OMEGADOT; ///< +- Rate of Right Ascension [rad/sec] + l_fp deltai; ///< +- [rad] + l_fp af0; ///< +- Clock Correction Coefficient 0 [sec] + l_fp af1; ///< +- Clock Correction Coefficient 1 [sec/sec] - l_fp M0; /* ± Mean Anomaly at Ref. Time [rad] */ - l_fp omega; /* ± Argument of Perigee [rad] */ - l_fp OMEGA0; /* ± Longit. of Asc. Node of orbit plane [rad] */ - l_fp OMEGADOT; /* ± Rate of Right Ascension [rad/sec] */ - l_fp deltai; /* ± [rad] */ - l_fp af0; /* ± Clock Correction Coefficient 0 [sec] */ - l_fp af1; /* ± Clock Correction Coefficient 1 [sec/sec] */ } ALM; -/* ionospheric correction parameters */ -typedef struct { - CSUM csum; /* checksum of the remaining bytes */ - short valid; /* flag data are valid */ +/** + * @brief Ionospheric correction parameters + */ +typedef struct +{ + CSUM csum; ///< checksum of the remaining bytes + int16_t valid; ///< flag data are valid - l_fp alpha_0; /* Ionosph. Corr. Coeff. Alpha 0 [sec] */ - l_fp alpha_1; /* Ionosph. Corr. Coeff. Alpha 1 [sec/deg] */ - l_fp alpha_2; /* Ionosph. Corr. Coeff. Alpha 2 [sec/deg^2] */ - l_fp alpha_3; /* Ionosph. Corr. Coeff. Alpha 3 [sec/deg^3] */ + l_fp alpha_0; ///< Ionosph. Corr. Coeff. Alpha 0 [sec] + l_fp alpha_1; ///< Ionosph. Corr. Coeff. Alpha 1 [sec/deg] + l_fp alpha_2; ///< Ionosph. Corr. Coeff. Alpha 2 [sec/deg^2] + l_fp alpha_3; ///< Ionosph. Corr. Coeff. Alpha 3 [sec/deg^3] - l_fp beta_0; /* Ionosph. Corr. Coeff. Beta 0 [sec] */ - l_fp beta_1; /* Ionosph. Corr. Coeff. Beta 1 [sec/deg] */ - l_fp beta_2; /* Ionosph. Corr. Coeff. Beta 2 [sec/deg^2] */ - l_fp beta_3; /* Ionosph. Corr. Coeff. Beta 3 [sec/deg^3] */ + l_fp beta_0; ///< Ionosph. Corr. Coeff. Beta 0 [sec] + l_fp beta_1; ///< Ionosph. Corr. Coeff. Beta 1 [sec/deg] + l_fp beta_2; ///< Ionosph. Corr. Coeff. Beta 2 [sec/deg^2] + l_fp beta_3; ///< Ionosph. Corr. Coeff. Beta 3 [sec/deg^3] } IONO; -void mbg_tm_str (char **, TM *, int); + + +void mbg_tm_str (char **, TM_GPS *, int, int); void mbg_tgps_str (char **, T_GPS *, int); void get_mbg_header (unsigned char **, GPS_MSG_HDR *); void put_mbg_header (unsigned char **, GPS_MSG_HDR *); @@ -534,7 +967,7 @@ void get_mbg_svno (unsigned char **, SVNO *); void get_mbg_health (unsigned char **, HEALTH *); void get_mbg_cfg (unsigned char **, CFG *); void get_mbg_tgps (unsigned char **, T_GPS *); -void get_mbg_tm (unsigned char **, TM *); +void get_mbg_tm (unsigned char **, TM_GPS *); void get_mbg_ttm (unsigned char **, TTM *); void get_mbg_synth (unsigned char **, SYNTH *); void get_mbg_tzdl (unsigned char **, TZDL *); @@ -548,7 +981,7 @@ void get_mbg_eph (unsigned char **, EPH *); void get_mbg_alm (unsigned char **, ALM *); void get_mbg_iono (unsigned char **, IONO *); -unsigned long mbg_csum (unsigned char *, unsigned int); +CSUM mbg_csum (unsigned char *, unsigned int); #endif /* diff --git a/include/ntp.h b/include/ntp.h index 38343f2..4ffc35f 100644 --- a/include/ntp.h +++ b/include/ntp.h @@ -435,7 +435,7 @@ struct peer { #define STRATUM_UNSPEC ((u_char)16) /* unspecified */ /* - * Values for peer.flags + * Values for peer.flags (u_int) */ #define FLAG_CONFIG 0x0001 /* association was configured */ #define FLAG_PREEMPT 0x0002 /* preemptable association */ @@ -453,8 +453,9 @@ struct peer { #define FLAG_XB 0x2000 /* interleaved broadcast */ #define FLAG_XBOGUS 0x4000 /* interleaved bogus packet */ #ifdef OPENSSL -#define FLAG_ASSOC 0x8000 /* autokey request */ +# define FLAG_ASSOC 0x8000 /* autokey request */ #endif /* OPENSSL */ +#define FLAG_TSTAMP_PPS 0x10000 /* PPS source provides absolute timestamp */ /* * Definitions for the clear() routine. We use memset() to clear @@ -713,17 +714,19 @@ struct pkt { */ #define LOOP_DRIFTINIT 1 /* iniitialize frequency */ #define LOOP_KERN_CLEAR 2 /* set initial frequency offset */ -#define LOOP_MAX 3 /* set step offset */ -#define LOOP_PANIC 4 /* set panic offseet */ -#define LOOP_PHI 5 /* set dispersion rate */ -#define LOOP_MINSTEP 6 /* set step timeout */ -#define LOOP_MINPOLL 7 /* set min poll interval (log2 s) */ -#define LOOP_ALLAN 8 /* set minimum Allan intercept */ -#define LOOP_HUFFPUFF 9 /* set huff-n'-puff filter length */ -#define LOOP_FREQ 10 /* set initial frequency */ -#define LOOP_CODEC 11 /* set audio codec frequency */ -#define LOOP_LEAP 12 /* insert leap after second 23:59 */ -#define LOOP_TICK 13 /* sim. low precision clock */ +#define LOOP_MAX 3 /* set both step offsets */ +#define LOOP_MAX_BACK 4 /* set bacward-step offset */ +#define LOOP_MAX_FWD 5 /* set forward-step offset */ +#define LOOP_PANIC 6 /* set panic offseet */ +#define LOOP_PHI 7 /* set dispersion rate */ +#define LOOP_MINSTEP 8 /* set step timeout */ +#define LOOP_MINPOLL 9 /* set min poll interval (log2 s) */ +#define LOOP_ALLAN 10 /* set minimum Allan intercept */ +#define LOOP_HUFFPUFF 11 /* set huff-n'-puff filter length */ +#define LOOP_FREQ 12 /* set initial frequency */ +#define LOOP_CODEC 13 /* set audio codec frequency */ +#define LOOP_LEAP 14 /* insert leap after second 23:59 */ +#define LOOP_TICK 15 /* sim. low precision clock */ /* * Configuration items for the stats printer @@ -875,13 +878,13 @@ struct endpoint { */ #define AM_ERR -1 /* error */ #define AM_NOMATCH 0 /* no match */ -#define AM_PROCPKT 1 /* server/symmetric packet */ -#define AM_BCST 2 /* broadcast packet */ +#define AM_PROCPKT 1 /* server/symmetric packet */ +#define AM_BCST 2 /* broadcast packet */ #define AM_FXMIT 3 /* client packet */ #define AM_MANYCAST 4 /* manycast or pool */ #define AM_NEWPASS 5 /* new passive */ #define AM_NEWBCL 6 /* new broadcast */ -#define AM_POSSBCL 7 /* discard broadcast */ +#define AM_POSSBCL 7 /* discard broadcast */ /* NetInfo configuration locations */ #ifdef HAVE_NETINFO diff --git a/include/ntp_calendar.h b/include/ntp_calendar.h index 3ee1ff7..3afb627 100644 --- a/include/ntp_calendar.h +++ b/include/ntp_calendar.h @@ -83,13 +83,15 @@ extern systime_func_ptr ntpcal_set_timefunc(systime_func_ptr); #define SECSPERMIN (60) /* seconds per minute */ #define MINSPERHR (60) /* minutes per hour */ #define HRSPERDAY (24) /* hours per day */ +#define DAYSPERWEEK (7) /* days per week */ #define DAYSPERYEAR (365) /* days per year */ #define SECSPERHR (SECSPERMIN * MINSPERHR) #define SECSPERDAY (SECSPERHR * HRSPERDAY) +#define SECSPERWEEK (DAYSPERWEEK * SECSPERDAY) #define SECSPERYEAR (365 * SECSPERDAY) /* regular year */ #define SECSPERLEAPYEAR (366 * SECSPERDAY) /* leap year */ -#define SECSPERAVGYEAR 31556952 /* mean year length over 400yrs */ +#define SECSPERAVGYEAR 31556952 /* mean year length over 400yrs */ /* * Gross hacks. I have illicit knowlege that there won't be overflows @@ -113,7 +115,7 @@ extern uint32_t caltontp (const struct calendar *); * Convert between 'time_t' and 'vint64' */ extern vint64 time_to_vint64(const time_t *); -extern time_t vint64_to_time(const vint64 *); +extern time_t vint64_to_time(const vint64 *); /* * Get the build date & time. ATTENTION: The time zone is not specified! diff --git a/include/ntp_config.h b/include/ntp_config.h index 900688c..a74cd55 100644 --- a/include/ntp_config.h +++ b/include/ntp_config.h @@ -239,6 +239,7 @@ struct config_tree_tag { int_fifo * reset_counters; sim_fifo * sim_details; + int mdnstries; }; @@ -286,7 +287,7 @@ attr_val *create_attr_dval(int attr, double value); attr_val *create_attr_ival(int attr, int value); attr_val *create_attr_uval(int attr, u_int value); attr_val *create_attr_rangeval(int attr, int first, int last); -attr_val *create_attr_sval(int attr, char *s); +attr_val *create_attr_sval(int attr, const char *s); filegen_node *create_filegen_node(int filegen_token, attr_val_fifo *options); string_node *create_string_node(char *str); @@ -316,7 +317,7 @@ int dump_all_config_trees(FILE *df, int comment); #endif #if defined(HAVE_SETRLIMIT) -void ntp_rlimit(int, rlim_t, int, char *); +void ntp_rlimit(int, rlim_t, int, const char *); #endif #endif /* !defined(NTP_CONFIG_H) */ diff --git a/include/ntp_filegen.h b/include/ntp_filegen.h index f5ba8af..549bedb 100644 --- a/include/ntp_filegen.h +++ b/include/ntp_filegen.h @@ -52,5 +52,5 @@ extern void filegen_statsdir(void); extern FILEGEN *filegen_get (const char *); extern void filegen_register (const char *, const char *, FILEGEN *); #ifdef DEBUG -extern void filegen_unregister(char *); +extern void filegen_unregister(const char *); #endif diff --git a/include/ntp_fp.h b/include/ntp_fp.h index 1b97e8b..7806932 100644 --- a/include/ntp_fp.h +++ b/include/ntp_fp.h @@ -264,10 +264,13 @@ typedef u_int32 u_fp; * headers. So far the problem has only been seen with gcc, but it * may also affect Sun compilers, in which case the defined(__GNUC__) * term should be removed. + * XSCALE also generates bad code for these, at least with GCC 3.3.5. + * This is unrelated to math.h, but the same solution applies. */ #if defined(HAVE_U_INT64) && \ !(defined(__SVR4) && defined(__sun) && \ - defined(sparc) && defined(__GNUC__)) + defined(sparc) && defined(__GNUC__) || \ + defined(__arm__) && defined(__XSCALE__) && defined(__GNUC__)) #include /* ldexp() */ diff --git a/include/ntp_md5.h b/include/ntp_md5.h index 9f43378..2306b9a 100644 --- a/include/ntp_md5.h +++ b/include/ntp_md5.h @@ -24,7 +24,7 @@ typedef MD5_CTX EVP_MD_CTX; # define EVP_get_digestbynid(t) NULL -# define EVP_md5(v) NULL +# define EVP_md5() NULL # define EVP_MD_CTX_init(c) # define EVP_MD_CTX_set_flags(c, f) # define EVP_DigestInit(c, dt) (MD5Init(c), 1) diff --git a/include/ntp_random.h b/include/ntp_random.h index 3f89831..fa77f65 100644 --- a/include/ntp_random.h +++ b/include/ntp_random.h @@ -1,6 +1,9 @@ #include +void ntp_crypto_srandom(void); +int ntp_crypto_random_buf(void *buf, size_t nbytes); + long ntp_random (void); void ntp_srandom (unsigned long); void ntp_srandomdev (void); diff --git a/include/ntp_stdlib.h b/include/ntp_stdlib.h index 7c884fc..38180f0 100644 --- a/include/ntp_stdlib.h +++ b/include/ntp_stdlib.h @@ -96,14 +96,14 @@ extern int ymd2yd (int, int, int); /* a_md5encrypt.c */ extern int MD5authdecrypt (int, u_char *, u_int32 *, int, int); extern int MD5authencrypt (int, u_char *, u_int32 *, int); -extern void MD5auth_setkey (keyid_t, int, const u_char *, int); +extern void MD5auth_setkey (keyid_t, int, const u_char *, size_t); extern u_int32 addr2refid (sockaddr_u *); /* emalloc.c */ #ifndef EREALLOC_CALLSITE /* ntp_malloc.h defines */ extern void * ereallocz (void *, size_t, size_t, int); #define erealloczsite(p, n, o, z, f, l) ereallocz(p, n, o, (z)) -extern void * emalloc (size_t); +#define emalloc(n) ereallocz(NULL, n, 0, FALSE) #define emalloc_zero(c) ereallocz(NULL, (c), 0, TRUE) #define erealloc(p, c) ereallocz(p, (c), 0, FALSE) #define erealloc_zero(p, n, o) ereallocz(p, n, (o), TRUE) @@ -129,11 +129,11 @@ extern char * estrdup_impl (const char *, const char *, int); extern int atoint (const char *, long *); extern int atouint (const char *, u_long *); extern int hextoint (const char *, u_long *); -extern char * humanlogtime (void); -extern char * humantime (time_t); +extern const char * humanlogtime (void); +extern const char * humantime (time_t); extern char * mfptoa (u_int32, u_int32, short); extern char * mfptoms (u_int32, u_int32, short); -extern const char * modetoa (int); +extern const char * modetoa (size_t); extern const char * eventstr (int); extern const char * ceventstr (int); extern const char * res_match_flags(u_short); diff --git a/include/ntpd.h b/include/ntpd.h index 51d8f2a..f0bbeb0 100644 --- a/include/ntpd.h +++ b/include/ntpd.h @@ -78,7 +78,7 @@ extern int mprintf_event (int, struct peer *, const char *, ...) struct ctl_var { u_short code; u_short flags; - char *text; + const char *text; }; /* * Flag values @@ -188,6 +188,7 @@ extern void unpeer (struct peer *); extern void clear_all (void); extern int score_all (struct peer *); extern struct peer *findmanycastpeer(struct recvbuf *); +extern void peer_cleanup (void); /* ntp_crypto.c */ #ifdef AUTOKEY @@ -218,7 +219,7 @@ extern struct value tai_leap; /* ntp_proto.c */ extern void transmit (struct peer *); extern void receive (struct recvbuf *); -extern void peer_clear (struct peer *, char *); +extern void peer_clear (struct peer *, const char *); extern void process_packet (struct peer *, struct pkt *, u_int); extern void clock_select (void); @@ -285,7 +286,7 @@ extern void record_loop_stats (double, double, double, double, int); extern void record_clock_stats (sockaddr_u *, const char *); extern int mprintf_clock_stats(sockaddr_u *, const char *, ...) NTP_PRINTF(2, 3); -extern void record_raw_stats (sockaddr_u *srcadr, sockaddr_u *dstadr, l_fp *t1, l_fp *t2, l_fp *t3, l_fp *t4, int leap, int version, int mode, int stratum, int poll, int precision, double root_delay, double root_dispersion, u_int32 refid); +extern void record_raw_stats (sockaddr_u *srcadr, sockaddr_u *dstadr, l_fp *t1, l_fp *t2, l_fp *t3, l_fp *t4, int leap, int version, int mode, int stratum, int ppoll, int precision, double root_delay, double root_dispersion, u_int32 refid); extern void check_leap_file (int is_daily_check, u_int32 ntptime, const time_t * systime); extern void record_crypto_stats (sockaddr_u *, const char *); #ifdef DEBUG @@ -385,7 +386,8 @@ extern endpt * ep_list; /* linked list */ /* ntp_loopfilter.c */ extern double drift_comp; /* clock frequency (s/s) */ extern double clock_stability; /* clock stability (s/s) */ -extern double clock_max; /* max offset before step (s) */ +extern double clock_max_back; /* max backward offset before step (s) */ +extern double clock_max_fwd; /* max forward offset before step (s) */ extern double clock_panic; /* max offset before panic (s) */ extern double clock_phi; /* dispersion rate (s/s) */ extern double clock_minstep; /* step timeout (s) */ @@ -403,8 +405,9 @@ extern int kern_enable; /* kernel support enabled */ extern int hardpps_enable; /* kernel PPS discipline enabled */ extern int ext_enable; /* external clock enabled */ extern int cal_enable; /* refclock calibrate enable */ -extern int allow_panic; /* allow panic correction */ -extern int mode_ntpdate; /* exit on first clock set */ +extern int allow_panic; /* allow panic correction (-g) */ +extern int force_step_once; /* always step time once at startup (-G) */ +extern int mode_ntpdate; /* exit on first clock set (-q) */ extern int peer_ntpdate; /* count of ntpdate peers */ /* @@ -518,7 +521,7 @@ extern u_int32 conf_file_sum; /* Simple sum of characters */ /* ntp_signd.c */ #ifdef HAVE_NTP_SIGND -extern void send_via_ntp_signd(struct recvbuf *, int, keyid_t, int, +extern void send_via_ntp_signd(struct recvbuf *, int, keyid_t, int, struct pkt *); #endif diff --git a/include/parse.h b/include/parse.h index 3a98408..ca6855d 100644 --- a/include/parse.h +++ b/include/parse.h @@ -4,7 +4,7 @@ * parse.h,v 4.12 2007/01/14 08:36:03 kardel RELEASE_20070114_A * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -104,6 +104,13 @@ extern unsigned int splclock (void); #define TIMES10(_X_) (((_X_) << 3) + ((_X_) << 1)) #endif +/* + * some constants useful for GPS time conversion + */ +#define GPSORIGIN 2524953600UL /* NTP origin - GPS origin in seconds */ +#define GPSWRAP 990U /* assume week count less than this in the previous epoch */ +#define GPSWEEKS 1024U /* number of weeks until the GPS epch rolls over */ + /* * state flags */ @@ -127,7 +134,7 @@ extern unsigned int splclock (void); /* * optional status information */ -#define PARSEB_ALTERNATE 0x00001000 /* alternate antenna used */ +#define PARSEB_CALLBIT 0x00001000 /* "call bit" used to signalize irregularities in the control facilities */ #define PARSEB_POSITION 0x00002000 /* position available */ #define PARSEB_MESSAGE 0x00004000 /* addtitional message data */ /* @@ -145,7 +152,7 @@ extern unsigned int splclock (void); #define PARSEB_PPS 0x20000000 /* valid PPS sample */ #define PARSE_TCINFO (PARSEB_ANNOUNCE|PARSEB_POWERUP|PARSEB_NOSYNC|PARSEB_DST|\ - PARSEB_UTC|PARSEB_LEAPS|PARSEB_ALTERNATE|PARSEB_S_LEAP|\ + PARSEB_UTC|PARSEB_LEAPS|PARSEB_CALLBIT|PARSEB_S_LEAP|\ PARSEB_S_LOCATION|PARSEB_TIMECODE|PARSEB_MESSAGE) #define PARSE_POWERUP(x) ((x) & PARSEB_POWERUP) @@ -156,7 +163,7 @@ extern unsigned int splclock (void); #define PARSE_UTC(x) ((x) & PARSEB_UTC) #define PARSE_LEAPADD(x) (PARSE_SYNC(x) && (((x) & PARSEB_LEAPS) == PARSEB_LEAPADD)) #define PARSE_LEAPDEL(x) (PARSE_SYNC(x) && (((x) & PARSEB_LEAPS) == PARSEB_LEAPDEL)) -#define PARSE_ALTERNATE(x) ((x) & PARSEB_ALTERNATE) +#define PARSE_CALLBIT(x) ((x) & PARSEB_CALLBIT) #define PARSE_LEAPSECOND(x) (PARSE_SYNC(x) && ((x) & PARSEB_LEAP_SECOND)) #define PARSE_S_LEAP(x) ((x) & PARSEB_S_LEAP) @@ -229,13 +236,13 @@ typedef struct parsetime parsetime_t; #define PARSE_IO_CSIZE 0x00000003 #define PARSE_IO_CS5 0x00000000 #define PARSE_IO_CS6 0x00000001 -#define PARSE_IO_CS7 0x00000002 -#define PARSE_IO_CS8 0x00000003 +#define PARSE_IO_CS7 0x00000002 +#define PARSE_IO_CS8 0x00000003 /* * ioctl structure */ -union parsectl +union parsectl { struct parsegettc { @@ -258,7 +265,7 @@ union parsectl u_long parse_cs; /* character size (needed for stripping) */ } parsesetcs; }; - + typedef union parsectl parsectl_t; /*------ for conversion routines --------*/ @@ -266,7 +273,7 @@ typedef union parsectl parsectl_t; struct parse /* parse module local data */ { int parse_flags; /* operation and current status flags */ - + int parse_ioflags; /* io handling flags (5-8 Bit control currently) */ /* @@ -286,7 +293,7 @@ struct parse /* parse module local data */ char *parse_ldata; /* last data buffer */ unsigned short parse_ldsize; /* last data buffer length */ u_long parse_badformat; /* number of unparsable pakets */ - + timestamp_t parse_lastchar; /* last time a character was received */ parsetime_t parse_dtime; /* external data prototype */ }; @@ -337,15 +344,19 @@ typedef struct clocktime clocktime_t; #define SYNC_ZERO 0x00 #define SYNC_ONE 0x01 +typedef u_long parse_inp_fnc_t(parse_t *, char, timestamp_t *); +typedef u_long parse_cvt_fnc_t(unsigned char *, int, struct format *, clocktime_t *, void *); +typedef u_long parse_pps_fnc_t(parse_t *, int, timestamp_t *); + struct clockformat { /* special input protocol - implies fixed format */ - u_long (*input) (parse_t *, unsigned int, timestamp_t *); + parse_inp_fnc_t *input; /* conversion routine */ - u_long (*convert) (unsigned char *, int, struct format *, clocktime_t *, void *); + parse_cvt_fnc_t *convert; /* routine for handling RS232 sync events (time stamps) */ /* PPS input routine */ - u_long (*syncpps) (parse_t *, int, timestamp_t *); + parse_pps_fnc_t *syncpps; /* time code synthesizer */ void *data; /* local parameters */ @@ -361,7 +372,7 @@ typedef struct clockformat clockformat_t; */ extern int parse_ioinit (parse_t *); extern void parse_ioend (parse_t *); -extern int parse_ioread (parse_t *, unsigned int, timestamp_t *); +extern int parse_ioread (parse_t *, char, timestamp_t *); extern int parse_iopps (parse_t *, int, timestamp_t *); extern void parse_iodone (parse_t *); extern int parse_timecode (parsectl_t *, parse_t *); @@ -369,8 +380,8 @@ extern int parse_getfmt (parsectl_t *, parse_t *); extern int parse_setfmt (parsectl_t *, parse_t *); extern int parse_setcs (parsectl_t *, parse_t *); -extern unsigned int parse_restart (parse_t *, unsigned int); -extern unsigned int parse_addchar (parse_t *, unsigned int); +extern unsigned int parse_restart (parse_t *, char); +extern unsigned int parse_addchar (parse_t *, char); extern unsigned int parse_end (parse_t *); extern int Strok (const unsigned char *, const unsigned char *); @@ -379,9 +390,9 @@ extern int Stoi (const unsigned char *, long *, int); extern time_t parse_to_unixtime (clocktime_t *, u_long *); extern u_long updatetimeinfo (parse_t *, u_long); extern void syn_simple (parse_t *, timestamp_t *, struct format *, u_long); -extern u_long pps_simple (parse_t *, int, timestamp_t *); -extern u_long pps_one (parse_t *, int, timestamp_t *); -extern u_long pps_zero (parse_t *, int, timestamp_t *); +extern parse_pps_fnc_t pps_simple; +extern parse_pps_fnc_t pps_one; +extern parse_pps_fnc_t pps_zero; extern int parse_timedout (parse_t *, timestamp_t *, struct timeval *); #endif diff --git a/include/parse_conf.h b/include/parse_conf.h index 319dd54..d17d616 100644 --- a/include/parse_conf.h +++ b/include/parse_conf.h @@ -4,7 +4,7 @@ * parse_conf.h,v 4.7 2005/06/25 10:58:45 kardel RELEASE_20050625_A * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -41,13 +41,13 @@ /* * field location structure */ -#define O_DAY 0 +#define O_DAY 0 #define O_MONTH 1 -#define O_YEAR 2 -#define O_HOUR 3 -#define O_MIN 4 -#define O_SEC 5 -#define O_WDAY 6 +#define O_YEAR 2 +#define O_HOUR 3 +#define O_MIN 4 +#define O_SEC 5 +#define O_WDAY 6 #define O_FLAGS 7 #define O_ZONE 8 #define O_UTCHOFFSET 9 diff --git a/include/timepps-Solaris.h b/include/timepps-Solaris.h index a2b1fbe..bcae382 100644 --- a/include/timepps-Solaris.h +++ b/include/timepps-Solaris.h @@ -413,7 +413,7 @@ time_pps_getparams( } punit = (pps_unit_t *)handle; - memcpy(params, &punit->params, sizeof(params)); + memcpy(params, &punit->params, sizeof(*params)); return (0); } diff --git a/kernel/Makefile.in b/kernel/Makefile.in index ff1a6e4..2147529 100644 --- a/kernel/Makefile.in +++ b/kernel/Makefile.in @@ -38,8 +38,7 @@ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap-thread-check.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap.m4 \ + $(top_srcdir)/sntp/m4/ax_c99_struct_init.m4 \ $(top_srcdir)/sntp/m4/define_dir.m4 \ $(top_srcdir)/sntp/m4/hms_search_lib.m4 \ $(top_srcdir)/sntp/m4/libtool.m4 \ @@ -50,6 +49,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_cacheversion.m4 \ $(top_srcdir)/sntp/m4/ntp_compiler.m4 \ $(top_srcdir)/sntp/m4/ntp_crosscompile.m4 \ + $(top_srcdir)/sntp/m4/ntp_crypto_rand.m4 \ $(top_srcdir)/sntp/m4/ntp_debug.m4 \ $(top_srcdir)/sntp/m4/ntp_dir_sep.m4 \ $(top_srcdir)/sntp/m4/ntp_facilitynames.m4 \ @@ -67,6 +67,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_sntp.m4 \ $(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \ $(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \ + $(top_srcdir)/sntp/m4/openldap-thread-check.m4 \ + $(top_srcdir)/sntp/m4/openldap.m4 \ $(top_srcdir)/sntp/m4/os_cflags.m4 \ $(top_srcdir)/sntp/m4/snprintf.m4 \ $(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac @@ -147,6 +149,7 @@ CHUTEST = @CHUTEST@ CONFIG_SHELL = @CONFIG_SHELL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_LIBEVENT = @CPPFLAGS_LIBEVENT@ CPPFLAGS_NTP = @CPPFLAGS_NTP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -181,7 +184,9 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ +LDADD_LIBEVENT = @LDADD_LIBEVENT@ LDADD_LIBNTP = @LDADD_LIBNTP@ +LDADD_LIBUTIL = @LDADD_LIBUTIL@ LDADD_NLIST = @LDADD_NLIST@ LDADD_NTP = @LDADD_NTP@ LDFLAGS = @LDFLAGS@ @@ -320,6 +325,11 @@ TIMETRIM_DL = @TIMETRIM_DL@ TIMETRIM_DS = @TIMETRIM_DS@ TIMETRIM_MS = @TIMETRIM_MS@ TIMETRIM_NI = @TIMETRIM_NI@ +UPDATE_LEAP_DB = @UPDATE_LEAP_DB@ +UPDATE_LEAP_DL = @UPDATE_LEAP_DL@ +UPDATE_LEAP_DS = @UPDATE_LEAP_DS@ +UPDATE_LEAP_MS = @UPDATE_LEAP_MS@ +UPDATE_LEAP_NI = @UPDATE_LEAP_NI@ VERSION = @VERSION@ VER_SUFFIX = @VER_SUFFIX@ YACC = @YACC@ diff --git a/kernel/sys/Makefile.in b/kernel/sys/Makefile.in index 57bc7fd..2e8f990 100644 --- a/kernel/sys/Makefile.in +++ b/kernel/sys/Makefile.in @@ -40,8 +40,7 @@ DIST_COMMON = README $(noinst_HEADERS) $(srcdir)/Makefile.am \ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap-thread-check.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap.m4 \ + $(top_srcdir)/sntp/m4/ax_c99_struct_init.m4 \ $(top_srcdir)/sntp/m4/define_dir.m4 \ $(top_srcdir)/sntp/m4/hms_search_lib.m4 \ $(top_srcdir)/sntp/m4/libtool.m4 \ @@ -52,6 +51,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_cacheversion.m4 \ $(top_srcdir)/sntp/m4/ntp_compiler.m4 \ $(top_srcdir)/sntp/m4/ntp_crosscompile.m4 \ + $(top_srcdir)/sntp/m4/ntp_crypto_rand.m4 \ $(top_srcdir)/sntp/m4/ntp_debug.m4 \ $(top_srcdir)/sntp/m4/ntp_dir_sep.m4 \ $(top_srcdir)/sntp/m4/ntp_facilitynames.m4 \ @@ -69,6 +69,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_sntp.m4 \ $(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \ $(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \ + $(top_srcdir)/sntp/m4/openldap-thread-check.m4 \ + $(top_srcdir)/sntp/m4/openldap.m4 \ $(top_srcdir)/sntp/m4/os_cflags.m4 \ $(top_srcdir)/sntp/m4/snprintf.m4 \ $(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac @@ -112,6 +114,7 @@ CHUTEST = @CHUTEST@ CONFIG_SHELL = @CONFIG_SHELL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_LIBEVENT = @CPPFLAGS_LIBEVENT@ CPPFLAGS_NTP = @CPPFLAGS_NTP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -146,7 +149,9 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ +LDADD_LIBEVENT = @LDADD_LIBEVENT@ LDADD_LIBNTP = @LDADD_LIBNTP@ +LDADD_LIBUTIL = @LDADD_LIBUTIL@ LDADD_NLIST = @LDADD_NLIST@ LDADD_NTP = @LDADD_NTP@ LDFLAGS = @LDFLAGS@ @@ -285,6 +290,11 @@ TIMETRIM_DL = @TIMETRIM_DL@ TIMETRIM_DS = @TIMETRIM_DS@ TIMETRIM_MS = @TIMETRIM_MS@ TIMETRIM_NI = @TIMETRIM_NI@ +UPDATE_LEAP_DB = @UPDATE_LEAP_DB@ +UPDATE_LEAP_DL = @UPDATE_LEAP_DL@ +UPDATE_LEAP_DS = @UPDATE_LEAP_DS@ +UPDATE_LEAP_MS = @UPDATE_LEAP_MS@ +UPDATE_LEAP_NI = @UPDATE_LEAP_NI@ VERSION = @VERSION@ VER_SUFFIX = @VER_SUFFIX@ YACC = @YACC@ diff --git a/kernel/sys/parsestreams.h b/kernel/sys/parsestreams.h index e784f9e..bd40093 100644 --- a/kernel/sys/parsestreams.h +++ b/kernel/sys/parsestreams.h @@ -4,7 +4,7 @@ * parsestreams.h,v 4.5 2005/06/25 10:52:47 kardel RELEASE_20050625_A * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/lib/isc/backtrace.c b/lib/isc/backtrace.c index d2f044c..4274da3 100644 --- a/lib/isc/backtrace.c +++ b/lib/isc/backtrace.c @@ -211,17 +211,17 @@ isc_backtrace_gettrace(void **addrs, int maxaddrs, int *nframes) { #endif isc_result_t -isc_backtrace_getsymbolfromindex(int index, const void **addrp, +isc_backtrace_getsymbolfromindex(int idx, const void **addrp, const char **symbolp) { REQUIRE(addrp != NULL && *addrp == NULL); REQUIRE(symbolp != NULL && *symbolp == NULL); - if (index < 0 || index >= isc__backtrace_nsymbols) + if (idx < 0 || idx >= isc__backtrace_nsymbols) return (ISC_R_RANGE); - *addrp = isc__backtrace_symtable[index].addr; - *symbolp = isc__backtrace_symtable[index].symbol; + *addrp = isc__backtrace_symtable[idx].addr; + *symbolp = isc__backtrace_symtable[idx].symbol; return (ISC_R_SUCCESS); } diff --git a/lib/isc/event.c b/lib/isc/event.c index 8ab7524..e979616 100644 --- a/lib/isc/event.c +++ b/lib/isc/event.c @@ -34,9 +34,7 @@ static void destroy(isc_event_t *event) { - isc_mem_t *mctx = event->ev_destroy_arg; - - isc_mem_put(mctx, event, event->ev_size); + isc_mem_put(event->ev_destroy_arg, event, event->ev_size); } isc_event_t * diff --git a/lib/isc/include/isc/Makefile b/lib/isc/include/isc/Makefile deleted file mode 100644 index 5ed6d20..0000000 --- a/lib/isc/include/isc/Makefile +++ /dev/null @@ -1,439 +0,0 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. -# lib/isc/include/isc/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -srcdir = /deacon/backroom/snaps/ntp-dev/lib/isc/include/isc -top_srcdir = /deacon/backroom/snaps/ntp-dev -VPATH = /deacon/backroom/snaps/ntp-dev/lib/isc/include/isc -pkgdatadir = $(datadir)/ntp -pkglibdir = $(libdir)/ntp -pkgincludedir = $(includedir)/ntp -top_builddir = ../../../.. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/local/gnu/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = sparc-sun-solaris2.10 -host_triplet = sparc-sun-solaris2.10 -subdir = lib/isc/include/isc -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/libopts/m4/libopts.m4 \ - $(top_srcdir)/m4/define_dir.m4 \ - $(top_srcdir)/m4/ntp_cacheversion.m4 \ - $(top_srcdir)/m4/ntp_dir_sep.m4 \ - $(top_srcdir)/m4/ntp_lineeditlibs.m4 \ - $(top_srcdir)/m4/ntp_vpathhack.m4 \ - $(top_srcdir)/m4/os_cflags.m4 $(top_srcdir)/version.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run tar -AR = ar -ARLIB_DIR = arlib -AUTOCONF = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run autoconf -AUTOHEADER = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run autoheader -AUTOMAKE = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run automake-1.9 -AWK = gawk -BINSUBDIR = bin -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -D_LARGEFILE64_SOURCE -Wall -Wcast-qual -Wmissing-prototypes -Wpointer-arith -Wshadow -Winit-self -Wno-strict-prototypes -CHUTEST = -CLKTEST = -CPP = gcc -E -CPPFLAGS = -D__EXTENSIONS__ -I/usr/sfw/include -CYGPATH_W = echo -DCFD = -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -ECHO = echo -ECHO_C = -ECHO_N = -n -ECHO_T = -EDITLINE_LIBS = -EF_LIBS = -EF_PROGS = -EGREP = grep -E -EXEEXT = -HAVE_INLINE = -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_LIBOPTS_FALSE = -INSTALL_LIBOPTS_TRUE = # -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -LCRYPTO = -lcrypto -LDFLAGS = -L/usr/sfw/lib -R/usr/sfw/lib -LIBOBJS = -LIBOPTS_CFLAGS = -I$(top_srcdir)/libopts -LIBOPTS_DIR = libopts -LIBOPTS_LDADD = $(top_builddir)/libopts/libopts.la -LIBPARSE = -LIBS = -lkvm -lelf -lsocket -lrt -lmd5 -lnsl -lgen -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LN_S = ln -s -LSCF = -lscf -LTLIBOBJS = -MAKEINFO = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run makeinfo -MAKE_ADJTIMED = -MAKE_CHECK_LAYOUT = check-layout -MAKE_CHECK_Y2K = -MAKE_LIBNTPSIM = libntpsim.a -MAKE_LIBPARSE = -MAKE_LIBPARSE_KERNEL = -MAKE_NTPDSIM = ntpdsim -MAKE_NTPSNMPD = -MAKE_NTPTIME = ntptime -MAKE_PARSEKMODULE = -MAKE_TICKADJ = tickadj -MAKE_TIMETRIM = -NEED_LIBOPTS_FALSE = # -NEED_LIBOPTS_TRUE = -OBJEXT = o -OPENSSL = -OPENSSL_INC = /usr/sfw/include -OPENSSL_LIB = /usr/sfw/lib -PACKAGE = ntp -PACKAGE_BUGREPORT = -PACKAGE_NAME = ntp -PACKAGE_STRING = ntp 4.2.5p221 -PACKAGE_TARNAME = ntp -PACKAGE_VERSION = 4.2.5p221 -PATH_NET_SNMP_CONFIG = -PATH_PERL = /usr/local/bin/perl -PATH_SEPARATOR = : -PATH_SH = /bin/sh -PROPDELAY = -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -SNMP_CFLAGS = -SNMP_CPPFLAGS = -SNMP_LIBS = -STRIP = strip -TESTDCF = -VERSION = 4.2.5p221 -VPATH_HACK_FALSE = -VPATH_HACK_TRUE = # -YACC = bison -y -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = strip -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -bindir = ${exec_prefix}/bin -build = sparc-sun-solaris2.10 -build_alias = -build_cpu = sparc -build_os = solaris2.10 -build_vendor = sun -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = sparc-sun-solaris2.10 -host_alias = -host_cpu = sparc -host_os = solaris2.10 -host_vendor = sun -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /deacon/backroom/snaps/ntp-dev/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /usr/local -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -subdirs = arlib sntp -sysconfdir = ${prefix}/etc -target_alias = -NULL = -#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies -AUTOMAKE_OPTIONS = -ETAGS_ARGS = $(srcdir)/Makefile.am -#EXTRA_DIST = TAGS -noinst_HEADERS = \ - app.h \ - assertions.h \ - boolean.h \ - buffer.h \ - error.h \ - file.h \ - formatcheck.h \ - interfaceiter.h \ - ipv6.h \ - lang.h \ - lib.h \ - list.h \ - log.h \ - magic.h \ - md5.h \ - mem.h \ - msgcat.h \ - msgs.h \ - mutex.h \ - netaddr.h \ - netscope.h \ - once.h \ - platform.h \ - print.h \ - result.h \ - region.h \ - sockaddr.h \ - stdio.h \ - string.h \ - types.h \ - util.h \ - $(NULL) - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/isc/include/isc/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign lib/isc/include/isc/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(HEADERS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool ctags distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/lib/isc/include/isc/backtrace.h b/lib/isc/include/isc/backtrace.h index c0e98c0..7d7fc32 100644 --- a/lib/isc/include/isc/backtrace.h +++ b/lib/isc/include/isc/backtrace.h @@ -85,12 +85,12 @@ isc_backtrace_gettrace(void **addrs, int maxaddrs, int *nframes); */ isc_result_t -isc_backtrace_getsymbolfromindex(int index, const void **addrp, +isc_backtrace_getsymbolfromindex(int idx, const void **addrp, const char **symbolp); /*%< * Returns the content of the internal symbol table of the given index. * On success, *addrsp and *symbolp point to the address and the symbol of - * the 'index'th entry of the table, respectively. If 'index' is not in the + * the 'index'th entry of the table, respectively. If 'idx' is not in the * range of the symbol table, ISC_R_RANGE will be returned. * * Requires diff --git a/lib/isc/include/isc/socket.h b/lib/isc/include/isc/socket.h index 38f6f78..46e05a0 100644 --- a/lib/isc/include/isc/socket.h +++ b/lib/isc/include/isc/socket.h @@ -274,7 +274,7 @@ typedef struct isc_socketmgrmethods { } isc_socketmgrmethods_t; typedef struct isc_socketmethods { - void (*attach)(isc_socket_t *socket, + void (*attach)(isc_socket_t *sock, isc_socket_t **socketp); void (*detach)(isc_socket_t **socketp); isc_result_t (*bind)(isc_socket_t *sock, isc_sockaddr_t *sockaddr, @@ -296,9 +296,9 @@ typedef struct isc_socketmethods { isc_sockettype_t (*gettype)(isc_socket_t *sock); void (*ipv6only)(isc_socket_t *sock, isc_boolean_t yes); isc_result_t (*fdwatchpoke)(isc_socket_t *sock, int flags); - isc_result_t (*dup)(isc_socket_t *socket, + isc_result_t (*dup)(isc_socket_t *sock, isc_socket_t **socketp); - int (*getfd)(isc_socket_t *socket); + int (*getfd)(isc_socket_t *sock); } isc_socketmethods_t; /*% @@ -1094,24 +1094,24 @@ isc_socket_permunix(isc_sockaddr_t *sockaddr, isc_uint32_t perm, * \li #ISC_R_FAILURE */ -void isc_socket_setname(isc_socket_t *socket, const char *name, void *tag); +void isc_socket_setname(isc_socket_t *sock, const char *name, void *tag); /*%< * Set the name and optional tag for a socket. This allows tracking of the * owner or purpose for this socket, and is useful for tracing and statistics * reporting. */ -const char *isc_socket_getname(isc_socket_t *socket); +const char *isc_socket_getname(isc_socket_t *sock); /*%< * Get the name associated with a socket, if any. */ -void *isc_socket_gettag(isc_socket_t *socket); +void *isc_socket_gettag(isc_socket_t *sock); /*%< * Get the tag associated with a socket, if any. */ -int isc_socket_getfd(isc_socket_t *socket); +int isc_socket_getfd(isc_socket_t *sock); /*%< * Get the file descriptor associated with a socket */ diff --git a/lib/isc/inet_ntop.c b/lib/isc/inet_ntop.c index 26d5dca..7730180 100644 --- a/lib/isc/inet_ntop.c +++ b/lib/isc/inet_ntop.c @@ -135,6 +135,7 @@ inet_ntop6(const unsigned char *src, char *dst, size_t size) words[i / 2] |= (src[i] << ((1 - (i % 2)) << 3)); best.base = -1; cur.base = -1; + best.len = cur.len = 0; for (i = 0; i < (NS_IN6ADDRSZ / NS_INT16SZ); i++) { if (words[i] == 0) { if (cur.base == -1) diff --git a/lib/isc/log.c b/lib/isc/log.c index 0c142ce..38f0c4f 100644 --- a/lib/isc/log.c +++ b/lib/isc/log.c @@ -1143,7 +1143,7 @@ sync_channellist(isc_logconfig_t *lcfg) { static isc_result_t greatest_version(isc_logchannel_t *channel, int *greatestp) { /* XXXDCL HIGHLY NT */ - char *basename, *digit_end; + char *basenam, *digit_end; const char *dirname; int version, greatest = -1; unsigned int basenamelen; @@ -1160,23 +1160,23 @@ greatest_version(isc_logchannel_t *channel, int *greatestp) { * It is safe to DE_CONST the file.name because it was copied * with isc_mem_strdup in isc_log_createchannel. */ - basename = strrchr(FILE_NAME(channel), sep); + basenam = strrchr(FILE_NAME(channel), sep); #ifdef _WIN32 basename2 = strrchr(FILE_NAME(channel), '\\'); - if ((basename != NULL && basename2 != NULL && basename2 > basename) || - (basename == NULL && basename2 != NULL)) { - basename = basename2; + if ((basenam != NULL && basename2 != NULL && basename2 > basenam) || + (basenam == NULL && basename2 != NULL)) { + basenam = basename2; sep = '\\'; } #endif - if (basename != NULL) { - *basename++ = '\0'; + if (basenam != NULL) { + *basenam++ = '\0'; dirname = FILE_NAME(channel); } else { - DE_CONST(FILE_NAME(channel), basename); + DE_CONST(FILE_NAME(channel), basenam); dirname = "."; } - basenamelen = strlen(basename); + basenamelen = strlen(basenam); isc_dir_init(&dir); result = isc_dir_open(&dir, dirname); @@ -1184,8 +1184,8 @@ greatest_version(isc_logchannel_t *channel, int *greatestp) { /* * Replace the file separator if it was taken out. */ - if (basename != FILE_NAME(channel)) - *(basename - 1) = sep; + if (basenam != FILE_NAME(channel)) + *(basenam - 1) = sep; /* * Return if the directory open failed. @@ -1195,7 +1195,7 @@ greatest_version(isc_logchannel_t *channel, int *greatestp) { while (isc_dir_read(&dir) == ISC_R_SUCCESS) { if (dir.entry.length > basenamelen && - strncmp(dir.entry.name, basename, basenamelen) == 0 && + strncmp(dir.entry.name, basenam, basenamelen) == 0 && dir.entry.name[basenamelen] == '.') { version = strtol(&dir.entry.name[basenamelen + 1], @@ -1521,10 +1521,11 @@ isc_log_doit(isc_log_t *lctx, isc_logcategory_t *category, level_string[0] == '\0') { if (level < ISC_LOG_CRITICAL) snprintf(level_string, sizeof(level_string), + "%s %d: ", isc_msgcat_get(isc_msgcat, ISC_MSGSET_LOG, ISC_MSG_LEVEL, - "level %d: "), + "level"), level); else if (level > ISC_LOG_DYNAMIC) snprintf(level_string, sizeof(level_string), diff --git a/lib/isc/netaddr.c b/lib/isc/netaddr.c index d6928c1..457576b 100644 --- a/lib/isc/netaddr.c +++ b/lib/isc/netaddr.c @@ -202,9 +202,10 @@ isc_netaddr_format(const isc_netaddr_t *na, char *array, unsigned int size) { if (result != ISC_R_SUCCESS) { snprintf(array, size, + "<%s %u>", isc_msgcat_get(isc_msgcat, ISC_MSGSET_NETADDR, ISC_MSG_UNKNOWNADDR, - ""), + "unknown address, family"), na->family); array[size - 1] = '\0'; } diff --git a/lib/isc/result.c b/lib/isc/result.c index 520f161..da57272 100644 --- a/lib/isc/result.c +++ b/lib/isc/result.c @@ -172,7 +172,7 @@ const char * isc_result_totext(isc_result_t result) { resulttable *table; const char *txt, *default_text; - int index; + int idx; initialize(); @@ -183,15 +183,15 @@ isc_result_totext(isc_result_t result) { table != NULL; table = ISC_LIST_NEXT(table, link)) { if (result >= table->base && result <= table->last) { - index = (int)(result - table->base); - default_text = table->text[index]; + idx = (int)(result - table->base); + default_text = table->text[idx]; /* - * Note: we use 'index + 1' as the message number - * instead of index because isc_msgcat_get() requires + * Note: we use 'idx + 1' as the message number + * instead of idx because isc_msgcat_get() requires * the message number to be > 0. */ txt = isc_msgcat_get(table->msgcat, table->set, - index + 1, default_text); + idx + 1, default_text); break; } } diff --git a/lib/isc/sockaddr.c b/lib/isc/sockaddr.c index 2a7268f..1ae5e7c 100644 --- a/lib/isc/sockaddr.c +++ b/lib/isc/sockaddr.c @@ -192,9 +192,10 @@ isc_sockaddr_format(const isc_sockaddr_t *sa, char *array, unsigned int size) { * The message is the same as in netaddr.c. */ snprintf(array, size, + "<%s %u>", isc_msgcat_get(isc_msgcat, ISC_MSGSET_NETADDR, ISC_MSG_UNKNOWNADDR, - ""), + "unknown address, family"), sa->type.sa.sa_family); array[size - 1] = '\0'; } @@ -230,10 +231,11 @@ isc_sockaddr_hash(const isc_sockaddr_t *sockaddr, isc_boolean_t address_only) { break; default: UNEXPECTED_ERROR(__FILE__, __LINE__, + "%s: %d", isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKADDR, ISC_MSG_UNKNOWNFAMILY, - "unknown address family: %d"), + "unknown address family"), (int)sockaddr->type.sa.sa_family); s = (const unsigned char *)&sockaddr->type; length = sockaddr->length; @@ -410,9 +412,10 @@ isc_sockaddr_setport(isc_sockaddr_t *sockaddr, in_port_t port) { break; default: FATAL_ERROR(__FILE__, __LINE__, + "%s: %d", isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKADDR, ISC_MSG_UNKNOWNFAMILY, - "unknown address family: %d"), + "unknown address family"), (int)sockaddr->type.sa.sa_family); } } @@ -430,9 +433,10 @@ isc_sockaddr_getport(const isc_sockaddr_t *sockaddr) { break; default: FATAL_ERROR(__FILE__, __LINE__, + "%s: %d", isc_msgcat_get(isc_msgcat, ISC_MSGSET_SOCKADDR, ISC_MSG_UNKNOWNFAMILY, - "unknown address family: %d"), + "unknown address family"), (int)sockaddr->type.sa.sa_family); } diff --git a/lib/isc/unix/file.c b/lib/isc/unix/file.c index 3b59e86..9eda4a3 100644 --- a/lib/isc/unix/file.c +++ b/lib/isc/unix/file.c @@ -508,7 +508,7 @@ isc_file_safecreate(const char *filename, FILE **fp) { } isc_result_t -isc_file_splitpath(isc_mem_t *mctx, char *path, char **dirname, char **basename) +isc_file_splitpath(isc_mem_t *mctx, char *path, char **dirnam, char **basenam) { char *dir, *file, *slash; @@ -537,8 +537,8 @@ isc_file_splitpath(isc_mem_t *mctx, char *path, char **dirname, char **basename) return (ISC_R_INVALIDFILE); } - *dirname = dir; - *basename = file; + *dirnam = dir; + *basenam = file; return (ISC_R_SUCCESS); } diff --git a/lib/isc/unix/ifiter_getifaddrs.c b/lib/isc/unix/ifiter_getifaddrs.c index 547a83f..425b9b4 100644 --- a/lib/isc/unix/ifiter_getifaddrs.c +++ b/lib/isc/unix/ifiter_getifaddrs.c @@ -96,9 +96,13 @@ isc_interfaceiter_create(isc_mem_t *mctx, isc_interfaceiter_t **iterp) { } if (ret < 0) { isc__strerror(errno, strbuf, sizeof(strbuf)); - UNEXPECTED_ERROR(__FILE__, __LINE__, isc_msgcat_get(isc_msgcat, - ISC_MSGSET_IFITERGETIFADDRS, ISC_MSG_GETIFADDRS, - "getting interface addresses: getifaddrs: %s"), strbuf); + UNEXPECTED_ERROR(__FILE__, __LINE__, + "getting interface addresses: %s: %s", + isc_msgcat_get(isc_msgcat, + ISC_MSGSET_IFITERGETIFADDRS, + ISC_MSG_GETIFADDRS, + "getifaddrs"), + strbuf); result = ISC_R_UNEXPECTED; goto failure; } @@ -208,6 +212,9 @@ internal_current(isc_interfaceiter_t *iter) { get_addr(family, &iter->current.broadcast, ifa->ifa_broadaddr, ifa->ifa_name); +#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX + iter->current.ifindex = if_nametoindex(iter->current.name); +#endif return (ISC_R_SUCCESS); } diff --git a/lib/isc/unix/ifiter_ioctl.c b/lib/isc/unix/ifiter_ioctl.c index a684867..c8e4970 100644 --- a/lib/isc/unix/ifiter_ioctl.c +++ b/lib/isc/unix/ifiter_ioctl.c @@ -109,6 +109,10 @@ struct isc_interfaceiter { #endif #endif +/* Silence a warning when this file is #included */ +int +isc_ioctl(int fildes, int req, char *arg); + int isc_ioctl(int fildes, int req, char *arg) { int trys; @@ -588,6 +592,9 @@ internal_current4(isc_interfaceiter_t *iter) { } iter->current.netmask.type.in6.s6_addr[i] = (~0 << bits) & 0xff; } +#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX + iter->current.ifindex = if_nametoindex(iter->current.name); +#endif return (ISC_R_SUCCESS); inet: @@ -664,6 +671,9 @@ internal_current4(isc_interfaceiter_t *iter) { } get_addr(family, &iter->current.netmask, (struct sockaddr *)&ifreq.ifr_addr, ifreq.ifr_name); +#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX + iter->current.ifindex = if_nametoindex(iter->current.name); +#endif return (ISC_R_SUCCESS); } @@ -704,7 +714,6 @@ internal_current6(isc_interfaceiter_t *iter) { get_addr(family, &iter->current.address, (struct sockaddr *)&lifreq.lifr_addr, lifreq.lifr_name); - iter->current.ifindex = lifreq.lifr_index; if (isc_netaddr_islinklocal(&iter->current.address)) isc_netaddr_setzone(&iter->current.address, (isc_uint32_t)lifreq.lifr_index); @@ -844,7 +853,9 @@ internal_current6(isc_interfaceiter_t *iter) { iter->current.netmask.type.in6.s6_addr[i / 8] = (~0 << bits) & 0xff; } - +#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX + iter->current.ifindex = if_nametoindex(iter->current.name); +#endif return (ISC_R_SUCCESS); } #endif @@ -867,6 +878,9 @@ internal_current6(isc_interfaceiter_t *iter) { get_addr(family, &iter->current.netmask, (struct sockaddr *)&lifreq.lifr_addr, lifreq.lifr_name); +#ifdef ISC_PLATFORM_HAVEIFNAMETOINDEX + iter->current.ifindex = if_nametoindex(iter->current.name); +#endif return (ISC_R_SUCCESS); } #endif diff --git a/lib/isc/unix/include/isc/Makefile b/lib/isc/unix/include/isc/Makefile deleted file mode 100644 index 7c9a4b0..0000000 --- a/lib/isc/unix/include/isc/Makefile +++ /dev/null @@ -1,415 +0,0 @@ -# Makefile.in generated by automake 1.9.6 from Makefile.am. -# lib/isc/unix/include/isc/Makefile. Generated from Makefile.in by configure. - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - - - -srcdir = /deacon/backroom/snaps/ntp-dev/lib/isc/unix/include/isc -top_srcdir = /deacon/backroom/snaps/ntp-dev -VPATH = /deacon/backroom/snaps/ntp-dev/lib/isc/unix/include/isc -pkgdatadir = $(datadir)/ntp -pkglibdir = $(libdir)/ntp -pkgincludedir = $(includedir)/ntp -top_builddir = ../../../../.. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -INSTALL = /usr/local/gnu/bin/install -c -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = sparc-sun-solaris2.10 -host_triplet = sparc-sun-solaris2.10 -subdir = lib/isc/unix/include/isc -DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ - $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/libopts/m4/libopts.m4 \ - $(top_srcdir)/m4/define_dir.m4 \ - $(top_srcdir)/m4/ntp_cacheversion.m4 \ - $(top_srcdir)/m4/ntp_dir_sep.m4 \ - $(top_srcdir)/m4/ntp_lineeditlibs.m4 \ - $(top_srcdir)/m4/ntp_vpathhack.m4 \ - $(top_srcdir)/m4/os_cflags.m4 $(top_srcdir)/version.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -HEADERS = $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run aclocal-1.9 -AMDEP_FALSE = # -AMDEP_TRUE = -AMTAR = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run tar -AR = ar -ARLIB_DIR = arlib -AUTOCONF = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run autoconf -AUTOHEADER = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run autoheader -AUTOMAKE = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run automake-1.9 -AWK = gawk -BINSUBDIR = bin -CC = gcc -CCDEPMODE = depmode=gcc3 -CFLAGS = -g -O2 -D_LARGEFILE64_SOURCE -Wall -Wcast-qual -Wmissing-prototypes -Wpointer-arith -Wshadow -Winit-self -Wno-strict-prototypes -CHUTEST = -CLKTEST = -CPP = gcc -E -CPPFLAGS = -D__EXTENSIONS__ -I/usr/sfw/include -CYGPATH_W = echo -DCFD = -DEFS = -DHAVE_CONFIG_H -DEPDIR = .deps -ECHO = echo -ECHO_C = -ECHO_N = -n -ECHO_T = -EDITLINE_LIBS = -EF_LIBS = -EF_PROGS = -EGREP = grep -E -EXEEXT = -HAVE_INLINE = -INSTALL_DATA = ${INSTALL} -m 644 -INSTALL_LIBOPTS_FALSE = -INSTALL_LIBOPTS_TRUE = # -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s -LCRYPTO = -lcrypto -LDFLAGS = -L/usr/sfw/lib -R/usr/sfw/lib -LIBOBJS = -LIBOPTS_CFLAGS = -I$(top_srcdir)/libopts -LIBOPTS_DIR = libopts -LIBOPTS_LDADD = $(top_builddir)/libopts/libopts.la -LIBPARSE = -LIBS = -lkvm -lelf -lsocket -lrt -lmd5 -lnsl -lgen -LIBTOOL = $(SHELL) $(top_builddir)/libtool -LN_S = ln -s -LSCF = -lscf -LTLIBOBJS = -MAKEINFO = ${SHELL} /deacon/backroom/snaps/ntp-dev/missing --run makeinfo -MAKE_ADJTIMED = -MAKE_CHECK_LAYOUT = check-layout -MAKE_CHECK_Y2K = -MAKE_LIBNTPSIM = libntpsim.a -MAKE_LIBPARSE = -MAKE_LIBPARSE_KERNEL = -MAKE_NTPDSIM = ntpdsim -MAKE_NTPSNMPD = -MAKE_NTPTIME = ntptime -MAKE_PARSEKMODULE = -MAKE_TICKADJ = tickadj -MAKE_TIMETRIM = -NEED_LIBOPTS_FALSE = # -NEED_LIBOPTS_TRUE = -OBJEXT = o -OPENSSL = -OPENSSL_INC = /usr/sfw/include -OPENSSL_LIB = /usr/sfw/lib -PACKAGE = ntp -PACKAGE_BUGREPORT = -PACKAGE_NAME = ntp -PACKAGE_STRING = ntp 4.2.5p221 -PACKAGE_TARNAME = ntp -PACKAGE_VERSION = 4.2.5p221 -PATH_NET_SNMP_CONFIG = -PATH_PERL = /usr/local/bin/perl -PATH_SEPARATOR = : -PATH_SH = /bin/sh -PROPDELAY = -RANLIB = ranlib -SET_MAKE = -SHELL = /bin/sh -SNMP_CFLAGS = -SNMP_CPPFLAGS = -SNMP_LIBS = -STRIP = strip -TESTDCF = -VERSION = 4.2.5p221 -VPATH_HACK_FALSE = -VPATH_HACK_TRUE = # -YACC = bison -y -ac_ct_AR = ar -ac_ct_CC = gcc -ac_ct_RANLIB = ranlib -ac_ct_STRIP = strip -am__fastdepCC_FALSE = # -am__fastdepCC_TRUE = -am__include = include -am__leading_dot = . -am__quote = -am__tar = ${AMTAR} chof - "$$tardir" -am__untar = ${AMTAR} xf - -bindir = ${exec_prefix}/bin -build = sparc-sun-solaris2.10 -build_alias = -build_cpu = sparc -build_os = solaris2.10 -build_vendor = sun -datadir = ${prefix}/share -exec_prefix = ${prefix} -host = sparc-sun-solaris2.10 -host_alias = -host_cpu = sparc -host_os = solaris2.10 -host_vendor = sun -includedir = ${prefix}/include -infodir = ${prefix}/info -install_sh = /deacon/backroom/snaps/ntp-dev/install-sh -libdir = ${exec_prefix}/lib -libexecdir = ${exec_prefix}/libexec -localstatedir = ${prefix}/var -mandir = ${prefix}/man -mkdir_p = mkdir -p -- -oldincludedir = /usr/include -prefix = /usr/local -program_transform_name = s,x,x, -sbindir = ${exec_prefix}/sbin -sharedstatedir = ${prefix}/com -subdirs = arlib sntp -sysconfdir = ${prefix}/etc -target_alias = -NULL = -#AUTOMAKE_OPTIONS = ../util/ansi2knr no-dependencies -AUTOMAKE_OPTIONS = -ETAGS_ARGS = $(srcdir)/Makefile.am -#EXTRA_DIST = TAGS -noinst_HEADERS = \ - dir.h \ - int.h \ - net.h \ - offset.h \ - stat.h \ - strerror.h \ - time.h \ - $(NULL) - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign lib/isc/unix/include/isc/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --foreign lib/isc/unix/include/isc/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool -uninstall-info-am: - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ - list='$(DISTFILES)'; for file in $$list; do \ - case $$file in \ - $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ - $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ - esac; \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test "$$dir" != "$$file" && test "$$dir" != "."; then \ - dir="/$$dir"; \ - $(mkdir_p) "$(distdir)$$dir"; \ - else \ - dir=''; \ - fi; \ - if test -d $$d/$$file; then \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(HEADERS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-libtool \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-exec-am: - -install-info: install-info-am - -install-man: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-info-am - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool ctags distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-exec install-exec-am install-info \ - install-info-am install-man install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \ - uninstall-am uninstall-info-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/lib/isc/unix/net.c b/lib/isc/unix/net.c index 2ba17d1..7056668 100644 --- a/lib/isc/unix/net.c +++ b/lib/isc/unix/net.c @@ -106,7 +106,8 @@ const struct in6_addr isc_net_in6addrloop = IN6ADDR_LOOPBACK_INIT; static isc_once_t once_ipv6only = ISC_ONCE_INIT; # endif -# if defined(ISC_PLATFORM_HAVEIN6PKTINFO) +# if defined(ISC_PLATFORM_HAVEIPV6) && \ + defined(WANT_IPV6) && defined(ISC_PLATFORM_HAVEIN6PKTINFO) static isc_once_t once_ipv6pktinfo = ISC_ONCE_INIT; # endif #endif /* ISC_PLATFORM_HAVEIPV6 */ diff --git a/libjsmn/jsmn.c b/libjsmn/jsmn.c index 4f70adb..aa8b12b 100644 --- a/libjsmn/jsmn.c +++ b/libjsmn/jsmn.c @@ -9,7 +9,7 @@ static jsmntok_t *jsmn_alloc_token(jsmn_parser *parser, jsmntok_t *tokens, size_t num_tokens) { jsmntok_t *tok; - if (parser->toknext >= num_tokens) { + if ((size_t)parser->toknext >= num_tokens) { return NULL; } tok = &tokens[parser->toknext++]; @@ -108,6 +108,8 @@ static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js, /* Backslash: Quoted symbol expected */ if (c == '\\') { + int i = 0; + parser->pos++; switch (js[parser->pos]) { /* Allowed escaped symbols */ @@ -117,7 +119,6 @@ static jsmnerr_t jsmn_parse_string(jsmn_parser *parser, const char *js, /* Allows escaped symbol \uXXXX */ case 'u': parser->pos++; - int i = 0; for(; i < 4 && js[parser->pos] != '\0'; i++) { /* If it isn't a hex character we have an error */ if(!((js[parser->pos] >= 48 && js[parser->pos] <= 57) || /* 0-9 */ diff --git a/libntp/Makefile.am b/libntp/Makefile.am index 515fa9a..c12658f 100644 --- a/libntp/Makefile.am +++ b/libntp/Makefile.am @@ -78,16 +78,17 @@ libntp_a_SRCS = \ msyslog.c \ netof.c \ ntp_calendar.c \ + ntp_crypto_rnd.c \ ntp_intres.c \ ntp_libopts.c \ ntp_lineedit.c \ + ntp_random.c \ ntp_rfc2553.c \ ntp_worker.c \ numtoa.c \ numtohost.c \ octtoint.c \ prettydate.c \ - ntp_random.c \ recvbuff.c \ refnumtoa.c \ snprintf.c \ diff --git a/libntp/Makefile.in b/libntp/Makefile.in index 87645ca..bb68042 100644 --- a/libntp/Makefile.in +++ b/libntp/Makefile.in @@ -41,8 +41,7 @@ subdir = libntp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap-thread-check.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap.m4 \ + $(top_srcdir)/sntp/m4/ax_c99_struct_init.m4 \ $(top_srcdir)/sntp/m4/define_dir.m4 \ $(top_srcdir)/sntp/m4/hms_search_lib.m4 \ $(top_srcdir)/sntp/m4/libtool.m4 \ @@ -53,6 +52,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_cacheversion.m4 \ $(top_srcdir)/sntp/m4/ntp_compiler.m4 \ $(top_srcdir)/sntp/m4/ntp_crosscompile.m4 \ + $(top_srcdir)/sntp/m4/ntp_crypto_rand.m4 \ $(top_srcdir)/sntp/m4/ntp_debug.m4 \ $(top_srcdir)/sntp/m4/ntp_dir_sep.m4 \ $(top_srcdir)/sntp/m4/ntp_facilitynames.m4 \ @@ -70,6 +70,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_sntp.m4 \ $(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \ $(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \ + $(top_srcdir)/sntp/m4/openldap-thread-check.m4 \ + $(top_srcdir)/sntp/m4/openldap.m4 \ $(top_srcdir)/sntp/m4/os_cflags.m4 \ $(top_srcdir)/sntp/m4/snprintf.m4 \ $(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac @@ -96,13 +98,14 @@ am__libntp_a_SOURCES_DIST = systime.c a_md5encrypt.c adjtime.c \ dofptoa.c dolfptoa.c emalloc.c findconfig.c getopt.c \ hextoint.c hextolfp.c humandate.c icom.c iosignal.c \ lib_strbuf.c machines.c mktime.c modetoa.c mstolfp.c msyslog.c \ - netof.c ntp_calendar.c ntp_intres.c ntp_libopts.c \ - ntp_lineedit.c ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c \ - octtoint.c prettydate.c ntp_random.c recvbuff.c refnumtoa.c \ - snprintf.c socket.c socktoa.c socktohost.c ssl_init.c \ - statestr.c strdup.c strl_obsd.c syssignal.c timetoa.c \ - timevalops.c uglydate.c vint64ops.c work_fork.c work_thread.c \ - ymd2yd.c $(srcdir)/../lib/isc/assertions.c \ + netof.c ntp_calendar.c ntp_crypto_rnd.c ntp_intres.c \ + ntp_libopts.c ntp_lineedit.c ntp_random.c ntp_rfc2553.c \ + ntp_worker.c numtoa.c numtohost.c octtoint.c prettydate.c \ + recvbuff.c refnumtoa.c snprintf.c socket.c socktoa.c \ + socktohost.c ssl_init.c statestr.c strdup.c strl_obsd.c \ + syssignal.c timetoa.c timevalops.c uglydate.c vint64ops.c \ + work_fork.c work_thread.c ymd2yd.c \ + $(srcdir)/../lib/isc/assertions.c \ $(srcdir)/../lib/isc/buffer.c \ $(srcdir)/../lib/isc/backtrace-emptytbl.c \ $(srcdir)/../lib/isc/backtrace.c \ @@ -153,17 +156,19 @@ am__objects_4 = a_md5encrypt.$(OBJEXT) adjtime.$(OBJEXT) \ humandate.$(OBJEXT) icom.$(OBJEXT) iosignal.$(OBJEXT) \ lib_strbuf.$(OBJEXT) machines.$(OBJEXT) mktime.$(OBJEXT) \ modetoa.$(OBJEXT) mstolfp.$(OBJEXT) msyslog.$(OBJEXT) \ - netof.$(OBJEXT) ntp_calendar.$(OBJEXT) ntp_intres.$(OBJEXT) \ + netof.$(OBJEXT) ntp_calendar.$(OBJEXT) \ + ntp_crypto_rnd.$(OBJEXT) ntp_intres.$(OBJEXT) \ ntp_libopts.$(OBJEXT) ntp_lineedit.$(OBJEXT) \ - ntp_rfc2553.$(OBJEXT) ntp_worker.$(OBJEXT) numtoa.$(OBJEXT) \ - numtohost.$(OBJEXT) octtoint.$(OBJEXT) prettydate.$(OBJEXT) \ - ntp_random.$(OBJEXT) recvbuff.$(OBJEXT) refnumtoa.$(OBJEXT) \ - snprintf.$(OBJEXT) socket.$(OBJEXT) socktoa.$(OBJEXT) \ - socktohost.$(OBJEXT) ssl_init.$(OBJEXT) statestr.$(OBJEXT) \ - strdup.$(OBJEXT) strl_obsd.$(OBJEXT) syssignal.$(OBJEXT) \ - timetoa.$(OBJEXT) timevalops.$(OBJEXT) uglydate.$(OBJEXT) \ - vint64ops.$(OBJEXT) work_fork.$(OBJEXT) work_thread.$(OBJEXT) \ - ymd2yd.$(OBJEXT) $(am__objects_3) $(am__objects_1) + ntp_random.$(OBJEXT) ntp_rfc2553.$(OBJEXT) \ + ntp_worker.$(OBJEXT) numtoa.$(OBJEXT) numtohost.$(OBJEXT) \ + octtoint.$(OBJEXT) prettydate.$(OBJEXT) recvbuff.$(OBJEXT) \ + refnumtoa.$(OBJEXT) snprintf.$(OBJEXT) socket.$(OBJEXT) \ + socktoa.$(OBJEXT) socktohost.$(OBJEXT) ssl_init.$(OBJEXT) \ + statestr.$(OBJEXT) strdup.$(OBJEXT) strl_obsd.$(OBJEXT) \ + syssignal.$(OBJEXT) timetoa.$(OBJEXT) timevalops.$(OBJEXT) \ + uglydate.$(OBJEXT) vint64ops.$(OBJEXT) work_fork.$(OBJEXT) \ + work_thread.$(OBJEXT) ymd2yd.$(OBJEXT) $(am__objects_3) \ + $(am__objects_1) am_libntp_a_OBJECTS = systime.$(OBJEXT) $(am__objects_4) libntp_a_OBJECTS = $(am_libntp_a_OBJECTS) libntpsim_a_AR = $(AR) $(ARFLAGS) @@ -175,13 +180,14 @@ am__libntpsim_a_SOURCES_DIST = systime_s.c a_md5encrypt.c adjtime.c \ dofptoa.c dolfptoa.c emalloc.c findconfig.c getopt.c \ hextoint.c hextolfp.c humandate.c icom.c iosignal.c \ lib_strbuf.c machines.c mktime.c modetoa.c mstolfp.c msyslog.c \ - netof.c ntp_calendar.c ntp_intres.c ntp_libopts.c \ - ntp_lineedit.c ntp_rfc2553.c ntp_worker.c numtoa.c numtohost.c \ - octtoint.c prettydate.c ntp_random.c recvbuff.c refnumtoa.c \ - snprintf.c socket.c socktoa.c socktohost.c ssl_init.c \ - statestr.c strdup.c strl_obsd.c syssignal.c timetoa.c \ - timevalops.c uglydate.c vint64ops.c work_fork.c work_thread.c \ - ymd2yd.c $(srcdir)/../lib/isc/assertions.c \ + netof.c ntp_calendar.c ntp_crypto_rnd.c ntp_intres.c \ + ntp_libopts.c ntp_lineedit.c ntp_random.c ntp_rfc2553.c \ + ntp_worker.c numtoa.c numtohost.c octtoint.c prettydate.c \ + recvbuff.c refnumtoa.c snprintf.c socket.c socktoa.c \ + socktohost.c ssl_init.c statestr.c strdup.c strl_obsd.c \ + syssignal.c timetoa.c timevalops.c uglydate.c vint64ops.c \ + work_fork.c work_thread.c ymd2yd.c \ + $(srcdir)/../lib/isc/assertions.c \ $(srcdir)/../lib/isc/buffer.c \ $(srcdir)/../lib/isc/backtrace-emptytbl.c \ $(srcdir)/../lib/isc/backtrace.c \ @@ -263,6 +269,7 @@ CHUTEST = @CHUTEST@ CONFIG_SHELL = @CONFIG_SHELL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_LIBEVENT = @CPPFLAGS_LIBEVENT@ CPPFLAGS_NTP = @CPPFLAGS_NTP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -297,7 +304,9 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ +LDADD_LIBEVENT = @LDADD_LIBEVENT@ LDADD_LIBNTP = @LDADD_LIBNTP@ +LDADD_LIBUTIL = @LDADD_LIBUTIL@ LDADD_NLIST = @LDADD_NLIST@ LDADD_NTP = @LDADD_NTP@ LDFLAGS = @LDFLAGS@ @@ -436,6 +445,11 @@ TIMETRIM_DL = @TIMETRIM_DL@ TIMETRIM_DS = @TIMETRIM_DS@ TIMETRIM_MS = @TIMETRIM_MS@ TIMETRIM_NI = @TIMETRIM_NI@ +UPDATE_LEAP_DB = @UPDATE_LEAP_DB@ +UPDATE_LEAP_DL = @UPDATE_LEAP_DL@ +UPDATE_LEAP_DS = @UPDATE_LEAP_DS@ +UPDATE_LEAP_MS = @UPDATE_LEAP_MS@ +UPDATE_LEAP_NI = @UPDATE_LEAP_NI@ VERSION = @VERSION@ VER_SUFFIX = @VER_SUFFIX@ YACC = @YACC@ @@ -559,16 +573,17 @@ libntp_a_SRCS = \ msyslog.c \ netof.c \ ntp_calendar.c \ + ntp_crypto_rnd.c \ ntp_intres.c \ ntp_libopts.c \ ntp_lineedit.c \ + ntp_random.c \ ntp_rfc2553.c \ ntp_worker.c \ numtoa.c \ numtohost.c \ octtoint.c \ prettydate.c \ - ntp_random.c \ recvbuff.c \ refnumtoa.c \ snprintf.c \ @@ -709,6 +724,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netof.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netscope.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_calendar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_crypto_rnd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_intres.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_libopts.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntp_lineedit.Po@am__quote@ diff --git a/libntp/atoint.c b/libntp/atoint.c index 1064b36..9da8c13 100644 --- a/libntp/atoint.c +++ b/libntp/atoint.c @@ -35,7 +35,7 @@ atoint( u = 0; while (*cp != '\0') { - if (!isdigit((int)*cp)) + if (!isdigit((unsigned char)*cp)) return 0; if (u > 214748364 || (u == 214748364 && *cp > oflow_digit)) return 0; /* overflow */ diff --git a/libntp/atolfp.c b/libntp/atolfp.c index 4afeb23..3a65f6b 100644 --- a/libntp/atolfp.c +++ b/libntp/atolfp.c @@ -52,7 +52,7 @@ atolfp( * * [spaces][-|+][digits][.][digits][spaces|\n|\0] */ - while (isspace((int)*cp)) + while (isspace((unsigned char)*cp)) cp++; if (*cp == '-') { @@ -63,7 +63,7 @@ atolfp( if (*cp == '+') cp++; - if (*cp != '.' && !isdigit((int)*cp)) + if (*cp != '.' && !isdigit((unsigned char)*cp)) return 0; while (*cp != '\0' && (ind = strchr(digits, *cp)) != NULL) { @@ -72,7 +72,7 @@ atolfp( cp++; } - if (*cp != '\0' && !isspace((int)*cp)) { + if (*cp != '\0' && !isspace((unsigned char)*cp)) { if (*cp++ != '.') return 0; @@ -84,10 +84,10 @@ atolfp( cp++; } - while (isdigit((int)*cp)) + while (isdigit((unsigned char)*cp)) cp++; - if (*cp != '\0' && !isspace((int)*cp)) + if (*cp != '\0' && !isspace((unsigned char)*cp)) return 0; } diff --git a/libntp/atouint.c b/libntp/atouint.c index ab86130..0a61639 100644 --- a/libntp/atouint.c +++ b/libntp/atouint.c @@ -28,7 +28,7 @@ atouint( u = 0; while ('\0' != *cp) { - if (!isdigit(*cp)) + if (!isdigit((unsigned char)*cp)) return 0; if (u > 429496729 || (u == 429496729 && *cp >= '6')) return 0; /* overflow */ diff --git a/libntp/audio.c b/libntp/audio.c index 2a56619..6f2262c 100644 --- a/libntp/audio.c +++ b/libntp/audio.c @@ -67,7 +67,7 @@ static struct audio_info info; /* audio device info */ static int ctl_fd; /* audio control file descriptor */ #ifdef PCM_STYLE_SOUND -static void audio_config_read (int, char **, char **); +static void audio_config_read (int, const char **, const char **); static int mixer_name (const char *, int); @@ -114,8 +114,8 @@ mixer_name( static void audio_config_read( int unit, - char **c_dev, /* Control device */ - char **i_dev /* input device */ + const char **c_dev, /* Control device */ + const char **i_dev /* input device */ ) { FILE *fd; @@ -148,12 +148,12 @@ audio_config_read( /* Remove any trailing spaces */ for (i = strlen(line); - i > 0 && isascii((int)line[i - 1]) && isspace((int)line[i - 1]); + i > 0 && isascii((unsigned char)line[i - 1]) && isspace((unsigned char)line[i - 1]); ) line[--i] = '\0'; /* Remove leading space */ - for (cc = line; *cc && isascii((int)*cc) && isspace((int)*cc); cc++) + for (cc = line; *cc && isascii((unsigned char)*cc) && isspace((unsigned char)*cc); cc++) continue; /* Stop if nothing left */ @@ -162,16 +162,16 @@ audio_config_read( /* Uppercase the command and find the arg */ for (ca = cc; *ca; ca++) { - if (isascii((int)*ca)) { - if (islower((int)*ca)) { - *ca = toupper(*ca); - } else if (isspace((int)*ca) || (*ca == '=')) + if (isascii((unsigned char)*ca)) { + if (islower((unsigned char)*ca)) { + *ca = toupper((unsigned char)*ca); + } else if (isspace((unsigned char)*ca) || (*ca == '=')) break; } } /* Remove space (and possible =) leading the arg */ - for (; *ca && isascii((int)*ca) && (isspace((int)*ca) || (*ca == '=')); ca++) + for (; *ca && isascii((unsigned char)*ca) && (isspace((unsigned char)*ca) || (*ca == '=')); ca++) continue; if (!strncmp(cc, "IDEV", 4) && @@ -210,7 +210,7 @@ audio_config_read( */ int audio_init( - char *dname, /* device name */ + const char *dname, /* device name */ int bufsiz, /* buffer size */ int unit /* device unit (0-3) */ ) @@ -227,7 +227,7 @@ audio_init( #endif int fd; int rval; - char *actl = + const char *actl = #ifdef PCM_STYLE_SOUND actl_dev #else diff --git a/libntp/authkeys.c b/libntp/authkeys.c index 7b4427c..68771ff 100644 --- a/libntp/authkeys.c +++ b/libntp/authkeys.c @@ -517,7 +517,7 @@ MD5auth_setkey( keyid_t keyno, int keytype, const u_char *key, - int len + size_t len ) { symkey * sk; @@ -527,7 +527,6 @@ MD5auth_setkey( DEBUG_ENSURE(keytype <= USHRT_MAX); DEBUG_ENSURE(len < 4 * 1024); - len = max(0, len); /* * See if we already have the key. If so just stick in the * new value. diff --git a/libntp/authreadkeys.c b/libntp/authreadkeys.c index 9b02119..e8ddc94 100644 --- a/libntp/authreadkeys.c +++ b/libntp/authreadkeys.c @@ -77,8 +77,8 @@ authreadkeys( int keytype; char buf[512]; /* lots of room for line */ u_char keystr[32]; /* Bug 2537 */ - int len; - int j; + size_t len; + size_t j; /* * Open file. Complain and return if it can't be opened. @@ -181,11 +181,11 @@ authreadkeys( char hex[] = "0123456789abcdef"; u_char temp; char *ptr; - int jlim; + size_t jlim; jlim = min(len, 2 * sizeof(keystr)); for (j = 0; j < jlim; j++) { - ptr = strchr(hex, tolower(token[j])); + ptr = strchr(hex, tolower((unsigned char)token[j])); if (ptr == NULL) break; /* abort decoding */ temp = (u_char)(ptr - hex); diff --git a/libntp/emalloc.c b/libntp/emalloc.c index c49c5c1..6c1c678 100644 --- a/libntp/emalloc.c +++ b/libntp/emalloc.c @@ -86,6 +86,7 @@ estrdup_impl( } +#if 0 #ifndef EREALLOC_CALLSITE void * emalloc(size_t newsz) @@ -93,4 +94,5 @@ emalloc(size_t newsz) return ereallocz(NULL, newsz, 0, FALSE); } #endif +#endif diff --git a/libntp/hextoint.c b/libntp/hextoint.c index d24b5a0..980a43f 100644 --- a/libntp/hextoint.c +++ b/libntp/hextoint.c @@ -23,7 +23,7 @@ hextoint( u = 0; while (*cp != '\0') { - if (!isxdigit(*cp)) + if (!isxdigit((unsigned char)*cp)) return 0; if (u & 0xF0000000) return 0; /* overflow */ diff --git a/libntp/hextolfp.c b/libntp/hextolfp.c index 8fbce2e..2bff929 100644 --- a/libntp/hextolfp.c +++ b/libntp/hextolfp.c @@ -30,7 +30,7 @@ hextolfp( * * [spaces]8_hex_digits[.]8_hex_digits[spaces|\n|\0] */ - while (isspace((int)*cp)) + while (isspace((unsigned char)*cp)) cp++; cpstart = cp; @@ -59,7 +59,7 @@ hextolfp( if ((cp - cpstart) < 8 || ind == NULL) return 0; - if (*cp != '\0' && !isspace((int)*cp)) + if (*cp != '\0' && !isspace((unsigned char)*cp)) return 0; lfp->l_ui = dec_i; diff --git a/libntp/humandate.c b/libntp/humandate.c index f88d8d2..d9d5e89 100644 --- a/libntp/humandate.c +++ b/libntp/humandate.c @@ -13,7 +13,7 @@ /* This is used in msyslog.c; we don't want to clutter up the log with the year and day of the week, etc.; just the minimal date and time. */ -char * +const char * humanlogtime(void) { char * bp; @@ -39,7 +39,7 @@ humanlogtime(void) * humantime() -- like humanlogtime() but without date, and with the * time to display given as an argument. */ -char * +const char * humantime( time_t cursec ) diff --git a/libntp/icom.c b/libntp/icom.c index c981d85..8070011 100644 --- a/libntp/icom.c +++ b/libntp/icom.c @@ -121,17 +121,15 @@ doublefreq( /* returns void */ */ int icom_init( - char *device, /* device name/link */ + const char *device, /* device name/link */ int speed, /* line speed */ int trace /* trace flags */ ) { TTY ttyb; int fd; - int flags; int rc; int saved_errno; - flags = trace; fd = tty_open(device, O_RDWR, 0777); if (fd < 0) return -1; diff --git a/libntp/modetoa.c b/libntp/modetoa.c index b476bc9..6f13d20 100644 --- a/libntp/modetoa.c +++ b/libntp/modetoa.c @@ -9,7 +9,7 @@ const char * modetoa( - int mode + size_t mode ) { char *bp; @@ -25,9 +25,9 @@ modetoa( "bclient", }; - if (mode < 0 || mode >= COUNTOF(modestrings)) { + if (mode >= COUNTOF(modestrings)) { LIB_GETBUF(bp); - snprintf(bp, LIB_BUFLENGTH, "mode#%d", mode); + snprintf(bp, LIB_BUFLENGTH, "mode#%zu", mode); return bp; } diff --git a/libntp/mstolfp.c b/libntp/mstolfp.c index 1a1a02b..828b14c 100644 --- a/libntp/mstolfp.c +++ b/libntp/mstolfp.c @@ -32,7 +32,7 @@ mstolfp( */ bp = buf; cp = str; - while (isspace((int)*cp)) + while (isspace((unsigned char)*cp)) cp++; if (*cp == '-') { @@ -40,7 +40,7 @@ mstolfp( cp++; } - if (*cp != '.' && !isdigit((int)*cp)) + if (*cp != '.' && !isdigit((unsigned char)*cp)) return 0; @@ -48,7 +48,7 @@ mstolfp( * Search forward for the decimal point or the end of the string. */ cpdec = cp; - while (isdigit((int)*cpdec)) + while (isdigit((unsigned char)*cpdec)) cpdec++; /* @@ -86,7 +86,7 @@ mstolfp( if (*cp == '.') { cp++; - while (isdigit((int)*cp)) + while (isdigit((unsigned char)*cp)) *bp++ = (char)*cp++; } *bp = '\0'; @@ -95,7 +95,7 @@ mstolfp( * Check to make sure the string is properly terminated. If * so, give the buffer to the decoding routine. */ - if (*cp != '\0' && !isspace((int)*cp)) + if (*cp != '\0' && !isspace((unsigned char)*cp)) return 0; return atolfp(buf, lfp); } diff --git a/libntp/ntp_calendar.c b/libntp/ntp_calendar.c index e557f4e..ff91fcf 100644 --- a/libntp/ntp_calendar.c +++ b/libntp/ntp_calendar.c @@ -29,7 +29,7 @@ ntpcal_set_timefunc( ) { systime_func_ptr res; - + res = systime_func; if (NULL == nfunc) nfunc = &time; @@ -118,7 +118,7 @@ vint64_to_time( #endif return res; -} +} /* *--------------------------------------------------------------------- @@ -153,7 +153,11 @@ ntpcal_get_build_date( * problem. * */ +#ifdef MKREPRO_DATE + static const char build[] = MKREPRO_TIME "/" MKREPRO_DATE; +#else static const char build[] = __TIME__ "/" __DATE__; +#endif static const char mlist[] = "JanFebMarAprMayJunJulAugSepOctNovDec"; char monstr[4]; @@ -166,7 +170,7 @@ ntpcal_get_build_date( #ifdef DEBUG static int ignore = 0; #endif - + ZERO(*jd); jd->year = 1970; jd->month = 1; @@ -251,7 +255,7 @@ static const uint16_t real_month_table[2][13] = { * in the proleptic Gregorian calendar. The begin of the Christian Era * (0001-01-01) is RD(1). * - * + * * Some notes on the implementation: * * Calendar algorithms thrive on the division operation, which is one of @@ -347,7 +351,7 @@ ntpcal_periodic_extend( char cpl = 0; /* modulo complement flag */ char neg = 0; /* sign change flag */ - /* make the cycle positive and adjust the flags */ + /* make the cycle positive and adjust the flags */ if (cycle < 0) { cycle = - cycle; neg ^= 1; @@ -403,21 +407,21 @@ ntpcal_ntp_to_time( #ifdef HAVE_INT64 - res.q_s = (pivot != NULL) + res.q_s = (pivot != NULL) ? *pivot - : now(); + : now(); res.Q_s -= 0x80000000; /* unshift of half range */ ntp -= (uint32_t)JAN_1970; /* warp into UN*X domain */ ntp -= res.D_s.lo; /* cycle difference */ res.Q_s += (uint64_t)ntp; /* get expanded time */ #else /* no 64bit scalars */ - + time_t tmp; - - tmp = (pivot != NULL) + + tmp = (pivot != NULL) ? *pivot - : now(); + : now(); res = time_to_vint64(&tmp); M_SUB(res.D_s.hi, res.D_s.lo, 0, 0x80000000); ntp -= (uint32_t)JAN_1970; /* warp into UN*X domain */ @@ -461,9 +465,9 @@ ntpcal_ntp_to_ntp( res.Q_s += (uint64_t)ntp; /* get expanded time */ #else /* no 64bit scalars */ - + time_t tmp; - + tmp = (pivot) ? *pivot : now(); @@ -488,7 +492,7 @@ ntpcal_ntp_to_ntp( */ /* - *------------------------------------------------------------------- + *------------------------------------------------------------------- * Split a 64bit seconds value into elapsed days in 'res.hi' and * elapsed seconds since midnight in 'res.lo' using explicit floor * division. This function happily accepts negative time values as @@ -528,7 +532,7 @@ ntpcal_daysplit( isneg = M_ISNEG(op.D_s.hi); if (isneg) M_NEG(op.D_s.hi, op.D_s.lo); - + /* save remainder of DIV 128, shift for divide */ r = op.D_s.lo & 127; /* save remainder bits */ op.D_s.lo = (op.D_s.lo >> 7) | (op.D_s.hi << 25); @@ -568,16 +572,16 @@ ntpcal_daysplit( } else q = ~q + 1; } - + res.hi = q; res.lo = r; -#endif +#endif return res; } /* - *------------------------------------------------------------------- + *------------------------------------------------------------------- * Split a 32bit seconds value into h/m/s and excessive days. This * function happily accepts negative time values as timestamps before * midnight. @@ -628,7 +632,7 @@ ntpcal_split_eradays( { ntpcal_split res; int32_t n400, n100, n004, n001, yday; /* calendar year cycles */ - + /* * Split off calendar cycles, using floor division in the first * step. After that first step, simple division does it because @@ -648,7 +652,7 @@ ntpcal_split_eradays( yday = yday % GREGORIAN_NORMAL_LEAP_CYCLE_DAYS; n001 = yday / DAYSPERYEAR; yday = yday % DAYSPERYEAR; - + /* * check for leap cycle overflows and calculate the leap flag * if needed @@ -661,11 +665,11 @@ ntpcal_split_eradays( *isleapyear = 1; } else if (isleapyear) *isleapyear = (n001 == 3) && ((n004 != 24) || (n100 == 3)); - + /* now merge the cycles to elapsed years, using horner scheme */ res.hi = ((4*n400 + n100)*25 + n004)*4 + n001; res.lo = yday; - + return res; } @@ -720,7 +724,13 @@ ntpcal_rd_to_date( leaps = 0; retv = 0; - /* get day-of-week first */ + /* Get day-of-week first. Since rd is signed, the remainder can + * be in the range [-6..+6], but the assignment to an unsigned + * variable maps the negative values to positive values >=7. + * This makes the sign correction look strange, but adding 7 + * causes the needed wrap-around into the desired value range of + * zero to six, both inclusive. + */ jd->weekday = rd % 7; if (jd->weekday >= 7) /* unsigned! */ jd->weekday += 7; @@ -790,7 +800,7 @@ ntpcal_daysec_to_date( { int32_t days; int ts[3]; - + days = priv_timesplit(ts, sec); jd->hour = (uint8_t)ts[0]; jd->minute = (uint8_t)ts[1]; @@ -813,7 +823,7 @@ ntpcal_daysec_to_tm( { int32_t days; int32_t ts[3]; - + days = priv_timesplit(ts, sec); utm->tm_hour = ts[0]; utm->tm_min = ts[1]; @@ -942,7 +952,7 @@ ntpcal_dayjoin( /* fix sign */ if (isneg) M_NEG(res.D_s.hi, res.D_s.lo); - + /* properly add seconds */ p2 = 0; if (secs < 0) { @@ -953,7 +963,7 @@ ntpcal_dayjoin( } M_ADD(res.D_s.hi, res.D_s.lo, p2, p1); -#endif +#endif return res; } @@ -1275,7 +1285,7 @@ ntpcal_ntp64_to_date( ) { ntpcal_split ds; - + ds = ntpcal_daysplit(ntp); ds.hi += ntpcal_daysec_to_date(jd, ds.lo); @@ -1290,7 +1300,7 @@ ntpcal_ntp_to_date( ) { vint64 ntp64; - + /* * Unfold ntp time around current time into NTP domain. Split * into days and seconds, shift days into CE domain and @@ -1512,12 +1522,12 @@ isocal_split_eraweeks( res.lo += (res.lo >= 10435); cents = res.lo / 5218; res.lo %= 5218; /* res.lo is weeks in century now */ - + /* convert elapsed weeks in century to elapsed years and weeks */ res.lo = res.lo * 157 + bctab[cents]; res.hi += cents * 100 + res.lo / 8192; - res.lo = (res.lo % 8192) / 157; - + res.lo = (res.lo % 8192) / 157; + return res; } @@ -1534,7 +1544,7 @@ isocal_ntp64_to_date( { ntpcal_split ds; int32_t ts[3]; - + /* * Split NTP time into days and seconds, shift days into CE * domain and process the parts. @@ -1561,7 +1571,7 @@ isocal_ntp64_to_date( id->year = (uint16_t)ds.hi + 1; /* shift to current */ id->week = (uint8_t )ds.lo + 1; - return (ds.hi >= 0 && ds.hi < 0xFFFFU); + return (ds.hi >= 0 && ds.hi < 0x0000FFFF); } int @@ -1572,7 +1582,7 @@ isocal_ntp_to_date( ) { vint64 ntp64; - + /* * Unfold ntp time around current time into NTP domain, then * convert the full time stamp. diff --git a/libntp/ntp_crypto_rnd.c b/libntp/ntp_crypto_rnd.c new file mode 100644 index 0000000..96348f2 --- /dev/null +++ b/libntp/ntp_crypto_rnd.c @@ -0,0 +1,113 @@ +/* + * Crypto-quality random number functions + * + * Author: Harlan Stenn, 2014 + * + * This file is Copyright (c) 2014 by Network Time Foundation. + * BSD terms apply: see the file COPYRIGHT in the distribution root for details. + */ + +#include "config.h" +#include +#ifdef HAVE_UNISTD_H +# include +#endif +#include + +#include +#include + +#ifdef USE_OPENSSL_CRYPTO_RAND +#include +#include + +int crypto_rand_init = 0; +#else + +# ifndef HAVE_ARC4RANDOM_BUF +static void +arc4random_buf(void *buf, size_t nbytes); + +void +evutil_secure_rng_get_bytes(void *buf, size_t nbytes); + +static void +arc4random_buf(void *buf, size_t nbytes) +{ + evutil_secure_rng_get_bytes(buf, nbytes); + return; +} +# endif +#endif + +/* + * As of late 2014, here's how we plan to provide cryptographic-quality + * random numbers: + * + * - If we are building with OpenSSL, use RAND_poll() and RAND_bytes(). + * - Otherwise, use arc4random(). + * + * Use of arc4random() can be forced using configure --disable-openssl-random + * + * We can count on arc4random existing, thru the OS or thru libevent. + * The quality of arc4random depends on the implementor. + * + * RAND_poll() doesn't show up until XXX. If it's not present, we + * need to either provide our own or use arc4random(). + */ + +/* + * ntp_crypto_srandom: + * + * Initialize the random number generator, if needed by the underlying + * crypto random number generation mechanism. + */ + +void +ntp_crypto_srandom( + void + ) +{ +#ifdef USE_OPENSSL_CRYPTO_RAND + if (!crypto_rand_init) { + RAND_poll(); + crypto_rand_init = 1; + } +#else + /* No initialization needed for arc4random() */ +#endif +} + + +/* + * ntp_crypto_random_buf: + * + * Returns 0 on success, -1 on error. + */ +int +ntp_crypto_random_buf( + void *buf, + size_t nbytes + ) +{ +#ifdef USE_OPENSSL_CRYPTO_RAND + int rc; + + rc = RAND_bytes(buf, nbytes); + if (1 != rc) { + unsigned long err; + char *err_str; + + err = ERR_get_error(); + err_str = ERR_error_string(err, NULL); + /* XXX: Log the error */ + (void)&err_str; + + return -1; + } + return 0; +#else + arc4random_buf(buf, nbytes); + return 0; +#endif +} diff --git a/libntp/ntp_intres.c b/libntp/ntp_intres.c index 2ac70c1..eea88a1 100644 --- a/libntp/ntp_intres.c +++ b/libntp/ntp_intres.c @@ -684,11 +684,11 @@ blocking_getnameinfo( blocking_gni_resp * gni_resp; size_t octets; size_t resp_octets; - char * host; char * service; char * cp; int rc; time_t time_now; + char host[1024]; gni_req = (void *)((char *)req + sizeof(*req)); @@ -699,19 +699,7 @@ blocking_getnameinfo( * large allocations. We only need room for the host * and service names. */ - NTP_REQUIRE(octets < 1024); - -#ifndef HAVE_ALLOCA - host = emalloc(octets); -#else - host = alloca(octets); - if (NULL == host) { - msyslog(LOG_ERR, - "blocking_getnameinfo unable to allocate %lu octets on stack", - (u_long)octets); - exit(1); - } -#endif + NTP_REQUIRE(octets < sizeof(host)); service = host + gni_req->hostoctets; worker_ctx = get_worker_context(c, gni_req->dns_idx); @@ -793,9 +781,6 @@ blocking_getnameinfo( rc = queue_blocking_response(c, resp, resp_octets, req); if (rc) msyslog(LOG_ERR, "blocking_getnameinfo unable to queue response"); -#ifndef HAVE_ALLOCA - free(host); -#endif return rc; } diff --git a/libntp/ntp_lineedit.c b/libntp/ntp_lineedit.c index c5aad31..e3bc002 100644 --- a/libntp/ntp_lineedit.c +++ b/libntp/ntp_lineedit.c @@ -178,23 +178,22 @@ ntp_readline( if (NULL != line) { if (*line) { add_history(line); - *pcount = strlen(line); - } else { - free(line); - line = NULL; } + *pcount = strlen(line); } #endif /* LE_READLINE */ #ifdef LE_EDITLINE cline = el_gets(ntp_el, pcount); - if (NULL != cline && *cline) { + if (NULL != cline) { history(ntp_hist, &hev, H_ENTER, cline); - *pcount = strlen(cline); line = estrdup(cline); - } else + } else if (*pcount == -1) { line = NULL; + } else { + line = estrdup(""); + } #endif /* LE_EDITLINE */ #ifdef LE_NONE diff --git a/libntp/octtoint.c b/libntp/octtoint.c index d189e40..e519601 100644 --- a/libntp/octtoint.c +++ b/libntp/octtoint.c @@ -24,7 +24,7 @@ octtoint( u = 0; while (*cp != '\0') { - if (!isdigit((int)*cp) || *cp == '8' || *cp == '9') + if (!isdigit((unsigned char)*cp) || *cp == '8' || *cp == '9') return 0; if (u >= 0x20000000) return 0; /* overflow */ diff --git a/libntp/prettydate.c b/libntp/prettydate.c index f121297..5da5ecc 100644 --- a/libntp/prettydate.c +++ b/libntp/prettydate.c @@ -133,7 +133,7 @@ get_struct_tm( if (--folds < MINFOLD) return NULL; ts += SOLAR_CYCLE_SECS; - } else if (ts >= SOLAR_CYCLE_SECS) { + } else if (ts >= (time_t)SOLAR_CYCLE_SECS) { if (++folds > MAXFOLD) return NULL; ts -= SOLAR_CYCLE_SECS; @@ -157,10 +157,10 @@ common_prettydate( int local ) { - static const char* pfmt[2] = { - "%08lx.%08lx %s, %s %2d %4d %2d:%02d:%02d.%03u", - "%08lx.%08lx [%s, %s %2d %4d %2d:%02d:%02d.%03u UTC]" - }; + static const char pfmt0[] = + "%08lx.%08lx %s, %s %2d %4d %2d:%02d:%02d.%03u"; + static const char pfmt1[] = + "%08lx.%08lx [%s, %s %2d %4d %2d:%02d:%02d.%03u UTC]"; char *bp; struct tm *tm; @@ -186,13 +186,13 @@ common_prettydate( */ struct calendar jd; ntpcal_time_to_date(&jd, &sec); - snprintf(bp, LIB_BUFLENGTH, pfmt[local != 0], + snprintf(bp, LIB_BUFLENGTH, local ? pfmt1 : pfmt0, (u_long)ts->l_ui, (u_long)ts->l_uf, daynames[jd.weekday], months[jd.month-1], jd.monthday, jd.year, jd.hour, jd.minute, jd.second, msec); } else - snprintf(bp, LIB_BUFLENGTH, pfmt[0], + snprintf(bp, LIB_BUFLENGTH, pfmt0, (u_long)ts->l_ui, (u_long)ts->l_uf, daynames[tm->tm_wday], months[tm->tm_mon], tm->tm_mday, 1900 + tm->tm_year, tm->tm_hour, diff --git a/libntp/ssl_init.c b/libntp/ssl_init.c index 7f1e9a0..a9d1d54 100644 --- a/libntp/ssl_init.c +++ b/libntp/ssl_init.c @@ -96,13 +96,13 @@ keytype_from_text( LIB_GETBUF(upcased); strlcpy(upcased, text, LIB_BUFLENGTH); for (pch = upcased; '\0' != *pch; pch++) - *pch = (char)toupper(*pch); + *pch = (char)toupper((unsigned char)*pch); key_type = OBJ_sn2nid(upcased); #else key_type = 0; #endif - if (!key_type && 'm' == tolower(text[0])) + if (!key_type && 'm' == tolower((unsigned char)text[0])) key_type = NID_md5; if (!key_type) diff --git a/libntp/timetoa.c b/libntp/timetoa.c index c04d34e..f294e16 100644 --- a/libntp/timetoa.c +++ b/libntp/timetoa.c @@ -57,14 +57,12 @@ format_time_fraction( u_int u; long fraclimit; int notneg; /* flag for non-negative value */ - const char * fmt; ldiv_t qr; DEBUG_REQUIRE(prec != 0); LIB_GETBUF(cp); secs_u = (u_time)secs; - fmt = "-%" UTIME_FORMAT ".%0*ld"; /* check if we need signed or unsigned mode */ notneg = (prec < 0); @@ -92,9 +90,7 @@ format_time_fraction( /* Get the absolute value of the split representation time. */ notneg = notneg || ((time_t)secs_u >= 0); - if (notneg) { - fmt++; /* skip '-' */ - } else { + if (!notneg) { secs_u = ~secs_u; if (0 == frac) secs_u++; @@ -103,7 +99,8 @@ format_time_fraction( } /* finally format the data and return the result */ - snprintf(cp, LIB_BUFLENGTH, fmt, secs_u, prec_u, frac); + snprintf(cp, LIB_BUFLENGTH, "%s%" UTIME_FORMAT ".%0*ld", + notneg? "" : "-", secs_u, prec_u, frac); return cp; } diff --git a/libntp/work_fork.c b/libntp/work_fork.c index 10329e7..dab02bc 100644 --- a/libntp/work_fork.c +++ b/libntp/work_fork.c @@ -382,7 +382,7 @@ fork_blocking_child( int rc; int was_pipe; int is_pipe; - int saved_errno; + int saved_errno = 0; int childpid; int keep_fd; int fd; diff --git a/libparse/Makefile.am b/libparse/Makefile.am index a92db15..2988e08 100644 --- a/libparse/Makefile.am +++ b/libparse/Makefile.am @@ -1,5 +1,5 @@ NULL= -BUILT_SOURCES = +BUILT_SOURCES = $(VPHACK) info_trimble.c $(VPHACK_AFTER) CLEANFILES = noinst_LIBRARIES = @MAKE_LIBPARSE@ @MAKE_LIBPARSE_KERNEL@ EXTRA_LIBRARIES = libparse.a libparse_kernel.a @@ -12,6 +12,29 @@ K_CFLAGS = -DPARSESTREAM -DNTP_NEED_BOPS # previously. It is located in $(srcdir) and any updates must # end up there. +# +# VPHACK and VPHACK_AFTER are enabled on non-GNU makes (such as +# BSD make) to work around build/dependency issues where we want +# built source files to live in srcdir, as opposed to builddir. +# + +if VPATH_HACK +VPHACK= vphack +VPHACK_AFTER= vphack_after +else +VPHACK= +VPHACK_AFTER= +endif + +vphack: + test -e info_trimble.c || ln -s $(srcdir)/info_trimble.c . + +vphack_after: + test -L info_trimble.c || ( \ + mv info_trimble.c $(srcdir)/info_trimble.c && \ + ln -s $(srcdir)/info_trimble.c . \ + ) + libparse_a_SOURCES = parse.c \ parse_conf.c \ clk_meinberg.c \ @@ -65,11 +88,16 @@ AM_CPPFLAGS += $(CPPFLAGS_NTP) EXTRA_DIST = parsesolaris.c parsestreams.c mkinfo_scmd.sed mkinfo_rcmd.sed info_trimble.c -$(srcdir)/info_trimble.c: $(top_srcdir)/include/trimble.h $(srcdir)/Makefile.am $(srcdir)/mkinfo_scmd.sed $(srcdir)/mkinfo_rcmd.sed +info_trimble.c: $(top_srcdir)/include/trimble.h $(srcdir)/Makefile.am $(srcdir)/mkinfo_scmd.sed $(srcdir)/mkinfo_rcmd.sed sed -n -f $(srcdir)/mkinfo_scmd.sed $(top_srcdir)/include/trimble.h > info_trimble.new sed -n -f $(srcdir)/mkinfo_rcmd.sed $(top_srcdir)/include/trimble.h >> info_trimble.new mv -f info_trimble.new $@ +#$(srcdir)/info_trimble.c: $(top_srcdir)/include/trimble.h $(srcdir)/Makefile.am $(srcdir)/mkinfo_scmd.sed $(srcdir)/mkinfo_rcmd.sed +# sed -n -f $(srcdir)/mkinfo_scmd.sed $(top_srcdir)/include/trimble.h > info_trimble.new +# sed -n -f $(srcdir)/mkinfo_rcmd.sed $(top_srcdir)/include/trimble.h >> info_trimble.new +# mv -f info_trimble.new $@ + kieee754io.o: $(srcdir)/ieee754io.c $(COMPILE) $(K_CFLAGS) -c $(srcdir)/ieee754io.c -o $@ diff --git a/libparse/Makefile.in b/libparse/Makefile.in index 0344c96..11dbc38 100644 --- a/libparse/Makefile.in +++ b/libparse/Makefile.in @@ -43,8 +43,7 @@ subdir = libparse ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap-thread-check.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap.m4 \ + $(top_srcdir)/sntp/m4/ax_c99_struct_init.m4 \ $(top_srcdir)/sntp/m4/define_dir.m4 \ $(top_srcdir)/sntp/m4/hms_search_lib.m4 \ $(top_srcdir)/sntp/m4/libtool.m4 \ @@ -55,6 +54,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_cacheversion.m4 \ $(top_srcdir)/sntp/m4/ntp_compiler.m4 \ $(top_srcdir)/sntp/m4/ntp_crosscompile.m4 \ + $(top_srcdir)/sntp/m4/ntp_crypto_rand.m4 \ $(top_srcdir)/sntp/m4/ntp_debug.m4 \ $(top_srcdir)/sntp/m4/ntp_dir_sep.m4 \ $(top_srcdir)/sntp/m4/ntp_facilitynames.m4 \ @@ -72,6 +72,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_sntp.m4 \ $(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \ $(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \ + $(top_srcdir)/sntp/m4/openldap-thread-check.m4 \ + $(top_srcdir)/sntp/m4/openldap.m4 \ $(top_srcdir)/sntp/m4/os_cflags.m4 \ $(top_srcdir)/sntp/m4/snprintf.m4 \ $(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac @@ -175,6 +177,7 @@ CHUTEST = @CHUTEST@ CONFIG_SHELL = @CONFIG_SHELL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_LIBEVENT = @CPPFLAGS_LIBEVENT@ CPPFLAGS_NTP = @CPPFLAGS_NTP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -209,7 +212,9 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ +LDADD_LIBEVENT = @LDADD_LIBEVENT@ LDADD_LIBNTP = @LDADD_LIBNTP@ +LDADD_LIBUTIL = @LDADD_LIBUTIL@ LDADD_NLIST = @LDADD_NLIST@ LDADD_NTP = @LDADD_NTP@ LDFLAGS = @LDFLAGS@ @@ -348,6 +353,11 @@ TIMETRIM_DL = @TIMETRIM_DL@ TIMETRIM_DS = @TIMETRIM_DS@ TIMETRIM_MS = @TIMETRIM_MS@ TIMETRIM_NI = @TIMETRIM_NI@ +UPDATE_LEAP_DB = @UPDATE_LEAP_DB@ +UPDATE_LEAP_DL = @UPDATE_LEAP_DL@ +UPDATE_LEAP_DS = @UPDATE_LEAP_DS@ +UPDATE_LEAP_MS = @UPDATE_LEAP_MS@ +UPDATE_LEAP_NI = @UPDATE_LEAP_NI@ VERSION = @VERSION@ VER_SUFFIX = @VER_SUFFIX@ YACC = @YACC@ @@ -407,16 +417,27 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ NULL = -BUILT_SOURCES = check-libntp .deps-ver +BUILT_SOURCES = $(VPHACK) info_trimble.c $(VPHACK_AFTER) check-libntp \ + .deps-ver CLEANFILES = check-libntp .deps-ver noinst_LIBRARIES = @MAKE_LIBPARSE@ @MAKE_LIBPARSE_KERNEL@ EXTRA_LIBRARIES = libparse.a libparse_kernel.a noinst_PROGRAMS = @MAKE_PARSEKMODULE@ K_CFLAGS = -DPARSESTREAM -DNTP_NEED_BOPS +@VPATH_HACK_FALSE@VPHACK = # info_trimble.c was mistakenly created in the build directory # previously. It is located in $(srcdir) and any updates must # end up there. + +# +# VPHACK and VPHACK_AFTER are enabled on non-GNU makes (such as +# BSD make) to work around build/dependency issues where we want +# built source files to live in srcdir, as opposed to builddir. +# +@VPATH_HACK_TRUE@VPHACK = vphack +@VPATH_HACK_FALSE@VPHACK_AFTER = +@VPATH_HACK_TRUE@VPHACK_AFTER = vphack_after libparse_a_SOURCES = parse.c \ parse_conf.c \ clk_meinberg.c \ @@ -793,11 +814,25 @@ uninstall-am: tags uninstall uninstall-am -$(srcdir)/info_trimble.c: $(top_srcdir)/include/trimble.h $(srcdir)/Makefile.am $(srcdir)/mkinfo_scmd.sed $(srcdir)/mkinfo_rcmd.sed +vphack: + test -e info_trimble.c || ln -s $(srcdir)/info_trimble.c . + +vphack_after: + test -L info_trimble.c || ( \ + mv info_trimble.c $(srcdir)/info_trimble.c && \ + ln -s $(srcdir)/info_trimble.c . \ + ) + +info_trimble.c: $(top_srcdir)/include/trimble.h $(srcdir)/Makefile.am $(srcdir)/mkinfo_scmd.sed $(srcdir)/mkinfo_rcmd.sed sed -n -f $(srcdir)/mkinfo_scmd.sed $(top_srcdir)/include/trimble.h > info_trimble.new sed -n -f $(srcdir)/mkinfo_rcmd.sed $(top_srcdir)/include/trimble.h >> info_trimble.new mv -f info_trimble.new $@ +#$(srcdir)/info_trimble.c: $(top_srcdir)/include/trimble.h $(srcdir)/Makefile.am $(srcdir)/mkinfo_scmd.sed $(srcdir)/mkinfo_rcmd.sed +# sed -n -f $(srcdir)/mkinfo_scmd.sed $(top_srcdir)/include/trimble.h > info_trimble.new +# sed -n -f $(srcdir)/mkinfo_rcmd.sed $(top_srcdir)/include/trimble.h >> info_trimble.new +# mv -f info_trimble.new $@ + kieee754io.o: $(srcdir)/ieee754io.c $(COMPILE) $(K_CFLAGS) -c $(srcdir)/ieee754io.c -o $@ diff --git a/libparse/clk_computime.c b/libparse/clk_computime.c index 1068576..5026232 100644 --- a/libparse/clk_computime.c +++ b/libparse/clk_computime.c @@ -7,15 +7,15 @@ * /src/NTP/ntp4-dev/libparse/clk_computime.c,v 4.10 2005/04/16 17:32:10 kardel RELEASE_20050508_A * * clk_computime.c,v 4.10 2005/04/16 17:32:10 kardel RELEASE_20050508_A - * + * * Supports Diem's Computime Radio Clock - * + * * Used the Meinberg clock as a template for Diem's Computime Radio Clock * * adapted by Alois Camenzind - * + * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -59,22 +59,22 @@ extern int printf (const char *, ...); /* * The Computime receiver sends a datagram in the following format every minute - * - * Timestamp T:YY:MM:MD:WD:HH:MM:SSCRLF + * + * Timestamp T:YY:MM:MD:WD:HH:MM:SSCRLF * Pos 0123456789012345678901 2 3 * 0000000000111111111122 2 2 * Parse T: : : : : : : rn - * - * T Startcharacter "T" specifies start of the timestamp - * YY Year MM Month 1-12 - * MD Day of the month - * WD Day of week - * HH Hour - * MM Minute + * + * T Startcharacter "T" specifies start of the timestamp + * YY Year MM Month 1-12 + * MD Day of the month + * WD Day of week + * HH Hour + * MM Minute * SS Second - * CR Carriage return + * CR Carriage return * LF Linefeed - * + * */ static struct format computime_fmt = @@ -88,10 +88,10 @@ static struct format computime_fmt = 0 }; -static u_long cvt_computime (unsigned char *, int, struct format *, clocktime_t *, void *); -static unsigned long inp_computime (parse_t *, unsigned int, timestamp_t *); +static parse_cvt_fnc_t cvt_computime; +static parse_inp_fnc_t inp_computime; -clockformat_t clock_computime = +clockformat_t clock_computime = { inp_computime, /* Computime input handling */ cvt_computime, /* Computime conversion */ @@ -99,15 +99,15 @@ clockformat_t clock_computime = (void *)&computime_fmt, /* conversion configuration */ "Diem's Computime Radio Clock", /* Computime Radio Clock */ 24, /* string buffer */ - 0 /* no private data (complete pakets) */ + 0 /* no private data (complete packets) */ }; /* - * cvt_computime - * + * parse_cvt_fnc_t cvt_computime + * * convert simple type format */ -static u_long +static u_long cvt_computime( unsigned char *buffer, int size, @@ -117,7 +117,7 @@ cvt_computime( ) { - if (!Strok(buffer, format->fixed_string)) { + if (!Strok(buffer, format->fixed_string)) { return CVT_NONE; } else { if (Stoi(&buffer[format->field_offsets[O_DAY].offset], &clock_time->day, @@ -131,7 +131,7 @@ cvt_computime( Stoi(&buffer[format->field_offsets[O_MIN].offset], &clock_time->minute, format->field_offsets[O_MIN].length) || Stoi(&buffer[format->field_offsets[O_SEC].offset], &clock_time->second, - format->field_offsets[O_SEC].length)) { + format->field_offsets[O_SEC].length)) { return CVT_FAIL | CVT_BADFMT; } else { @@ -144,31 +144,31 @@ cvt_computime( } /* - * inp_computime + * parse_inp_fnc_t inp_computime * - * grep data from input stream + * grab data from input stream */ static u_long inp_computime( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { unsigned int rtc; - + parseprintf(DD_PARSE, ("inp_computime(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); - + switch (ch) { case 'T': parseprintf(DD_PARSE, ("inp_computime: START seen\n")); - + parseio->parse_index = 1; parseio->parse_data[0] = ch; parseio->parse_dtime.parse_stime = *tstamp; /* collect timestamp */ return PARSE_INP_SKIP; - + case '\n': parseprintf(DD_PARSE, ("inp_computime: END seen\n")); if ((rtc = parse_addchar(parseio, ch)) == PARSE_INP_SKIP) diff --git a/libparse/clk_dcf7000.c b/libparse/clk_dcf7000.c index bfd9a74..f1da9ef 100644 --- a/libparse/clk_dcf7000.c +++ b/libparse/clk_dcf7000.c @@ -1,12 +1,12 @@ /* * /src/NTP/ntp4-dev/libparse/clk_dcf7000.c,v 4.10 2005/04/16 17:32:10 kardel RELEASE_20050508_A - * + * * clk_dcf7000.c,v 4.10 2005/04/16 17:32:10 kardel RELEASE_20050508_A * * ELV DCF7000 module * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -63,9 +63,10 @@ static struct format dcf7000_fmt = }, (const unsigned char *)" - - - - - - - \r", 0 -}; -static u_long cvt_dcf7000 (unsigned char *, int, struct format *, clocktime_t *, void *); -static unsigned long inp_dcf7000 (parse_t *, unsigned int, timestamp_t *); +}; + +static parse_cvt_fnc_t cvt_dcf7000; +static parse_inp_fnc_t inp_dcf7000; clockformat_t clock_dcf7000 = { @@ -75,11 +76,11 @@ clockformat_t clock_dcf7000 = (void *)&dcf7000_fmt, /* conversion configuration */ "ELV DCF7000", /* ELV clock */ 24, /* string buffer */ - 0 /* no private data (complete pakets) */ + 0 /* no private data (complete packets) */ }; /* - * cvt_dcf7000 + * parse_cvt_fnc_t cvt_dcf7000 * * convert dcf7000 type format */ @@ -117,7 +118,7 @@ cvt_dcf7000( { unsigned char *f = &buffer[format->field_offsets[O_FLAGS].offset]; long flags; - + clock_time->flags = 0; clock_time->usecond = 0; @@ -144,21 +145,21 @@ cvt_dcf7000( } /* - * inp_dcf700 + * parse_inp_fnc_t inp_dcf700 * - * grep data from input stream + * grab data from input stream */ static u_long inp_dcf7000( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { unsigned int rtc; - + parseprintf(DD_PARSE, ("inp_dcf7000(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); - + switch (ch) { case '\r': diff --git a/libparse/clk_hopf6021.c b/libparse/clk_hopf6021.c index 033d2d2..357ac2e 100644 --- a/libparse/clk_hopf6021.c +++ b/libparse/clk_hopf6021.c @@ -37,10 +37,10 @@ extern int printf (const char *, ...); #endif -/* - * hopf Funkuhr 6021 +/* + * hopf Funkuhr 6021 * used with 9600,8N1, - * UTC ueber serielle Schnittstelle + * UTC ueber serielle Schnittstelle * Sekundenvorlauf ON * ETX zum Sekundenvorlauf ON * Datenstring 6021 @@ -71,7 +71,7 @@ extern int printf (const char *, ...); * x x 0 x - Wintertime * x x 1 x - Summertime * 0 0 x x - Time/Date invalid - * 0 1 x x - Internal clock used + * 0 1 x x - Internal clock used * 1 0 x x - Radio clock * 1 1 x x - Radio clock highprecision * @@ -90,10 +90,10 @@ extern int printf (const char *, ...); #define HOPF_DSTWARN 0x01 /* DST switch warning */ #define HOPF_DST 0x02 /* DST in effect */ -#define HOPF_MODE 0x0C /* operation mode mask */ +#define HOPF_MODE 0x0C /* operation mode mask */ #define HOPF_INVALID 0x00 /* no time code available */ #define HOPF_INTERNAL 0x04 /* internal clock */ -#define HOPF_RADIO 0x08 /* radio clock */ +#define HOPF_RADIO 0x08 /* radio clock */ #define HOPF_RADIOHP 0x0C /* high precision radio clock */ #define HOPF_UTC 0x08 /* time code in UTC */ @@ -102,13 +102,13 @@ extern int printf (const char *, ...); static struct format hopf6021_fmt = { { - { 9, 2 }, {11, 2}, { 13, 2}, /* Day, Month, Year */ - { 3, 2 }, { 5, 2}, { 7, 2}, /* Hour, Minute, Second */ + { 9, 2 }, {11, 2}, { 13, 2}, /* Day, Month, Year */ + { 3, 2 }, { 5, 2}, { 7, 2}, /* Hour, Minute, Second */ { 2, 1 }, { 1, 1}, { 0, 0}, /* Weekday, Flags, Zone */ /* ... */ }, (const unsigned char *)"\002 \n\r\003", - 0 + 0 }; #define OFFS(x) format->field_offsets[(x)].offset @@ -118,8 +118,8 @@ static struct format hopf6021_fmt = ('A' <= (x) && (x) <= 'F') ? (x) - 'A' + 10 : \ -1) -static unsigned long cvt_hopf6021 (unsigned char *, int, struct format *, clocktime_t *, void *); -static unsigned long inp_hopf6021 (parse_t *, unsigned int, timestamp_t *); +static parse_cvt_fnc_t cvt_hopf6021; +static parse_inp_fnc_t inp_hopf6021; clockformat_t clock_hopf6021 = { @@ -132,7 +132,8 @@ clockformat_t clock_hopf6021 = 0 /* private data length, no private data */ }; -static unsigned long +/* parse_cvt_fnc_t cvt_hopf6021 */ +static u_long cvt_hopf6021( unsigned char *buffer, int size, @@ -162,8 +163,8 @@ cvt_hopf6021( clock_time->usecond = 0; clock_time->utcoffset = 0; - status = hexval(buffer[OFFS(O_FLAGS)]); - weekday= hexval(buffer[OFFS(O_WDAY)]); + status = (u_char) hexval(buffer[OFFS(O_FLAGS)]); + weekday= (u_char) hexval(buffer[OFFS(O_WDAY)]); if ((status == 0xFF) || (weekday == 0xFF)) { @@ -213,21 +214,21 @@ cvt_hopf6021( } /* - * inp_hopf6021 + * parse_inp_fnc_t inp_hopf6021 * - * grep data from input stream + * grab data from input stream */ static u_long inp_hopf6021( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { unsigned int rtc; - + parseprintf(DD_PARSE, ("inp_hopf6021(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); - + switch (ch) { case ETX: diff --git a/libparse/clk_meinberg.c b/libparse/clk_meinberg.c index bc0ac0e..4047be5 100644 --- a/libparse/clk_meinberg.c +++ b/libparse/clk_meinberg.c @@ -1,12 +1,12 @@ /* * /src/NTP/REPOSITORY/ntp4-dev/libparse/clk_meinberg.c,v 4.12.2.1 2005/09/25 10:22:35 kardel RELEASE_20050925_A - * + * * clk_meinberg.c,v 4.12.2.1 2005/09/25 10:22:35 kardel RELEASE_20050925_A * * Meinberg clock support * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -65,7 +65,7 @@ /* * The Meinberg receiver every second sends a datagram of the following form * (Standard Format) - * + * * D:
    ..;T:;U:::; * pos: 0 00 00 0 00 0 11 111 1 111 12 2 22 2 22 2 2 2 3 3 3 * 1 23 45 6 78 9 01 234 5 678 90 1 23 4 56 7 8 9 0 1 2 @@ -105,12 +105,14 @@ * = '!' during the hour preceeding an daylight saving time * start/end change * = 'A' LEAP second announcement - * = 'R' alternate antenna + * = 'R' "call bit" used to signalize irregularities in the control facilities, + * usually ' ', until 2003 indicated transmission via alternate antenna * - * Meinberg GPS166 receiver + * Meinberg GPS receivers * - * You must get the Uni-Erlangen firmware for the GPS receiver support + * For very old devices you must get the Uni-Erlangen firmware for the GPS receiver support * to work to full satisfaction ! + * With newer GPS receiver types the Uni Erlangen string format can be configured at the device. * *
    ..; ; ::; <+/-><00:00>; ; * @@ -118,7 +120,7 @@ * 123456789012345678901234567890123456789012345678901234567890123456 * \x0209.07.93; 5; 08:48:26; +00:00; #*S!A L; 49.5736N 11.0280E 373m\x03 * - * + * * = '\002' ASCII start of text * = '\003' ASCII end of text *
    ,, = day, month, year(2 digits!!) @@ -131,8 +133,10 @@ * = '!' during the hour preceeding an daylight saving time * start/end change * = 'A' LEAP second announcement - * = 'R' alternate antenna (reminiscent of PZF535) usually ' ' - * = 'L' on 23:59:60 + * = 'R' "call bit" used to signalize irregularities in the control facilities, + * usually ' ', until 2003 indicated transmission via alternate antenna + * (reminiscent of PZF receivers) + * = 'L' on 23:59:60 * * Binary messages have a lead in for a fixed header of SOH */ @@ -150,19 +154,20 @@ /* Ret val: the checksum */ /*+-------------------------------------------------------------*/ -unsigned long +CSUM mbg_csum( unsigned char *p, unsigned int n ) { - unsigned long sum = 0; - short i; - + unsigned int sum = 0; + unsigned int i; + for ( i = 0; i < n; i++ ) sum += *p++; - - return( sum ); + + return (CSUM) sum; + } /* csum */ void @@ -171,10 +176,10 @@ get_mbg_header( GPS_MSG_HDR *headerp ) { - headerp->gps_cmd = get_lsb_short(bufpp); - headerp->gps_len = get_lsb_short(bufpp); - headerp->gps_data_csum = get_lsb_short(bufpp); - headerp->gps_hdr_csum = get_lsb_short(bufpp); + headerp->cmd = (GPS_CMD) get_lsb_short(bufpp); + headerp->len = get_lsb_uint16(bufpp); + headerp->data_csum = (CSUM) get_lsb_short(bufpp); + headerp->hdr_csum = (CSUM) get_lsb_short(bufpp); } static struct format meinberg_fmt[] = @@ -209,10 +214,10 @@ static struct format meinberg_fmt[] = } }; -static u_long cvt_meinberg (unsigned char *, int, struct format *, clocktime_t *, void *); -static u_long cvt_mgps (unsigned char *, int, struct format *, clocktime_t *, void *); -static u_long mbg_input (parse_t *, unsigned int, timestamp_t *); -static u_long gps_input (parse_t *, unsigned int, timestamp_t *); +static parse_cvt_fnc_t cvt_meinberg; +static parse_cvt_fnc_t cvt_mgps; +static parse_inp_fnc_t mbg_input; +static parse_inp_fnc_t gps_input; struct msg_buf { @@ -224,7 +229,7 @@ struct msg_buf #define MBG_HEADER 1 /* receiving header */ #define MBG_DATA 2 /* receiving data */ #define MBG_STRING 3 /* receiving standard data message */ - + clockformat_t clock_meinberg[] = { { @@ -234,7 +239,7 @@ clockformat_t clock_meinberg[] = 0, /* conversion configuration */ "Meinberg Standard", /* Meinberg simple format - beware */ 32, /* string buffer */ - 0 /* no private data (complete pakets) */ + 0 /* no private data (complete packets) */ }, { mbg_input, /* normal input handling */ @@ -243,21 +248,21 @@ clockformat_t clock_meinberg[] = 0, /* conversion configuration */ "Meinberg Extended", /* Meinberg enhanced format */ 32, /* string buffer */ - 0 /* no private data (complete pakets) */ + 0 /* no private data (complete packets) */ }, { gps_input, /* no input handling */ - cvt_mgps, /* Meinberg GPS166 conversion */ + cvt_mgps, /* Meinberg GPS receiver conversion */ pps_one, /* easy PPS monitoring */ (void *)&meinberg_fmt[2], /* conversion configuration */ - "Meinberg GPS Extended", /* Meinberg FAU GPS format */ + "Meinberg GPS Extended", /* Meinberg FAU GPS format */ 512, /* string buffer */ - sizeof(struct msg_buf) /* no private data (complete pakets) */ + sizeof(struct msg_buf) /* no private data (complete packets) */ } }; /* - * cvt_meinberg + * parse_cvt_fnc_t cvt_meinberg * * convert simple type format */ @@ -271,7 +276,7 @@ cvt_meinberg( ) { struct format *format; - + /* * select automagically correct data format */ @@ -312,7 +317,7 @@ cvt_meinberg( else { unsigned char *f = &buffer[format->field_offsets[O_FLAGS].offset]; - + clock_time->usecond = 0; clock_time->flags = PARSEB_S_LEAP; @@ -348,7 +353,7 @@ cvt_meinberg( case ' ': clock_time->utcoffset = -1*60*60; /* MET */ break; - + case 'S': clock_time->utcoffset = -2*60*60; /* MED */ break; @@ -360,27 +365,27 @@ cvt_meinberg( clock_time->utcoffset = 0; /* UTC */ clock_time->flags |= PARSEB_UTC; break; - + default: return CVT_FAIL|CVT_BADFMT; } } - + /* * gather status flags */ if (buffer[format->field_offsets[O_ZONE].offset] == 'S') clock_time->flags |= PARSEB_DST; - + if (f[0] == '#') clock_time->flags |= PARSEB_POWERUP; - + if (f[1] == '*') clock_time->flags |= PARSEB_NOSYNC; - + if (f[3] == '!') clock_time->flags |= PARSEB_ANNOUNCE; - + /* * oncoming leap second * 'a' code not confirmed - earth is not @@ -388,27 +393,27 @@ cvt_meinberg( */ if (f[3] == 'A') clock_time->flags |= PARSEB_LEAPADD; - + if (f[3] == 'a') clock_time->flags |= PARSEB_LEAPDEL; - - + + if (format->flags & MBG_EXTENDED) { clock_time->flags |= PARSEB_S_ANTENNA; - + /* * DCF77 does not encode the direction - * so we take the current default - * earth slowing down */ clock_time->flags &= ~PARSEB_LEAPDEL; - + if (f[4] == 'A') clock_time->flags |= PARSEB_LEAPADD; - + if (f[5] == 'R') - clock_time->flags |= PARSEB_ALTERNATE; + clock_time->flags |= PARSEB_CALLBIT; } return CVT_OK; } @@ -416,31 +421,31 @@ cvt_meinberg( /* - * mbg_input + * parse_inp_fnc_t mbg_input * - * grep data from input stream + * grab data from input stream */ static u_long mbg_input( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { unsigned int rtc; - + parseprintf(DD_PARSE, ("mbg_input(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); - + switch (ch) { case STX: parseprintf(DD_PARSE, ("mbg_input: STX seen\n")); - + parseio->parse_index = 1; parseio->parse_data[0] = ch; parseio->parse_dtime.parse_stime = *tstamp; /* collect timestamp */ return PARSE_INP_SKIP; - + case ETX: parseprintf(DD_PARSE, ("mbg_input: ETX seen\n")); if ((rtc = parse_addchar(parseio, ch)) == PARSE_INP_SKIP) @@ -455,7 +460,7 @@ mbg_input( /* - * cvt_mgps + * parse_cvt_fnc_t cvt_mgps * * convert Meinberg GPS format */ @@ -493,9 +498,9 @@ cvt_mgps( { long h; unsigned char *f = &buffer[format->field_offsets[O_FLAGS].offset]; - + clock_time->flags = PARSEB_S_LEAP|PARSEB_S_POSITION; - + clock_time->usecond = 0; /* @@ -522,22 +527,22 @@ cvt_mgps( clock_time->utcoffset = -clock_time->utcoffset; } } - + /* * gather status flags */ if (buffer[format->field_offsets[O_ZONE].offset] == 'S') clock_time->flags |= PARSEB_DST; - + if (clock_time->utcoffset == 0) clock_time->flags |= PARSEB_UTC; - + /* * no sv's seen - no time & position */ if (f[0] == '#') clock_time->flags |= PARSEB_POWERUP; - + /* * at least one sv seen - time (for last position) */ @@ -546,13 +551,13 @@ cvt_mgps( else if (!(clock_time->flags & PARSEB_POWERUP)) clock_time->flags |= PARSEB_POSITION; - + /* * oncoming zone switch */ if (f[3] == '!') clock_time->flags |= PARSEB_ANNOUNCE; - + /* * oncoming leap second * 'a' code not confirmed - earth is not @@ -560,14 +565,14 @@ cvt_mgps( */ if (f[4] == 'A') clock_time->flags |= PARSEB_LEAPADD; - + if (f[4] == 'a') clock_time->flags |= PARSEB_LEAPDEL; /* * f[5] == ' ' */ - + /* * this is the leap second */ @@ -580,35 +585,35 @@ cvt_mgps( } /* - * gps_input + * parse_inp_fnc_t gps_input * * grep binary data from input stream */ static u_long gps_input( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { CSUM calc_csum; /* used to compare the incoming csums */ GPS_MSG_HDR header; struct msg_buf *msg_buf; - + msg_buf = (struct msg_buf *)parseio->parse_pdata; parseprintf(DD_PARSE, ("gps_input(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); if (!msg_buf) return PARSE_INP_SKIP; - + if ( msg_buf->phase == MBG_NONE ) { /* not receiving yet */ switch (ch) { case SOH: parseprintf(DD_PARSE, ("gps_input: SOH seen\n")); - + msg_buf->len = sizeof( header ); /* prepare to receive msg header */ msg_buf->phase = MBG_HEADER; /* receiving header */ break; @@ -621,7 +626,7 @@ gps_input( parseio->parse_index = 1; parseio->parse_data[0] = ch; break; - + default: return PARSE_INP_SKIP; /* keep searching */ } @@ -638,7 +643,7 @@ gps_input( if ((msg_buf->phase == MBG_STRING) && (parseio->parse_index < parseio->parse_dsize)) parseio->parse_data[parseio->parse_index++] = ch; - + parseio->parse_dtime.parse_msg[parseio->parse_dtime.parse_msglen++] = ch; if (parseio->parse_dtime.parse_msglen > sizeof(parseio->parse_dtime.parse_msg)) @@ -649,7 +654,7 @@ gps_input( parseio->parse_ldsize = parseio->parse_index; return PARSE_INP_DATA; } - + switch (msg_buf->phase) { case MBG_HEADER: @@ -685,41 +690,41 @@ gps_input( if ( msg_buf->phase == MBG_HEADER ) { /* header complete now */ unsigned char *datap = parseio->parse_dtime.parse_msg + 1; - + get_mbg_header(&datap, &header); - + parseprintf(DD_PARSE, ("gps_input: header: cmd 0x%x, len %d, dcsum 0x%x, hcsum 0x%x\n", - (int)header.gps_cmd, (int)header.gps_len, (int)header.gps_data_csum, - (int)header.gps_hdr_csum)); - + (int)header.cmd, (int)header.len, (int)header.data_csum, + (int)header.hdr_csum)); + calc_csum = mbg_csum( (unsigned char *) parseio->parse_dtime.parse_msg + 1, (unsigned short)6 ); - if ( calc_csum != header.gps_hdr_csum ) + if ( calc_csum != header.hdr_csum ) { parseprintf(DD_PARSE, ("gps_input: header checksum mismatch expected 0x%x, got 0x%x\n", (int)calc_csum, (int)mbg_csum( (unsigned char *) parseio->parse_dtime.parse_msg, (unsigned short)6 ))); - + msg_buf->phase = MBG_NONE; /* back to hunting mode */ return PARSE_INP_DATA; /* invalid header checksum received - pass up for detection */ } - if ((header.gps_len == 0) || /* no data to wait for */ - (header.gps_len >= (sizeof (parseio->parse_dtime.parse_msg) - sizeof(header) - 1))) /* blows anything we have space for */ + if ((header.len == 0) || /* no data to wait for */ + (header.len >= (sizeof (parseio->parse_dtime.parse_msg) - sizeof(header) - 1))) /* blows anything we have space for */ { msg_buf->phase = MBG_NONE; /* back to hunting mode */ - return (header.gps_len == 0) ? PARSE_INP_DATA : PARSE_INP_SKIP; /* message complete/throwaway */ + return (header.len == 0) ? PARSE_INP_DATA : PARSE_INP_SKIP; /* message complete/throwaway */ } - - parseprintf(DD_PARSE, ("gps_input: expecting %d bytes of data message\n", (int)header.gps_len)); - - msg_buf->len = header.gps_len;/* save number of bytes to wait for */ + + parseprintf(DD_PARSE, ("gps_input: expecting %d bytes of data message\n", (int)header.len)); + + msg_buf->len = header.len;/* save number of bytes to wait for */ msg_buf->phase = MBG_DATA; /* flag header already complete */ return PARSE_INP_SKIP; } parseprintf(DD_PARSE, ("gps_input: message data complete\n")); - + /* Header and data have been received. The header checksum has been */ /* checked */ diff --git a/libparse/clk_rawdcf.c b/libparse/clk_rawdcf.c index 98848be..132fbc3 100644 --- a/libparse/clk_rawdcf.c +++ b/libparse/clk_rawdcf.c @@ -1,12 +1,12 @@ /* * /src/NTP/REPOSITORY/ntp4-dev/libparse/clk_rawdcf.c,v 4.18 2006/06/22 18:40:01 kardel RELEASE_20060622_A - * + * * clk_rawdcf.c,v 4.18 2006/06/22 18:40:01 kardel RELEASE_20060622_A * * Raw DCF77 pulse clock support * * Copyright (c) 1995-2006 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -75,7 +75,8 @@ * Second Contents * 0 - 10 AM: free, FM: 0 * 11 - 14 free - * 15 R - alternate antenna + * 15 R - "call bit" used to signalize irregularities in the control facilities + * (until 2003 indicated transmission via alternate antenna) * 16 A1 - expect zone change (1 hour before) * 17 - 18 Z1,Z2 - time zone * 0 0 illegal @@ -101,9 +102,9 @@ * 59 - usually missing (minute indication), except for leap insertion */ -static u_long pps_rawdcf (parse_t *, int, timestamp_t *); -static u_long cvt_rawdcf (unsigned char *, int, struct format *, clocktime_t *, void *); -static u_long inp_rawdcf (parse_t *, unsigned int, timestamp_t *); +static parse_pps_fnc_t pps_rawdcf; +static parse_cvt_fnc_t cvt_rawdcf; +static parse_inp_fnc_t inp_rawdcf; typedef struct last_tcode { time_t tcode; /* last converted time code */ @@ -125,15 +126,15 @@ clockformat_t clock_rawdcf = static struct dcfparam { - unsigned char *onebits; - unsigned char *zerobits; -} dcfparameter = + const unsigned char *onebits; + const unsigned char *zerobits; +} dcfparameter = { - (unsigned char *)"###############RADMLS1248124P124812P1248121241248112481248P??", /* 'ONE' representation */ - (unsigned char *)"--------------------s-------p------p----------------------p__" /* 'ZERO' representation */ + (const unsigned char *)"###############RADMLS1248124P124812P1248121241248112481248P??", /* 'ONE' representation */ + (const unsigned char *)"--------------------s-------p------p----------------------p__" /* 'ZERO' representation */ }; -static struct rawdcfcode +static struct rawdcfcode { char offset; /* start bit */ } rawdcfcode[] = @@ -182,14 +183,14 @@ static u_long ext_bf( unsigned char *buf, int idx, - unsigned char *zero + const unsigned char *zero ) { u_long sum = 0; int i, first; first = rawdcfcode[idx].offset; - + for (i = rawdcfcode[idx+1].offset - 1; i >= first; i--) { sum <<= 1; @@ -202,7 +203,7 @@ static unsigned pcheck( unsigned char *buf, int idx, - unsigned char *zero + const unsigned char *zero ) { int i,last; @@ -225,8 +226,8 @@ convert_rawdcf( ) { unsigned char *s = buffer; - unsigned char *b = dcfprm->onebits; - unsigned char *c = dcfprm->zerobits; + const unsigned char *b = dcfprm->onebits; + const unsigned char *c = dcfprm->zerobits; int i; parseprintf(DD_RAWDCF,("parse: convert_rawdcf: \"%s\"\n", buffer)); @@ -238,7 +239,7 @@ convert_rawdcf( #endif return CVT_NONE; } - + for (i = 0; i < size; i++) { if ((*s != *b) && (*s != *c)) @@ -307,7 +308,7 @@ convert_rawdcf( clock_time->flags |= PARSEB_LEAPADD; /* default: DCF77 data format deficiency */ if (ext_bf(buffer, DCF_R, dcfprm->zerobits)) - clock_time->flags |= PARSEB_ALTERNATE; + clock_time->flags |= PARSEB_CALLBIT; parseprintf(DD_RAWDCF,("parse: convert_rawdcf: TIME CODE OK: %d:%d, %d.%d.%d, flags 0x%lx\n", (int)clock_time->hour, (int)clock_time->minute, (int)clock_time->day, (int)clock_time->month,(int) clock_time->year, @@ -327,6 +328,7 @@ convert_rawdcf( } /* + * parse_cvt_fnc_t cvt_rawdcf * raw dcf input routine - needs to fix up 50 baud * characters for 1/0 decision */ @@ -342,8 +344,8 @@ cvt_rawdcf( last_tcode_t *t = (last_tcode_t *)local; unsigned char *s = (unsigned char *)buffer; unsigned char *e = s + size; - unsigned char *b = dcfparameter.onebits; - unsigned char *c = dcfparameter.zerobits; + const unsigned char *b = dcfparameter.onebits; + const unsigned char *c = dcfparameter.zerobits; u_long rtc = CVT_NONE; unsigned int i, lowmax, highmax, cutoff, span; #define BITS 9 @@ -379,7 +381,7 @@ cvt_rawdcf( ch >>= 1; } - *s = i; + *s = (unsigned char) i; histbuf[i]++; cutoff += i; lowmax++; @@ -504,12 +506,12 @@ cvt_rawdcf( } } } - + return rtc; } /* - * pps_rawdcf + * parse_pps_fnc_t pps_rawdcf * * currently a very stupid version - should be extended to decode * also ones and zeros (which is easy) @@ -546,30 +548,30 @@ snt_rawdcf( #else parseio->parse_dtime.parse_time.fp.l_ui++; #endif - + parseprintf(DD_RAWDCF,("parse: snt_rawdcf: time stamp synthesized offset %d seconds\n", parseio->parse_index - 1)); - + return updatetimeinfo(parseio, parseio->parse_lstate); } return CVT_NONE; } /* - * inp_rawdcf + * parse_inp_fnc_t inp_rawdcf * * grab DCF77 data from input stream */ static u_long inp_rawdcf( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { static struct timeval timeout = { 1, 500000 }; /* 1.5 secongs denote second #60 */ - + parseprintf(DD_PARSE, ("inp_rawdcf(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); - + parseio->parse_dtime.parse_stime = *tstamp; /* collect timestamp */ if (parse_timedout(parseio, tstamp, &timeout)) @@ -583,7 +585,7 @@ inp_rawdcf( else { unsigned int rtc; - + rtc = parse_addchar(parseio, ch); if (rtc == PARSE_INP_SKIP) { diff --git a/libparse/clk_rcc8000.c b/libparse/clk_rcc8000.c index 6dca166..a690e58 100644 --- a/libparse/clk_rcc8000.c +++ b/libparse/clk_rcc8000.c @@ -1,6 +1,6 @@ /* * /src/NTP/ntp4-dev/libparse/clk_rcc8000.c,v 4.9 2004/11/14 15:29:41 kardel RELEASE_20050508_A - * + * * clk_rcc8000.c,v 4.9 2004/11/14 15:29:41 kardel RELEASE_20050508_A * * Radiocode Clocks Ltd RCC 8000 Intelligent Off-Air Master Clock support @@ -49,16 +49,16 @@ extern int printf (const char *, ...); #define O_USEC O_WDAY static struct format rcc8000_fmt = -{ { { 13, 2 }, {16, 2}, { 19, 2}, /* Day, Month, Year */ - { 0, 2 }, { 3, 2}, { 6, 2}, /* Hour, Minute, Second */ +{ { { 13, 2 }, {16, 2}, { 19, 2}, /* Day, Month, Year */ + { 0, 2 }, { 3, 2}, { 6, 2}, /* Hour, Minute, Second */ { 9, 3 }, {28, 1}, { 0, 0}, /* uSec, Status (Valid,Reject,BST,Leapyear) */ }, - (const unsigned char *)" : : . / / \r\n", + (const unsigned char *)" : : . / / \r\n", /*"15:50:36.534 30/09/94 273 5 A\x0d\x0a" */ - 0 + 0 }; -static unsigned long cvt_rcc8000 (unsigned char *, int, struct format *, clocktime_t *, void *); -static unsigned long inp_rcc8000 (parse_t *, unsigned int, timestamp_t *); +static parse_cvt_fnc_t cvt_rcc8000; +static parse_inp_fnc_t inp_rcc8000; clockformat_t clock_rcc8000 = { @@ -71,7 +71,8 @@ clockformat_t clock_rcc8000 = 0 /* no private data */ }; -static unsigned long +/* parse_cvt_fnc_t cvt_rcc8000 */ +static u_long cvt_rcc8000( unsigned char *buffer, int size, @@ -121,27 +122,27 @@ cvt_rcc8000( clock_time->flags |= PARSEB_POWERUP; clock_time->flags |= PARSEB_UTC; /* British special - guess why 8-) */ - + /* other flags not used */ } return CVT_OK; } /* - * inp_rcc8000 + * parse_inp_fnc_t inp_rcc8000 * - * grep data from input stream + * grab data from input stream */ static u_long inp_rcc8000( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { unsigned int rtc; - + parseprintf(DD_PARSE, ("inp_rcc8000(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); - + switch (ch) { case '\n': @@ -150,7 +151,7 @@ inp_rcc8000( return parse_end(parseio); else return rtc; - + default: if (parseio->parse_index == 0) /* take sample at start of message */ diff --git a/libparse/clk_schmid.c b/libparse/clk_schmid.c index 045f0fc..5e303b9 100644 --- a/libparse/clk_schmid.c +++ b/libparse/clk_schmid.c @@ -1,13 +1,13 @@ /* * /src/NTP/ntp4-dev/libparse/clk_schmid.c,v 4.9 2005/04/16 17:32:10 kardel RELEASE_20050508_A - * + * * clk_schmid.c,v 4.9 2005/04/16 17:32:10 kardel RELEASE_20050508_A * * Schmid clock support * based on information and testing from Adam W. Feigin et. al (Swisstime iis.ethz.ch) * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -61,7 +61,7 @@ extern int printf (const char *, ...); * The command to Schmid's DCF77 clock is a single byte; each bit * allows the user to select some part of the time string, as follows (the * output for the lsb is sent first). - * + * * Bit 0: time in MEZ, 4 bytes *binary, not BCD*; hh.mm.ss.tenths * Bit 1: date 3 bytes *binary, not BCD: dd.mm.yy * Bit 2: week day, 1 byte (unused here) @@ -82,15 +82,15 @@ extern int printf (const char *, ...); #define WS_TIME 0x01 #define WS_SIGNAL 0x02 -#define WS_ALTERNATE 0x01 +#define WS_CALLBIT 0x01 /* "call bit" used to signalize irregularities in the control facilities */ #define WS_ANNOUNCE 0x02 #define WS_TZ 0x0c #define WS_MET 0x08 #define WS_MEST 0x04 #define WS_LEAP 0x10 -static u_long cvt_schmid (unsigned char *, int, struct format *, clocktime_t *, void *); -static unsigned long inp_schmid (parse_t *, unsigned int, timestamp_t *); +static parse_cvt_fnc_t cvt_schmid; +static parse_inp_fnc_t inp_schmid; clockformat_t clock_schmid = { @@ -103,7 +103,7 @@ clockformat_t clock_schmid = 0, /* no private data (complete messages) */ }; - +/* parse_cvt_fnc_t */ static u_long cvt_schmid( unsigned char *buffer, @@ -155,7 +155,7 @@ cvt_schmid( default: return CVT_FAIL|CVT_BADFMT; } - + if (!(buffer[7] & WS_TIME)) { clock_time->flags |= PARSEB_POWERUP; @@ -168,9 +168,9 @@ cvt_schmid( if (buffer[7] & WS_SIGNAL) { - if (buffer[8] & WS_ALTERNATE) + if (buffer[8] & WS_CALLBIT) { - clock_time->flags |= PARSEB_ALTERNATE; + clock_time->flags |= PARSEB_CALLBIT; } if (buffer[8] & WS_ANNOUNCE) @@ -185,32 +185,32 @@ cvt_schmid( } clock_time->flags |= PARSEB_S_LEAP|PARSEB_S_ANTENNA; - + return CVT_OK; } } } /* - * inp_schmid + * parse_inp_fnc_t inp_schmid * - * grep data from input stream + * grab data from input stream */ static u_long inp_schmid( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { unsigned int rtc; - + parseprintf(DD_PARSE, ("inp_schmid(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); - - switch (ch) + + switch ((uint8_t)ch) { case 0xFD: /* */ - parseprintf(DD_PARSE, ("mbg_input: ETX seen\n")); + parseprintf(DD_PARSE, ("inp_schmid: 0xFD seen\n")); if ((rtc = parse_addchar(parseio, ch)) == PARSE_INP_SKIP) return parse_end(parseio); else diff --git a/libparse/clk_sel240x.c b/libparse/clk_sel240x.c index a09d347..b1390b4 100644 --- a/libparse/clk_sel240x.c +++ b/libparse/clk_sel240x.c @@ -3,7 +3,7 @@ // Schweitzer Engineering Laboratories, Inc. ////////////////////////////////////////////////////////////////////////////// -// Need to have _XOPEN_SOURCE defined for time.h to give the +// Need to have _XOPEN_SOURCE defined for time.h to give the // correct strptime signature. As per feature_test_macros(7), // define this before including any header files. @@ -51,14 +51,8 @@ // a '?'. But we are only going to call it synced when we receive a ' ' ////////////////////////////////////////////////////////////////////////////// -static unsigned long inp_sel240x( parse_t *parseio, - unsigned int ch, - timestamp_t *tstamp); -static unsigned long cvt_sel240x( unsigned char *buffer, - int size, - struct format *format, - clocktime_t *clock_time, - void *local ); +static parse_inp_fnc_t inp_sel240x; +static parse_cvt_fnc_t cvt_sel240x; // Parse clock format structure describing the message above static struct format sel240x_fmt = @@ -94,7 +88,7 @@ clockformat_t clock_sel240x = ////////////////////////////////////////////////////////////////////////////// static unsigned long inp_sel240x( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { @@ -139,7 +133,7 @@ cvt_sel240x( unsigned char *buffer, { struct tm ptime; buffer++; - buffer = (unsigned char *) strptime( + buffer = (unsigned char *) strptime( (const char *)buffer, "%Y:%j:%H:%M:%S", &ptime ); if( *(buffer+1) != '\x0d' ) { diff --git a/libparse/clk_trimtaip.c b/libparse/clk_trimtaip.c index 322d0fa..426e897 100644 --- a/libparse/clk_trimtaip.c +++ b/libparse/clk_trimtaip.c @@ -6,7 +6,7 @@ * Trimble SV6 clock support - several collected codepieces * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -78,8 +78,8 @@ extern int printf (const char *, ...); 0 }; -static unsigned long cvt_trimtaip (unsigned char *, int, struct format *, clocktime_t *, void *); -static unsigned long inp_trimtaip (parse_t *, unsigned int, timestamp_t *); +static parse_cvt_fnc_t cvt_trimtaip; +static parse_inp_fnc_t inp_trimtaip; clockformat_t clock_trimtaip = { @@ -92,7 +92,8 @@ clockformat_t clock_trimtaip = 0 /* no private data */ }; -static unsigned long +/* parse_cvt_fnc_t cvt_trimtaip */ +static u_long cvt_trimtaip( unsigned char *buffer, int size, @@ -141,31 +142,31 @@ cvt_trimtaip( } /* - * inp_trimtaip + * parse_inp_fnc_t inp_trimtaip * - * grep data from input stream + * grab data from input stream */ static u_long inp_trimtaip( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { unsigned int rtc; - + parseprintf(DD_PARSE, ("inp_trimtaip(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); - + switch (ch) { case '>': parseprintf(DD_PARSE, ("inp_trimptaip: START seen\n")); - + parseio->parse_index = 1; parseio->parse_data[0] = ch; parseio->parse_dtime.parse_stime = *tstamp; /* collect timestamp */ return PARSE_INP_SKIP; - + case '<': parseprintf(DD_PARSE, ("inp_trimtaip: END seen\n")); if ((rtc = parse_addchar(parseio, ch)) == PARSE_INP_SKIP) diff --git a/libparse/clk_trimtsip.c b/libparse/clk_trimtsip.c index 743e39c..6c71d75 100644 --- a/libparse/clk_trimtsip.c +++ b/libparse/clk_trimtsip.c @@ -7,7 +7,7 @@ * Thanks to Sven Dietrich for providing test hardware * * Copyright (c) 1995-2009 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -116,7 +116,7 @@ struct trimble #define STATUS_UNSAFE 1 /* not enough receivers for full precision */ #define STATUS_SYNC 2 /* enough information for good operation */ -static unsigned long inp_tsip (parse_t *, unsigned int, timestamp_t *); +static unsigned long inp_tsip (parse_t *, char, timestamp_t *); static unsigned long cvt_trimtsip (unsigned char *, int, struct format *, clocktime_t *, void *); struct clockformat clock_trimtsip = @@ -136,7 +136,7 @@ struct clockformat clock_trimtsip = static unsigned long inp_tsip( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { @@ -183,7 +183,7 @@ inp_tsip( /* DLE,ETX -> end of packet */ parseio->parse_data[parseio->parse_index++] = DLE; parseio->parse_data[parseio->parse_index] = ch; - parseio->parse_ldsize = parseio->parse_index+1; + parseio->parse_ldsize = (u_short) (parseio->parse_index + 1); memcpy(parseio->parse_ldata, parseio->parse_data, parseio->parse_ldsize); parseio->parse_dtime.parse_msg[parseio->parse_dtime.parse_msglen++] = DLE; parseio->parse_dtime.parse_msg[parseio->parse_dtime.parse_msglen++] = ch; @@ -200,13 +200,13 @@ inp_tsip( return PARSE_INP_SKIP; } - -static int + +static short getshort( unsigned char *p ) { - return get_msb_short(&p); + return (short) get_msb_short(&p); } /* @@ -245,7 +245,7 @@ cvt_trimtsip( { unsigned char *bp; cmd = buffer[1]; - + switch(cmd) { case CMD_RCURTIME: @@ -258,15 +258,15 @@ cvt_trimtsip( bp = &mb(0); if (fetch_ieee754(&bp, IEEE_SINGLE, &secs, trim_offsets) != IEEE_OK) return CVT_FAIL|CVT_BADFMT; - + if ((secs.l_i <= 0) || (t->t_utcknown == 0)) { clock_time->flags = PARSEB_POWERUP; return CVT_OK; } - if (week < 990) { - week += 1024; + if (week < GPSWRAP) { + week += GPSWEEKS; } /* time OK */ @@ -275,7 +275,7 @@ cvt_trimtsip( bp = &mb(6); if (fetch_ieee754(&bp, IEEE_SINGLE, &utcoffset, trim_offsets) != IEEE_OK) return CVT_FAIL|CVT_BADFMT; - + L_SUB(&secs, &utcoffset); /* adjust GPS time to UTC time */ gpstolfp((unsigned short)week, (unsigned short)0, @@ -289,10 +289,10 @@ cvt_trimtsip( if (t->t_leap == ADDSECOND) clock_time->flags |= PARSEB_LEAPADD; - + if (t->t_leap == DELSECOND) clock_time->flags |= PARSEB_LEAPDEL; - + switch (t->t_operable) { case STATUS_SYNC: @@ -307,12 +307,12 @@ cvt_trimtsip( clock_time->flags |= PARSEB_NOSYNC|PARSEB_POWERUP; break; } - + if (t->t_mode == 0) clock_time->flags |= PARSEB_POSITION; - + clock_time->flags |= PARSEB_S_LEAP|PARSEB_S_POSITION; - + return CVT_OK; } /* case 0x41 */ @@ -346,26 +346,26 @@ cvt_trimtsip( { l_fp t0t; unsigned char *lbp; - + /* UTC correction data - derive a leap warning */ - int tls = t->t_gpsutc = getshort((unsigned char *)&mb(12)); /* current leap correction (GPS-UTC) */ - int tlsf = t->t_gpsutcleap = getshort((unsigned char *)&mb(24)); /* new leap correction */ - - t->t_weekleap = getshort((unsigned char *)&mb(20)); /* week no of leap correction */ - if (t->t_weekleap < 990) - t->t_weekleap += 1024; - - t->t_dayleap = getshort((unsigned char *)&mb(22)); /* day in week of leap correction */ - t->t_week = getshort((unsigned char *)&mb(18)); /* current week no */ - if (t->t_week < 990) - t->t_week += 1024; - + int tls = t->t_gpsutc = (u_short) getshort((unsigned char *)&mb(12)); /* current leap correction (GPS-UTC) */ + int tlsf = t->t_gpsutcleap = (u_short) getshort((unsigned char *)&mb(24)); /* new leap correction */ + + t->t_weekleap = (u_short) getshort((unsigned char *)&mb(20)); /* week no of leap correction */ + if (t->t_weekleap < GPSWRAP) + t->t_weekleap = (u_short)(t->t_weekleap + GPSWEEKS); + + t->t_dayleap = (u_short) getshort((unsigned char *)&mb(22)); /* day in week of leap correction */ + t->t_week = (u_short) getshort((unsigned char *)&mb(18)); /* current week no */ + if (t->t_week < GPSWRAP) + t->t_week = (u_short)(t->t_weekleap + GPSWEEKS); + lbp = (unsigned char *)&mb(14); /* last update time */ if (fetch_ieee754(&lbp, IEEE_SINGLE, &t0t, trim_offsets) != IEEE_OK) return CVT_FAIL|CVT_BADFMT; t->t_utcknown = t0t.l_ui != 0; - + if ((t->t_utcknown) && /* got UTC information */ (tlsf != tls) && /* something will change */ ((t->t_weekleap - t->t_week) < 5)) /* and close in the future */ diff --git a/libparse/clk_varitext.c b/libparse/clk_varitext.c index 295ce0a..022549e 100644 --- a/libparse/clk_varitext.c +++ b/libparse/clk_varitext.c @@ -9,14 +9,14 @@ * clk_varitext.c,v 1.5 2005/04/16 17:32:10 kardel RELEASE_20050508_A * * Varitext code variant by A.McConnell 1997/01/19 - * + * * Supports Varitext's Radio Clock - * + * * Used the Meinberg/Computime clock as a template for Varitext Radio Clock * * Codebase: * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -67,31 +67,31 @@ static const u_char VT_LAST_TELEGRAM_OK = 0x20; /* * The Varitext receiver sends a datagram in the following format every minute - * - * Timestamp T:YY:MM:MD:WD:HH:MM:SSCRLFSTXXX + * + * Timestamp T:YY:MM:MD:WD:HH:MM:SSCRLFSTXXX * Pos 0123456789012345678901 2 3 4567 * 0000000000111111111122 2 2 2222 - * Parse T: : : : : : : \r\n - * - * T Startcharacter "T" specifies start of the timestamp - * YY Year MM Month 1-12 - * MD Day of the month - * WD Day of week - * HH Hour - * MM Minute - * SS Second - * CR Carriage return - * LF Linefeed + * Parse T: : : : : : : \r\n + * + * T Startcharacter "T" specifies start of the timestamp + * YY Year MM Month 1-12 + * MD Day of the month + * WD Day of week + * HH Hour + * MM Minute + * SS Second + * CR Carriage return + * LF Linefeed * ST Status character * Bit 0 - Set= Initialised; Reset=Time Invalid (DO NOT USE) - * Bit 1 - Set= Synchronised; Reset= Unsynchronised - * Bit 2 - Set= Alarm state; Reset= No alarm - * Bit 3 - Set= BST; Reset= GMT - * Bit 4 - Set= Seasonal change in approx hour; Reset= No seasonal change expected + * Bit 1 - Set= Synchronised; Reset= Unsynchronised + * Bit 2 - Set= Alarm state; Reset= No alarm + * Bit 3 - Set= BST; Reset= GMT + * Bit 4 - Set= Seasonal change in approx hour; Reset= No seasonal change expected * Bit 5 - Set= Last MSF telegram was OK; Reset= Last telegram was in error; - * Bit 6 - Always set + * Bit 6 - Always set * Bit 7 - Unused - * XXX Checksum calculated using Fletcher's method (ignored for now). + * XXX Checksum calculated using Fletcher's method (ignored for now). */ static struct format varitext_fmt = @@ -105,8 +105,8 @@ static struct format varitext_fmt = 0 }; -static u_long cvt_varitext (unsigned char *, int, struct format *, clocktime_t *, void *); -static u_long inp_varitext (parse_t *, unsigned int, timestamp_t *); +static parse_cvt_fnc_t cvt_varitext; +static parse_inp_fnc_t inp_varitext; struct varitext { unsigned char start_found; @@ -128,11 +128,11 @@ clockformat_t clock_varitext = }; /* - * cvt_varitext - * + * parse_cvt_fnc_t cvt_varitext + * * convert simple type format */ -static u_long +static u_long cvt_varitext( unsigned char *buffer, int size, @@ -142,7 +142,7 @@ cvt_varitext( ) { - if (!Strok(buffer, format->fixed_string)) { + if (!Strok(buffer, format->fixed_string)) { return CVT_NONE; } else { if (Stoi(&buffer[format->field_offsets[O_DAY].offset], &clock_time->day, @@ -156,7 +156,7 @@ cvt_varitext( Stoi(&buffer[format->field_offsets[O_MIN].offset], &clock_time->minute, format->field_offsets[O_MIN].length) || Stoi(&buffer[format->field_offsets[O_SEC].offset], &clock_time->second, - format->field_offsets[O_SEC].length)) { + format->field_offsets[O_SEC].length)) { return CVT_FAIL | CVT_BADFMT; } else { u_char *f = (u_char*) &buffer[format->field_offsets[O_FLAGS].offset]; @@ -170,24 +170,25 @@ cvt_varitext( clock_time->flags |= PARSEB_DST; } /* - if (!((*f) & VT_INITIALISED)) Clock not initialised + if (!((*f) & VT_INITIALISED)) Clock not initialised clock_time->flags |= PARSEB_POWERUP; - - if (!((*f) & VT_SYNCHRONISED)) Clock not synchronised + + if (!((*f) & VT_SYNCHRONISED)) Clock not synchronised clock_time->flags |= PARSEB_NOSYNC; - - if (((*f) & VT_SEASON_CHANGE)) Seasonal change expected in the next hour + + if (((*f) & VT_SEASON_CHANGE)) Seasonal change expected in the next hour clock_time->flags |= PARSEB_ANNOUNCE; */ - return CVT_OK; + return CVT_OK; } } } -static u_long +/* parse_inp_fnc_t inp_varitext */ +static u_long inp_varitext( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { @@ -196,10 +197,10 @@ inp_varitext( parseprintf(DD_PARSE, ("inp_varitext(0x%lx, 0x%x, ...)\n", (long)parseio, ch)); - if (!t) + if (!t) return PARSE_INP_SKIP; /* local data not allocated - sigh! */ - if (ch == 'T') + if (ch == 'T') t->tstamp = *tstamp; if ((t->previous_ch == 'T') && (ch == ':')) @@ -224,7 +225,7 @@ inp_varitext( return rtc; } - if (t->end_found) + if (t->end_found) { if (++(t->end_count) == 4) /* Finally found the end of the message */ { @@ -235,16 +236,16 @@ inp_varitext( return parse_end(parseio); else return rtc; - } + } } - if ((t->previous_ch == '\r') && (ch == '\n')) + if ((t->previous_ch == '\r') && (ch == '\n')) { t->end_found = 1; } } - + t->previous_ch = ch; return PARSE_INP_SKIP; diff --git a/libparse/clk_wharton.c b/libparse/clk_wharton.c index 55ab43a..a65bc53 100644 --- a/libparse/clk_wharton.c +++ b/libparse/clk_wharton.c @@ -74,8 +74,11 @@ extern void printf (const char *, ...); * */ +static parse_cvt_fnc_t cvt_wharton_400a; +static parse_inp_fnc_t inp_wharton_400a; + /* - * cvt_wharton_400a + * parse_cvt_fnc_t cvt_wharton_400a * * convert simple type format */ @@ -121,14 +124,14 @@ cvt_wharton_400a( } /* - * inp_wharton_400a + * parse_inp_fnc_t inp_wharton_400a * - * grep data from input stream + * grab data from input stream */ static u_long inp_wharton_400a( parse_t *parseio, - unsigned int ch, + char ch, timestamp_t *tstamp ) { @@ -166,7 +169,7 @@ clockformat_t clock_wharton_400a = 0, /* conversion configuration */ "WHARTON 400A Series clock Output Format 1", /* String format name */ 15, /* string buffer */ - 0 /* no private data (complete pakets) */ + 0 /* no private data (complete packets) */ }; #else /* not (REFCLOCK && CLOCK_PARSE && CLOCK_WHARTON_400A) */ diff --git a/libparse/data_mbg.c b/libparse/data_mbg.c index 97bef35..0b3808c 100644 --- a/libparse/data_mbg.c +++ b/libparse/data_mbg.c @@ -43,6 +43,7 @@ #include "ntp_types.h" #include "ntp_stdlib.h" #include "ntp_fp.h" +#include "ntp_calendar.h" #include "mbg_gps166.h" #include "binio.h" #include "ieee754io.h" @@ -63,10 +64,10 @@ put_mbg_header( GPS_MSG_HDR *headerp ) { - put_lsb_short(bufpp, headerp->gps_cmd); - put_lsb_short(bufpp, headerp->gps_len); - put_lsb_short(bufpp, headerp->gps_data_csum); - put_lsb_short(bufpp, headerp->gps_hdr_csum); + put_lsb_short(bufpp, headerp->cmd); + put_lsb_short(bufpp, headerp->len); + put_lsb_short(bufpp, headerp->data_csum); + put_lsb_short(bufpp, headerp->hdr_csum); } void @@ -75,7 +76,7 @@ get_mbg_sw_rev( SW_REV *sw_revp ) { - sw_revp->code = get_lsb_short(bufpp); + sw_revp->code = get_lsb_uint16(bufpp); memcpy(sw_revp->name, *bufpp, sizeof(sw_revp->name)); *bufpp += sizeof(sw_revp->name); } @@ -86,8 +87,8 @@ get_mbg_ascii_msg( ASCII_MSG *ascii_msgp ) { - ascii_msgp->csum = get_lsb_short(bufpp); - ascii_msgp->valid = get_lsb_short(bufpp); + ascii_msgp->csum = (CSUM) get_lsb_short(bufpp); + ascii_msgp->valid = get_lsb_int16(bufpp); memcpy(ascii_msgp->s, *bufpp, sizeof(ascii_msgp->s)); *bufpp += sizeof(ascii_msgp->s); } @@ -98,7 +99,7 @@ get_mbg_svno( SVNO *svnop ) { - *svnop = get_lsb_short(bufpp); + *svnop = (SVNO) get_lsb_short(bufpp); } void @@ -107,7 +108,7 @@ get_mbg_health( HEALTH *healthp ) { - *healthp = get_lsb_short(bufpp); + *healthp = (HEALTH) get_lsb_short(bufpp); } void @@ -116,7 +117,7 @@ get_mbg_cfg( CFG *cfgp ) { - *cfgp = get_lsb_short(bufpp); + *cfgp = (CFG) get_lsb_short(bufpp); } void @@ -125,7 +126,7 @@ get_mbg_tgps( T_GPS *tgpsp ) { - tgpsp->wn = get_lsb_short(bufpp); + tgpsp->wn = get_lsb_uint16(bufpp); tgpsp->sec = get_lsb_long(bufpp); tgpsp->tick = get_lsb_long(bufpp); } @@ -133,20 +134,20 @@ get_mbg_tgps( void get_mbg_tm( unsigned char **buffpp, - TM *tmp + TM_GPS *tmp ) { - tmp->year = get_lsb_short(buffpp); + tmp->year = get_lsb_int16(buffpp); tmp->month = *(*buffpp)++; - tmp->mday = *(*buffpp)++; - tmp->yday = get_lsb_short(buffpp); - tmp->wday = *(*buffpp)++; - tmp->hour = *(*buffpp)++; - tmp->minute = *(*buffpp)++; - tmp->second = *(*buffpp)++; - tmp->frac = get_lsb_long(buffpp); + tmp->mday = *(*buffpp)++; + tmp->yday = get_lsb_int16(buffpp); + tmp->wday = *(*buffpp)++; + tmp->hour = *(*buffpp)++; + tmp->min = *(*buffpp)++; + tmp->sec = *(*buffpp)++; + tmp->frac = get_lsb_long(buffpp); tmp->offs_from_utc = get_lsb_long(buffpp); - tmp->status= get_lsb_short(buffpp); + tmp->status = get_lsb_uint16(buffpp); } void @@ -155,7 +156,7 @@ get_mbg_ttm( TTM *ttmp ) { - ttmp->channel = get_lsb_short(buffpp); + ttmp->channel = get_lsb_int16(buffpp); get_mbg_tgps(buffpp, &ttmp->t); get_mbg_tm(buffpp, &ttmp->tm); } @@ -166,9 +167,9 @@ get_mbg_synth( SYNTH *synthp ) { - synthp->freq = get_lsb_short(buffpp); - synthp->range = get_lsb_short(buffpp); - synthp->phase = get_lsb_short(buffpp); + synthp->freq = get_lsb_int16(buffpp); + synthp->range = get_lsb_int16(buffpp); + synthp->phase = get_lsb_int16(buffpp); } static void @@ -201,7 +202,7 @@ get_mbg_antinfo( ANT_INFO *antinfop ) { - antinfop->status = get_lsb_short(buffpp); + antinfop->status = get_lsb_int16(buffpp); get_mbg_tm(buffpp, &antinfop->tm_disconn); get_mbg_tm(buffpp, &antinfop->tm_reconn); antinfop->delta_t = get_lsb_long(buffpp); @@ -216,8 +217,8 @@ mbg_time_status_str( { static struct state { - int flag; /* bit flag */ - const char *string; /* bit name */ + int flag; /* bit flag */ + const char *string; /* bit name */ } states[] = { { TM_UTC, "UTC CORR" }, @@ -233,7 +234,7 @@ mbg_time_status_str( { char *start, *p; struct state *s; - + start = p = *buffpp; for (s = states; s->flag; s++) @@ -252,25 +253,27 @@ mbg_time_status_str( *buffpp = p; } } - + void mbg_tm_str( char **buffpp, - TM *tmp, - int size + TM_GPS *tmp, + int size, + int print_status ) { char *s = *buffpp; snprintf(*buffpp, size, "%04d-%02d-%02d %02d:%02d:%02d.%07ld (%c%02d%02d) ", tmp->year, tmp->month, tmp->mday, - tmp->hour, tmp->minute, tmp->second, tmp->frac, + tmp->hour, tmp->min, tmp->sec, (long) tmp->frac, (tmp->offs_from_utc < 0) ? '-' : '+', - abs(tmp->offs_from_utc) / 3600, - (abs(tmp->offs_from_utc) / 60) % 60); + abs((int)tmp->offs_from_utc) / 3600, + (abs((int)tmp->offs_from_utc) / 60) % 60); *buffpp += strlen(*buffpp); - mbg_time_status_str(buffpp, tmp->status, size - (*buffpp - s)); + if (print_status) + mbg_time_status_str(buffpp, tmp->status, size - (*buffpp - s)); } void @@ -281,8 +284,8 @@ mbg_tgps_str( ) { snprintf(*buffpp, size, "week %d + %ld days + %ld.%07ld sec", - tgpsp->wn, tgpsp->sec / 86400, - tgpsp->sec % 86400, tgpsp->tick); + tgpsp->wn, (long) tgpsp->sec / SECSPERDAY, + (long) tgpsp->sec % SECSPERDAY, (long) tgpsp->tick); *buffpp += strlen(*buffpp); } @@ -293,19 +296,19 @@ get_mbg_cfgh( ) { int i; - - cfghp->csum = get_lsb_short(buffpp); - cfghp->valid = get_lsb_short(buffpp); + + cfghp->csum = (CSUM) get_lsb_short(buffpp); + cfghp->valid = get_lsb_int16(buffpp); get_mbg_tgps(buffpp, &cfghp->tot_51); get_mbg_tgps(buffpp, &cfghp->tot_63); get_mbg_tgps(buffpp, &cfghp->t0a); - for (i = MIN_SVNO; i <= MAX_SVNO; i++) + for (i = 0; i < N_SVNO_GPS; i++) { get_mbg_cfg(buffpp, &cfghp->cfg[i]); } - - for (i = MIN_SVNO; i <= MAX_SVNO; i++) + + for (i = 0; i < N_SVNO_GPS; i++) { get_mbg_health(buffpp, &cfghp->health[i]); } @@ -317,23 +320,23 @@ get_mbg_utc( UTC *utcp ) { - utcp->csum = get_lsb_short(buffpp); - utcp->valid = get_lsb_short(buffpp); + utcp->csum = (CSUM) get_lsb_short(buffpp); + utcp->valid = get_lsb_int16(buffpp); get_mbg_tgps(buffpp, &utcp->t0t); - + if (fetch_ieee754(buffpp, IEEE_DOUBLE, &utcp->A0, mbg_double) != IEEE_OK) { L_CLR(&utcp->A0); } - + if (fetch_ieee754(buffpp, IEEE_DOUBLE, &utcp->A1, mbg_double) != IEEE_OK) { L_CLR(&utcp->A1); } - utcp->WNlsf = get_lsb_short(buffpp); - utcp->DNt = get_lsb_short(buffpp); + utcp->WNlsf = get_lsb_uint16(buffpp); + utcp->DNt = get_lsb_int16(buffpp); utcp->delta_tls = *(*buffpp)++; utcp->delta_tlsf = *(*buffpp)++; } @@ -345,7 +348,7 @@ get_mbg_lla( ) { int i; - + for (i = LAT; i <= ALT; i++) { if (fetch_ieee754(buffpp, IEEE_DOUBLE, &lla[i], mbg_double) != IEEE_OK) @@ -367,7 +370,7 @@ get_mbg_xyz( ) { int i; - + for (i = XP; i <= ZP; i++) { if (fetch_ieee754(buffpp, IEEE_DOUBLE, &xyz[i], mbg_double) != IEEE_OK) @@ -383,14 +386,14 @@ get_mbg_comparam( COM_PARM *comparamp ) { - int i; - + size_t i; + comparamp->baud_rate = get_lsb_long(buffpp); for (i = 0; i < sizeof(comparamp->framing); i++) { comparamp->framing[i] = *(*buffpp)++; } - comparamp->handshake = get_lsb_short(buffpp); + comparamp->handshake = get_lsb_int16(buffpp); } void @@ -400,12 +403,12 @@ get_mbg_portparam( ) { int i; - - for (i = 0; i < N_COM; i++) + + for (i = 0; i < DEFAULT_N_COM; i++) { get_mbg_comparam(buffpp, &portparamp->com[i]); } - for (i = 0; i < N_COM; i++) + for (i = 0; i < DEFAULT_N_COM; i++) { portparamp->mode[i] = *(*buffpp)++; } @@ -416,20 +419,20 @@ get_mbg_portparam( { \ L_CLR(addr); \ } - + void get_mbg_eph( unsigned char ** buffpp, EPH *ephp ) { - ephp->csum = get_lsb_short(buffpp); - ephp->valid = get_lsb_short(buffpp); - - ephp->health = get_lsb_short(buffpp); - ephp->IODC = get_lsb_short(buffpp); - ephp->IODE2 = get_lsb_short(buffpp); - ephp->IODE3 = get_lsb_short(buffpp); + ephp->csum = (CSUM) get_lsb_short(buffpp); + ephp->valid = get_lsb_int16(buffpp); + + ephp->health = (HEALTH) get_lsb_short(buffpp); + ephp->IODC = (IOD) get_lsb_short(buffpp); + ephp->IODE2 = (IOD) get_lsb_short(buffpp); + ephp->IODE3 = (IOD) get_lsb_short(buffpp); get_mbg_tgps(buffpp, &ephp->tt); get_mbg_tgps(buffpp, &ephp->t0c); @@ -456,7 +459,7 @@ get_mbg_eph( FETCH_DOUBLE(buffpp, &ephp->af2); FETCH_DOUBLE(buffpp, &ephp->tgd); - ephp->URA = get_lsb_short(buffpp); + ephp->URA = get_lsb_uint16(buffpp); ephp->L2code = *(*buffpp)++; ephp->L2flag = *(*buffpp)++; @@ -468,10 +471,10 @@ get_mbg_alm( ALM *almp ) { - almp->csum = get_lsb_short(buffpp); - almp->valid = get_lsb_short(buffpp); - - almp->health = get_lsb_short(buffpp); + almp->csum = (CSUM) get_lsb_short(buffpp); + almp->valid = get_lsb_int16(buffpp); + + almp->health = (HEALTH) get_lsb_short(buffpp); get_mbg_tgps(buffpp, &almp->t0a); @@ -493,8 +496,8 @@ get_mbg_iono( IONO *ionop ) { - ionop->csum = get_lsb_short(buffpp); - ionop->valid = get_lsb_short(buffpp); + ionop->csum = (CSUM) get_lsb_short(buffpp); + ionop->valid = get_lsb_int16(buffpp); FETCH_DOUBLE(buffpp, &ionop->alpha_0); FETCH_DOUBLE(buffpp, &ionop->alpha_1); diff --git a/libparse/gpstolfp.c b/libparse/gpstolfp.c index 5354dd3..c162429 100644 --- a/libparse/gpstolfp.c +++ b/libparse/gpstolfp.c @@ -34,10 +34,8 @@ */ #include #include "ntp_fp.h" - -#define GPSORIGIN 2524953600UL /* NTP origin - GPS origin in seconds */ -#define SECSPERWEEK (unsigned)(604800) /* seconds per week - GPS tells us about weeks */ -#define GPSWRAP 990 /* assume week count less than this in the previous epoch */ +#include "ntp_calendar.h" +#include "parse.h" void gpstolfp( @@ -49,10 +47,10 @@ gpstolfp( { if (weeks < GPSWRAP) { - weeks += 1024; + weeks += GPSWEEKS; } - lfp->l_ui = weeks * SECSPERWEEK + days * 86400 + seconds + GPSORIGIN; /* convert to NTP time */ + lfp->l_ui = (uint32_t)(weeks * SECSPERWEEK + days * SECSPERDAY + seconds + GPSORIGIN); /* convert to NTP time */ lfp->l_uf = 0; } diff --git a/libparse/info_trimble.c b/libparse/info_trimble.c index 6456e0f..53b2e32 100644 --- a/libparse/info_trimble.c +++ b/libparse/info_trimble.c @@ -48,7 +48,7 @@ cmd_info_t trimble_scmds[] = { { CMD_CHIGH8CNT, "CMD_CHIGH8CNT", "high-8 (best 4) / high-6 (overdetermined) control (0x75)", "", 0 }, { CMD_CMAXDGPSCOR, "CMD_CMAXDGPSCOR", "maximum rate of DGPS corrections (0x77)", "", 0 }, { CMD_CSUPER, "CMD_CSUPER", "super paket (0x8E)", "", 0 }, - { 0xFF, "", "" } + { 0xFF, "", "", "", 0 } }; @@ -90,5 +90,5 @@ cmd_info_t trimble_rcmds[] = { { CMD_RDOUBLELLA, "CMD_RDOUBLELLA", "double precision LLA (0x84)", "gps_position_ext(LLA)", RO|DEF }, { CMD_RDGPSSTAT, "CMD_RDGPSSTAT", "differential correction status (0x85)", "trimble_dgpsstatus", RO }, { CMD_RSUPER, "CMD_RSUPER", "super paket (0x8F)", "", 0 }, - { 0xFF, "", "" } + { 0xFF, "", "", "", 0 } }; diff --git a/libparse/mkinfo_rcmd.sed b/libparse/mkinfo_rcmd.sed index 5238d5c..b8ed623 100644 --- a/libparse/mkinfo_rcmd.sed +++ b/libparse/mkinfo_rcmd.sed @@ -4,5 +4,5 @@ cmd_info_t trimble_rcmds[] = { s!^#define[ \ ][ \ ]*\(CMD_R[^ \ ]*\)[ \ ][ \ ]*\([^ \ ]*\)[ \ ][ \ ]*/\*[ \ ][ \ ]*\(.*\)[ \ ]*:\([^:]*\):\([^:]*\)[ \ ][ \ ]*\*/!\ { \1, "\1", "\3 (\2)", "\4", \5 },!p $a\ -\ { 0xFF, "", "" }\ +\ { 0xFF, "", "", "", 0 }\ }; diff --git a/libparse/mkinfo_scmd.sed b/libparse/mkinfo_scmd.sed index 9c17f39..fb58d32 100644 --- a/libparse/mkinfo_scmd.sed +++ b/libparse/mkinfo_scmd.sed @@ -11,5 +11,5 @@ cmd_info_t trimble_scmds[] = { s!^#define[ ][ ]*\(CMD_C[^ ]*\)[ ][ ]*\([^ ]*\)[ ][ ]*/\*[ ][ ]*\(.*\)[ ][ ]*\*/! { \1, "\1", "\3 (\2)", "", 0 },!p $a\ -\ { 0xFF, "", "" }\ +\ { 0xFF, "", "", "", 0 }\ }; diff --git a/libparse/parse.c b/libparse/parse.c index 85e5299..9e663f9 100644 --- a/libparse/parse.c +++ b/libparse/parse.c @@ -1,6 +1,6 @@ /* * /src/NTP/ntp4-dev/libparse/parse.c,v 4.20 2005/08/06 17:39:40 kardel RELEASE_20050806_A - * + * * parse.c,v 4.20 2005/08/06 17:39:40 kardel RELEASE_20050806_A * * Parser module for reference clock @@ -12,7 +12,7 @@ * when PARSEKERNEL is not defined NTP time stamps will be used. * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -106,7 +106,7 @@ Strcmp( while (!(c = *s++ - *t++) && *s && *t) /* empty loop */; - + return c; } @@ -154,10 +154,10 @@ parse_ioinit( ) { parseprintf(DD_PARSE, ("parse_iostart\n")); - + parseio->parse_plen = 0; parseio->parse_pdata = (void *)0; - + parseio->parse_data = 0; parseio->parse_ldata = 0; parseio->parse_dsize = 0; @@ -166,7 +166,7 @@ parse_ioinit( parseio->parse_ioflags = PARSE_IO_CS7; /* usual unix default */ parseio->parse_index = 0; parseio->parse_ldsize = 0; - + return 1; } @@ -188,15 +188,15 @@ parse_ioend( unsigned int parse_restart( parse_t *parseio, - unsigned int ch + char ch ) { unsigned int updated = PARSE_INP_SKIP; - + /* * re-start packet - timeout - overflow - start symbol */ - + if (parseio->parse_index) { /* @@ -208,17 +208,17 @@ parse_restart( parseio->parse_ldsize = parseio->parse_index; updated = PARSE_INP_TIME; } - + parseio->parse_index = 1; parseio->parse_data[0] = ch; parseprintf(DD_PARSE, ("parse: parse_restart: buffer start (updated = %x)\n", updated)); return updated; } - + unsigned int parse_addchar( parse_t *parseio, - unsigned int ch + char ch ) { /* @@ -239,7 +239,7 @@ parse_addchar( */ return parse_restart(parseio, ch); } - + unsigned int parse_end( parse_t *parseio @@ -260,11 +260,11 @@ parse_end( int parse_ioread( register parse_t *parseio, - register unsigned int ch, + register char ch, register timestamp_t *tstamp ) { - register unsigned updated = CVT_NONE; + register u_int updated = CVT_NONE; /* * within STREAMS CSx (x < 8) chars still have the upper bits set * so we normalize the characters by masking unecessary bits off. @@ -282,9 +282,9 @@ parse_ioread( case PARSE_IO_CS7: ch &= 0x7F; break; - + case PARSE_IO_CS8: - ch &= 0xFF; + ch &= (char) 0xFFU; break; } @@ -306,18 +306,18 @@ parse_ioread( { updated = CVT_OK; } - + if (input_status & PARSE_INP_TIME) /* time sample is available */ { - updated = timepacket(parseio); + updated = (u_int) timepacket(parseio); } - + if (input_status & PARSE_INP_DATA) /* got additional data */ { updated |= CVT_ADDITIONAL; } } - + /* * remember last character time @@ -353,7 +353,7 @@ parse_iopps( register timestamp_t *ptime ) { - register unsigned updated = CVT_NONE; + register u_int updated = CVT_NONE; /* * PPS pulse information will only be delivered to ONE clock format @@ -364,7 +364,7 @@ parse_iopps( if (clockformats[parseio->parse_lformat]->syncpps) { - updated = clockformats[parseio->parse_lformat]->syncpps(parseio, status == SYNC_ONE, ptime); + updated = (u_int) clockformats[parseio->parse_lformat]->syncpps(parseio, status == SYNC_ONE, ptime); parseprintf(DD_PARSE, ("parse_iopps: updated = 0x%x\n", updated)); } @@ -403,13 +403,13 @@ parse_to_unixtime( ) { #define SETRTC(_X_) { if (cvtrtc) *cvtrtc = (_X_); } - static int days_of_month[] = + static int days_of_month[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; register int i; time_t t; - + if (clock_time->utctime) return clock_time->utctime; /* if the conversion routine gets it right away - why not */ @@ -423,12 +423,12 @@ parse_to_unixtime( SETRTC(CVT_FAIL|CVT_BADDATE); return -1; } - + /* * sorry, slow section here - but it's not time critical anyway */ t = julian0(clock_time->year) - julian0(1970); /* Y2kFixes */ - /* month */ + /* month */ if (clock_time->month <= 0 || clock_time->month > 12) { SETRTC(CVT_FAIL|CVT_BADDATE); @@ -466,7 +466,7 @@ parse_to_unixtime( t = TIMES24(t) + clock_time->hour; - /* min */ + /* min */ if (clock_time->minute < 0 || clock_time->minute > 59) { SETRTC(CVT_FAIL|CVT_BADTIME); @@ -475,7 +475,7 @@ parse_to_unixtime( t = TIMES60(t) + clock_time->minute; /* sec */ - + if (clock_time->second < 0 || clock_time->second > 60) /* allow for LEAPs */ { SETRTC(CVT_FAIL|CVT_BADTIME); @@ -510,7 +510,7 @@ Stoi( while(*s == ' ') s++; - + if (*s == '-') { s++; @@ -519,7 +519,7 @@ Stoi( else if (*s == '+') s++; - + for(;;) { c = *s++; @@ -573,16 +573,16 @@ updatetimeinfo( { int s = splhigh(); #endif - + parseio->parse_lstate = parseio->parse_dtime.parse_state | flags | PARSEB_TIMECODE; - + parseio->parse_dtime.parse_state = parseio->parse_lstate; #ifdef PARSEKERNEL (void)splx((unsigned int)s); } #endif - + #ifdef PARSEKERNEL parseprintf(DD_PARSE, ("updatetimeinfo status=0x%x, time=%x\n", parseio->parse_dtime.parse_state, @@ -591,7 +591,7 @@ updatetimeinfo( parseprintf(DD_PARSE, ("updatetimeinfo status=0x%lx, time=%x\n", (long)parseio->parse_dtime.parse_state, parseio->parse_dtime.parse_time.fp.l_ui)); #endif - + return CVT_OK; /* everything fine and dandy... */ } @@ -614,7 +614,7 @@ syn_simple( } /* - * pps_simple + * parse_pps_fnc_t pps_simple * * handle a pps time stamp */ @@ -628,12 +628,12 @@ pps_simple( { parseio->parse_dtime.parse_ptime = *ptime; parseio->parse_dtime.parse_state |= PARSEB_PPS|PARSEB_S_PPS; - + return CVT_NONE; } /* - * pps_one + * parse_pps_fnc_t pps_one * * handle a pps time stamp in ONE edge */ @@ -647,12 +647,12 @@ pps_one( { if (status) return pps_simple(parseio, status, ptime); - + return CVT_NONE; } /* - * pps_zero + * parse_pps_fnc_t pps_zero * * handle a pps time stamp in ZERO edge */ @@ -666,7 +666,7 @@ pps_zero( { if (!status) return pps_simple(parseio, status, ptime); - + return CVT_NONE; } @@ -684,13 +684,13 @@ timepacket( register time_t t; u_long cvtrtc; /* current conversion result */ clocktime_t clock_time; - + memset((char *)&clock_time, 0, sizeof clock_time); format = parseio->parse_lformat; if (format == (unsigned short)~0) return CVT_NONE; - + switch ((cvtrtc = clockformats[format]->convert ? clockformats[format]->convert((unsigned char *)parseio->parse_ldata, parseio->parse_ldsize, (struct format *)(clockformats[format]->data), &clock_time, parseio->parse_pdata) : CVT_NONE) & CVT_MASK) @@ -698,17 +698,17 @@ timepacket( case CVT_FAIL: parseio->parse_badformat++; break; - + case CVT_NONE: /* * too bad - pretend bad format */ parseio->parse_badformat++; break; - + case CVT_OK: break; - + case CVT_SKIP: return CVT_NONE; @@ -716,7 +716,7 @@ timepacket( /* shouldn't happen */ #ifndef PARSEKERNEL msyslog(LOG_WARNING, "parse: INTERNAL error: bad return code of convert routine \"%s\"", clockformats[format]->name); -#endif +#endif return CVT_FAIL|cvtrtc; } @@ -724,7 +724,7 @@ timepacket( { return CVT_FAIL|cvtrtc; } - + /* * time stamp */ @@ -732,7 +732,7 @@ timepacket( parseio->parse_dtime.parse_time.tv.tv_sec = t; parseio->parse_dtime.parse_time.tv.tv_usec = clock_time.usecond; #else - parseio->parse_dtime.parse_time.fp.l_ui = t + JAN_1970; + parseio->parse_dtime.parse_time.fp.l_ui = (uint32_t) (t + JAN_1970); TVUTOTSF(clock_time.usecond, parseio->parse_dtime.parse_time.fp.l_uf); #endif @@ -758,7 +758,7 @@ parse_timecode( */ dct->parsegettc.parse_badformat = parse->parse_badformat; parse->parse_badformat = 0; - + if (parse->parse_ldsize <= PARSE_TCMAX) { dct->parsegettc.parse_count = parse->parse_ldsize; @@ -771,7 +771,7 @@ parse_timecode( } } - + /*ARGSUSED*/ int parse_setfmt( @@ -792,7 +792,7 @@ parse_setfmt( if (parse->parse_pdata) FREE(parse->parse_pdata, parse->parse_plen); parse->parse_pdata = 0; - + parse->parse_plen = clockformats[i]->plen; if (parse->parse_plen) @@ -809,9 +809,9 @@ parse_setfmt( if (parse->parse_data) FREE(parse->parse_data, (unsigned)(parse->parse_dsize * 2 + 2)); parse->parse_ldata = parse->parse_data = 0; - + parse->parse_dsize = clockformats[i]->length; - + if (parse->parse_dsize) { parse->parse_data = (char*)MALLOC((unsigned)(parse->parse_dsize * 2 + 2)); @@ -820,20 +820,20 @@ parse_setfmt( if (parse->parse_pdata) FREE(parse->parse_pdata, parse->parse_plen); parse->parse_pdata = 0; - + parseprintf(DD_PARSE, ("init failed: malloc for data area failed\n")); return 0; } } - + /* * leave room for '\0' */ parse->parse_ldata = parse->parse_data + parse->parse_dsize + 1; - + parse->parse_lformat = i; - + return 1; } } @@ -852,7 +852,7 @@ parse_getfmt( if (dct->parseformat.parse_format < nformats && Strlen(clockformats[dct->parseformat.parse_format]->name) <= PARSE_TCMAX) { - dct->parseformat.parse_count = Strlen(clockformats[dct->parseformat.parse_format]->name)+1; + dct->parseformat.parse_count = (unsigned short) (Strlen(clockformats[dct->parseformat.parse_format]->name) + 1); memcpy(dct->parseformat.parse_buffer, clockformats[dct->parseformat.parse_format]->name, dct->parseformat.parse_count); return 1; } @@ -870,7 +870,7 @@ parse_setcs( ) { parse->parse_ioflags &= ~PARSE_IO_CSIZE; - parse->parse_ioflags |= dct->parsesetcs.parse_cs & PARSE_IO_CSIZE; + parse->parse_ioflags |= (int) (dct->parsesetcs.parse_cs & PARSE_IO_CSIZE); return 1; } diff --git a/libparse/parse_conf.c b/libparse/parse_conf.c index b7234dd..37871c9 100644 --- a/libparse/parse_conf.c +++ b/libparse/parse_conf.c @@ -1,6 +1,6 @@ /* * /src/NTP/ntp4-dev/libparse/parse_conf.c,v 4.9 2005/04/16 17:32:10 kardel RELEASE_20050508_A - * + * * parse_conf.c,v 4.9 2005/04/16 17:32:10 kardel RELEASE_20050508_A * * Parser configuration module for reference clocks @@ -12,7 +12,7 @@ * when STREAM is not defined NTP time stamps will be used. * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/libparse/parsesolaris.c b/libparse/parsesolaris.c index d3756af..8c91257 100644 --- a/libparse/parsesolaris.c +++ b/libparse/parsesolaris.c @@ -1,12 +1,12 @@ /* * /src/NTP/ntp4-dev/libparse/parsesolaris.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A - * + * * parsesolaris.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A * * STREAMS module for reference clocks * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -74,7 +74,7 @@ static struct fmodsw fmod_templ = extern struct mod_ops mod_strmodops; -static struct modlstrmod modlstrmod = +static struct modlstrmod modlstrmod = { &mod_strmodops, /* a STREAMS module */ "PARSE - NTP reference", /* name this baby - keep room for revision number */ @@ -100,13 +100,13 @@ _init( ) { static char revision[] = "4.6"; - char *s, *S; + char *s, *S; char *t; - + #ifndef lint t = rcsid; #endif - + /* * copy RCS revision into Drv_name * @@ -125,20 +125,20 @@ _init( } if (*s == ' ') s++; } - - t = modlstrmod.strmod_linkinfo; + + t = modlstrmod.strmod_linkinfo; while (*t && (*t != ' ')) { t++; } if (*t == ' ') t++; - + S = s; while (*S && (((*S >= '0') && (*S <= '9')) || (*S == '.'))) { S++; } - + if (*s && *t && (S > s)) { if (strlen(t) >= (S - s)) @@ -308,7 +308,7 @@ setup_stream( } else { - pprintf(DD_OPEN, "parse: setup_stream - FAILED - no MEMORY for allocb\n"); + pprintf(DD_OPEN, "parse: setup_stream - FAILED - no MEMORY for allocb\n"); return 0; } } @@ -325,18 +325,18 @@ parseopen( { register parsestream_t *parse; static int notice = 0; - - pprintf(DD_OPEN, "parse: OPEN - q=%x\n", q); - + + pprintf(DD_OPEN, "parse: OPEN - q=%x\n", q); + if (sflag != MODOPEN) { /* open only for modules */ - pprintf(DD_OPEN, "parse: OPEN - FAILED - not MODOPEN\n"); + pprintf(DD_OPEN, "parse: OPEN - FAILED - not MODOPEN\n"); return EIO; } if (q->q_ptr != (caddr_t)NULL) { - pprintf(DD_OPEN, "parse: OPEN - FAILED - EXCLUSIVE ONLY\n"); + pprintf(DD_OPEN, "parse: OPEN - FAILED - EXCLUSIVE ONLY\n"); return EBUSY; } @@ -346,10 +346,10 @@ parseopen( return ENOMEM; } - pprintf(DD_OPEN, "parse: OPEN - parse area q=%x, q->q_ptr=%x\n", q, q->q_ptr); + pprintf(DD_OPEN, "parse: OPEN - parse area q=%x, q->q_ptr=%x\n", q, q->q_ptr); WR(q)->q_ptr = q->q_ptr; - pprintf(DD_OPEN, "parse: OPEN - WQ parse area q=%x, q->q_ptr=%x\n", WR(q), WR(q)->q_ptr); - + pprintf(DD_OPEN, "parse: OPEN - WQ parse area q=%x, q->q_ptr=%x\n", WR(q), WR(q)->q_ptr); + parse = (parsestream_t *) q->q_ptr; bzero((caddr_t)parse, sizeof(*parse)); parse->parse_queue = q; @@ -360,7 +360,7 @@ parseopen( qprocson(q); - pprintf(DD_OPEN, "parse: OPEN - initializing io subsystem q=%x\n", q); + pprintf(DD_OPEN, "parse: OPEN - initializing io subsystem q=%x\n", q); if (!parse_ioinit(&parse->parse_io)) { @@ -374,12 +374,12 @@ parseopen( return EIO; } - pprintf(DD_OPEN, "parse: OPEN - initializing stream q=%x\n", q); + pprintf(DD_OPEN, "parse: OPEN - initializing stream q=%x\n", q); if (setup_stream(q, M_PARSE)) { (void) init_linemon(q); /* hook up PPS ISR routines if possible */ - pprintf(DD_OPEN, "parse: OPEN - SUCCEEDED\n"); + pprintf(DD_OPEN, "parse: OPEN - SUCCEEDED\n"); /* * I know that you know the delete key, but you didn't write this @@ -412,19 +412,19 @@ parseclose( { register parsestream_t *parse = (parsestream_t *)q->q_ptr; register unsigned long s; - + pprintf(DD_CLOSE, "parse: CLOSE\n"); - + qprocsoff(q); s = splhigh(); - + if (parse->parse_dqueue) close_linemon(parse->parse_dqueue, q); parse->parse_dqueue = (queue_t *)0; (void) splx(s); - + parse_ioend(&parse->parse_io); kmem_free((caddr_t)parse, sizeof(parsestream_t)); @@ -444,7 +444,7 @@ parsersvc( ) { mblk_t *mp; - + while ((mp = getq(q))) { if (canputnext(q) || (mp->b_datap->db_type > QPCTL)) @@ -477,15 +477,15 @@ parsewput( register mblk_t *datap; register struct iocblk *iocp; parsestream_t *parse = (parsestream_t *)q->q_ptr; - + pprintf(DD_WPUT, "parse: parsewput\n"); - + switch (mp->b_datap->db_type) { default: putnext(q, mp); break; - + case M_IOCTL: iocp = (void *)mp->b_rptr; switch (iocp->ioc_cmd) @@ -519,7 +519,7 @@ parsewput( iocp->ioc_count = sizeof(struct ppsclockev); qreply(q, mp); break; - + case PARSEIOC_ENABLE: case PARSEIOC_DISABLE: { @@ -537,7 +537,7 @@ parsewput( } qreply(q, mp); break; - } + } case PARSEIOC_TIMECODE: case PARSEIOC_SETFMT: @@ -553,7 +553,7 @@ parsewput( pprintf(DD_WPUT, "parse: parsewput - PARSEIOC_TIMECODE\n"); ok = parse_timecode(dct, &parse->parse_io); break; - + case PARSEIOC_SETFMT: pprintf(DD_WPUT, "parse: parsewput - PARSEIOC_SETFMT\n"); ok = parse_setfmt(dct, &parse->parse_io); @@ -600,7 +600,7 @@ rdchar( else { register mblk_t *mmp = *mp; - + *mp = (*mp)->b_cont; freeb(mmp); } @@ -619,7 +619,7 @@ parserput( { register unsigned char type; mblk_t *mp = imp; - + switch (type = mp->b_datap->db_type) { default: @@ -636,7 +636,7 @@ parserput( else putq(q, mp); break; - + case M_BREAK: case M_DATA: { @@ -691,7 +691,7 @@ parserput( if (nmp) freemsg(nmp); parse_iodone(&parse->parse_io); } - } + } } else { @@ -733,7 +733,7 @@ parserput( gethrestime(&hres_time); c_time.tv.tv_sec = hres_time.tv_sec; c_time.tv.tv_usec = hres_time.tv_nsec / 1000; - + pprintf(DD_RPUT, "parse: parserput - M_%sHANGUP\n", (type == M_HANGUP) ? "" : "UN"); if ((parse->parse_status & PARSE_ENABLE) && @@ -758,7 +758,7 @@ parserput( } else putq(q, mp); - + if (status) { parse->parse_ppsclockev.tv = c_time.tv; @@ -780,7 +780,7 @@ init_linemon( ) { register queue_t *dq; - + dq = WR(q); /* * we ARE doing very bad things down here (basically stealing ISR @@ -916,14 +916,14 @@ init_zs_linemon( szs->zsops.zsop_xsint = (void (*) (struct zscom *))zs_xsisr; /* place our bastard */ szs->oldzsops = zs->zs_ops; emergencyzs = zs->zs_ops; - + zs->zs_ops = &szs->zsops; /* hook it up */ /* - * XXX: this is usually done via zsopinit() + * XXX: this is usually done via zsopinit() * - have yet to find a way to call that routine */ zs->zs_xsint = (void (*) (struct zscom *))zs_xsisr; - + mutex_exit(zs->zs_excl); pprintf(DD_INSTALL, "init_zs_linemon: CD monitor installed\n"); @@ -934,7 +934,7 @@ init_zs_linemon( } /* - * unregister our ISR routine - must call under splhigh() (or + * unregister our ISR routine - must call under splhigh() (or * whatever block ZS status interrupts) */ static void @@ -970,7 +970,7 @@ close_zs_linemon( mutex_exit(zs->zs_excl); kmem_free((caddr_t)szs, sizeof (struct savedzsops)); - + pprintf(DD_INSTALL, "close_zs_linemon: CD monitor deleted\n"); return; } @@ -1005,7 +1005,7 @@ zs_xsisr( { timestamp_t cdevent; register int status; - + /* * time stamp */ @@ -1024,7 +1024,7 @@ zs_xsisr( * ok - now the hard part - find ourself */ loopcheck = MAXDEPTH; - + while (q) { if (q->q_qinfo && q->q_qinfo->qi_minfo) @@ -1052,7 +1052,7 @@ zs_xsisr( */ parse_iodone(&((parsestream_t *)q->q_ptr)->parse_io); } - + if (status) { ((parsestream_t *)q->q_ptr)->parse_ppsclockev.tv = cdevent.tv; @@ -1091,9 +1091,9 @@ zs_xsisr( SCC_WRITE0(ZSWR0_RESET_STATUS); /* might kill other conditions here */ return; } - } + } - pprintf(DD_ISR, "zs_xsisr: non CD event 0x%x for \"%s\"\n", + pprintf(DD_ISR, "zs_xsisr: non CD event 0x%x for \"%s\"\n", (za->za_rr0 ^ zsstatus) & ~ZSRR0_CD,dname); /* * we are now gathered here to process some unusual external status @@ -1108,7 +1108,7 @@ zs_xsisr( q = za->za_ttycommon.t_readq; loopcheck = MAXDEPTH; - + /* * the real thing for everything else ... */ @@ -1120,7 +1120,7 @@ zs_xsisr( if (!strcmp(dname, parseinfo.st_rdinit->qi_minfo->mi_idname)) { register void (*zsisr) (struct zscom *); - + /* * back home - phew (hopping along stream queues might * prove dangerous to your health) @@ -1129,7 +1129,7 @@ zs_xsisr( zsisr(zs); else panic("zs_xsisr: unable to locate original ISR"); - + pprintf(DD_ISR, "zs_xsisr: non CD event was processed for \"%s\"\n", dname); /* * now back to our program ... @@ -1151,7 +1151,7 @@ zs_xsisr( * corrupted TTY structures */ printf("zs_zsisr: looking for \"%s\" - found \"%s\" - taking EMERGENCY path\n", parseinfo.st_rdinit->qi_minfo->mi_idname, dname ? dname : "-NIL-"); - + if (emergencyzs && emergencyzs->zsop_xsint) emergencyzs->zsop_xsint(zs); else diff --git a/libparse/parsestreams.c b/libparse/parsestreams.c index 3fb4cc3..6cd9d8f 100644 --- a/libparse/parsestreams.c +++ b/libparse/parsestreams.c @@ -1,13 +1,13 @@ /* * /src/NTP/ntp4-dev/libparse/parsestreams.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A - * + * * parsestreams.c,v 4.11 2005/04/16 17:32:10 kardel RELEASE_20050508_A * * STREAMS module for reference clocks * (SunOS4.x) * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -110,7 +110,7 @@ static char mnam[] = "PARSEPPS "; /* name this baby - keep room for revision #else static char mnam[] = "PARSE "; /* name this baby - keep room for revision number */ #endif -struct vdldrv parsesync_vd = +struct vdldrv parsesync_vd = { VDMAGIC_PSEUDO, /* nothing like a real driver - a STREAMS module */ mnam, @@ -166,7 +166,7 @@ Strcmp( while (!(c = *s++ - *t++) && *s && *t) /* empty loop */; - + return c; } @@ -186,10 +186,10 @@ Strncmp( while (n-- && !(c = *s++ - *t++) && *s && *t) /* empty loop */; - + return c; } - + void ntp_memset( char *a, @@ -217,12 +217,12 @@ xxxinit( { extern struct fmodsw fmodsw[]; extern int fmodcnt; - + struct fmodsw *fm = fmodsw; struct fmodsw *fmend = &fmodsw[fmodcnt]; struct fmodsw *ifm = (struct fmodsw *)0; char *mname = parseinfo.st_rdinit->qi_minfo->mi_idname; - + switch (fc) { case VDLOAD: @@ -233,13 +233,13 @@ xxxinit( */ while (fm <= fmend) { - if (!Strncmp(fm->f_name, mname, FMNAMESZ)) + if (!Strncmp(fm->f_name, mname, FMNAMESZ)) { printf("vddrinit[%s]: STREAMS module already loaded.\n", mname); return(EBUSY); } else - if ((ifm == (struct fmodsw *)0) && + if ((ifm == (struct fmodsw *)0) && (fm->f_name[0] == '\0') && (fm->f_str == (struct streamtab *)0)) { @@ -261,7 +261,7 @@ xxxinit( { static char revision[] = "4.7"; char *s, *S, *t; - + s = rcsid; /* NOOP - keep compilers happy */ Strncpy(ifm->f_name, mname, FMNAMESZ); @@ -285,20 +285,20 @@ xxxinit( } if (*s == ' ') s++; } - - t = parsesync_vd.Drv_name; + + t = parsesync_vd.Drv_name; while (*t && (*t != ' ')) { t++; } if (*t == ' ') t++; - + S = s; while (*S && (((*S >= '0') && (*S <= '9')) || (*S == '.'))) { S++; } - + if (*s && *t && (S > s)) { if (Strlen(t) >= (S - s)) @@ -307,9 +307,9 @@ xxxinit( } } return (0); - } + } break; - + case VDUNLOAD: if (parsebusy > 0) { @@ -328,7 +328,7 @@ xxxinit( fm->f_name[0] = '\0'; fm->f_str = (struct streamtab *)0; fm++; - + break; } fm++; @@ -341,14 +341,14 @@ xxxinit( else return (0); } - + case VDSTAT: return (0); default: return (EIO); - + } return EIO; } @@ -460,7 +460,7 @@ setup_stream( } else { - parseprintf(DD_OPEN,("parse: setup_stream - FAILED - no MEMORY for allocb\n")); + parseprintf(DD_OPEN,("parse: setup_stream - FAILED - no MEMORY for allocb\n")); return 0; } } @@ -476,37 +476,37 @@ parseopen( { register parsestream_t *parse; static int notice = 0; - - parseprintf(DD_OPEN,("parse: OPEN\n")); - + + parseprintf(DD_OPEN,("parse: OPEN\n")); + if (sflag != MODOPEN) { /* open only for modules */ - parseprintf(DD_OPEN,("parse: OPEN - FAILED - not MODOPEN\n")); + parseprintf(DD_OPEN,("parse: OPEN - FAILED - not MODOPEN\n")); return OPENFAIL; } if (q->q_ptr != (caddr_t)NULL) { u.u_error = EBUSY; - parseprintf(DD_OPEN,("parse: OPEN - FAILED - EXCLUSIVE ONLY\n")); + parseprintf(DD_OPEN,("parse: OPEN - FAILED - EXCLUSIVE ONLY\n")); return OPENFAIL; } #ifdef VDDRV parsebusy++; #endif - + q->q_ptr = (caddr_t)kmem_alloc(sizeof(parsestream_t)); if (q->q_ptr == (caddr_t)0) { - parseprintf(DD_OPEN,("parse: OPEN - FAILED - no memory\n")); + parseprintf(DD_OPEN,("parse: OPEN - FAILED - no memory\n")); #ifdef VDDRV parsebusy--; #endif return OPENFAIL; } WR(q)->q_ptr = q->q_ptr; - + parse = (parsestream_t *)(void *)q->q_ptr; bzero((caddr_t)parse, sizeof(*parse)); parse->parse_queue = q; @@ -531,7 +531,7 @@ parseopen( { (void) init_linemon(q); /* hook up PPS ISR routines if possible */ - parseprintf(DD_OPEN,("parse: OPEN - SUCCEEDED\n")); + parseprintf(DD_OPEN,("parse: OPEN - SUCCEEDED\n")); /* * I know that you know the delete key, but you didn't write this @@ -569,17 +569,17 @@ parseclose( { register parsestream_t *parse = (parsestream_t *)(void *)q->q_ptr; register unsigned long s; - + parseprintf(DD_CLOSE,("parse: CLOSE\n")); - + s = splhigh(); - + if (parse->parse_dqueue) close_linemon(parse->parse_dqueue, q); parse->parse_dqueue = (queue_t *)0; (void) splx(s); - + parse_ioend(&parse->parse_io); kmem_free((caddr_t)parse, sizeof(parsestream_t)); @@ -602,7 +602,7 @@ parsersvc( ) { mblk_t *mp; - + while ((mp = getq(q))) { if (canput(q->q_next) || (mp->b_datap->db_type > QPCTL)) @@ -635,15 +635,15 @@ parsewput( register mblk_t *datap; register struct iocblk *iocp; parsestream_t *parse = (parsestream_t *)(void *)q->q_ptr; - + parseprintf(DD_WPUT,("parse: parsewput\n")); - + switch (mp->b_datap->db_type) { default: putnext(q, mp); break; - + case M_IOCTL: iocp = (struct iocblk *)(void *)mp->b_rptr; switch (iocp->ioc_cmd) @@ -676,7 +676,7 @@ parsewput( iocp->ioc_count = sizeof(struct ppsclockev); qreply(q, mp); break; - + case PARSEIOC_ENABLE: case PARSEIOC_DISABLE: { @@ -694,7 +694,7 @@ parsewput( } qreply(q, mp); break; - } + } case PARSEIOC_TIMECODE: case PARSEIOC_SETFMT: @@ -710,7 +710,7 @@ parsewput( parseprintf(DD_WPUT,("parse: parsewput - PARSEIOC_TIMECODE\n")); ok = parse_timecode(dct, &parse->parse_io); break; - + case PARSEIOC_SETFMT: parseprintf(DD_WPUT,("parse: parsewput - PARSEIOC_SETFMT\n")); ok = parse_setfmt(dct, &parse->parse_io); @@ -757,7 +757,7 @@ rdchar( else { register mblk_t *mmp = *mp; - + *mp = (*mp)->b_cont; freeb(mmp); } @@ -775,7 +775,7 @@ parserput( ) { unsigned char type; - + switch (type = mp->b_datap->db_type) { default: @@ -791,7 +791,7 @@ parserput( else putq(q, mp); break; - + case M_BREAK: case M_DATA: { @@ -844,7 +844,7 @@ parserput( if (nmp) freemsg(nmp); parse_iodone(&parse->parse_io); } - } + } } else { @@ -883,7 +883,7 @@ parserput( register int status = cd_invert ^ (type == M_UNHANGUP); uniqtime(&ctime.tv); - + parseprintf(DD_RPUT,("parse: parserput - M_%sHANGUP\n", (type == M_HANGUP) ? "" : "UN")); if ((parse->parse_status & PARSE_ENABLE) && @@ -908,7 +908,7 @@ parserput( } else putq(q, mp); - + if (status) { parse->parse_ppsclockev.tv = ctime.tv; @@ -930,7 +930,7 @@ init_linemon( ) { register queue_t *dq; - + dq = WR(q); /* * we ARE doing very bad things down here (basically stealing ISR @@ -1038,7 +1038,7 @@ init_zs_linemon( else { unsigned long s; - + /* * we do a direct replacement, in case others fiddle also * if somebody else grabs our hook and we disconnect @@ -1064,9 +1064,9 @@ init_zs_linemon( szs->zsops.zsop_xsint = zs_xsisr; /* place our bastard */ szs->oldzsops = zs->zs_ops; emergencyzs = zs->zs_ops; - + zsopinit(zs, &szs->zsops); /* hook it up */ - + (void) splx(s); parseprintf(DD_INSTALL, ("init_zs_linemon: CD monitor installed\n")); @@ -1099,11 +1099,11 @@ close_zs_linemon( else { register struct savedzsops *szs = (struct savedzsops *)parsestream->parse_data; - + zsopinit(zs, szs->oldzsops); /* reset to previous handler functions */ kmem_free((caddr_t)szs, sizeof (struct savedzsops)); - + parseprintf(DD_INSTALL, ("close_zs_linemon: CD monitor deleted\n")); return; } @@ -1148,7 +1148,7 @@ zs_xsisr( { timestamp_t cdevent; register int status; - + za->za_rr0 = (za->za_rr0 & ~(cdmask)) | (zsstatus & (cdmask)); #ifdef PPS_SYNC @@ -1163,7 +1163,7 @@ zs_xsisr( * time stamp */ uniqtime(&cdevent.tv); - + #ifdef PPS_SYNC (void)splx(s); #endif @@ -1190,7 +1190,7 @@ zs_xsisr( * ok - now the hard part - find ourself */ loopcheck = MAXDEPTH; - + while (q) { if (q->q_qinfo && q->q_qinfo->qi_minfo) @@ -1218,7 +1218,7 @@ zs_xsisr( */ parse_iodone(&((parsestream_t *)(void *)q->q_ptr)->parse_io); } - + if (status) { ((parsestream_t *)(void *)q->q_ptr)->parse_ppsclockev.tv = cdevent.tv; @@ -1251,13 +1251,13 @@ zs_xsisr( zsaddr->zscc_control = ZSWR0_RESET_STATUS; /* might kill other conditions here */ return 0; } - } + } if (zsstatus & cdmask) /* fake CARRIER status */ za->za_flags |= ZAS_CARR_ON; else za->za_flags &= ~ZAS_CARR_ON; - + /* * we are now gathered here to process some unusual external status * interrupts. @@ -1271,7 +1271,7 @@ zs_xsisr( q = za->za_ttycommon.t_readq; loopcheck = MAXDEPTH; - + /* * the real thing for everything else ... */ @@ -1283,7 +1283,7 @@ zs_xsisr( if (!Strcmp(dname, parseinfo.st_rdinit->qi_minfo->mi_idname)) { register int (*zsisr) (struct zscom *); - + /* * back home - phew (hopping along stream queues might * prove dangerous to your health) @@ -1292,7 +1292,7 @@ zs_xsisr( return zsisr(zs); else panic("zs_xsisr: unable to locate original ISR"); - + parseprintf(DD_ISR, ("zs_xsisr: non CD event was processed for \"%s\"\n", dname)); /* * now back to our program ... @@ -1314,7 +1314,7 @@ zs_xsisr( * corrupted TTY structures */ printf("zs_zsisr: looking for \"%s\" - found \"%s\" - taking EMERGENCY path\n", parseinfo.st_rdinit->qi_minfo->mi_idname, dname ? dname : "-NIL-"); - + if (emergencyzs && emergencyzs->zsop_xsint) emergencyzs->zsop_xsint(zs); else diff --git a/libparse/trim_info.c b/libparse/trim_info.c index 619e238..4178209 100644 --- a/libparse/trim_info.c +++ b/libparse/trim_info.c @@ -6,7 +6,7 @@ * $Created: Sun Aug 2 20:20:34 1998 $ * * Copyright (c) 1995-2005 by Frank Kardel ntp.org> - * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universität Erlangen-Nürnberg, Germany + * Copyright (c) 1989-1994 by Frank Kardel, Friedrich-Alexander Universitaet Erlangen-Nuernberg, Germany * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions diff --git a/ltmain.sh b/ltmain.sh new file mode 100755 index 0000000..3061e3c --- /dev/null +++ b/ltmain.sh @@ -0,0 +1,9636 @@ + +# libtool (GNU libtool) 2.4 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool 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 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4 +TIMESTAMP="" +package_revision=1.3293 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${EGREP="grep -E"} +: ${FGREP="grep -F"} +: ${GREP="grep"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SED="sed"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=: + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "$my_tmpdir" +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_append_quoted lastarg "$arg" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -e 's/\([\\"]\)/\\\1/g' \ + -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' + + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps ; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$opt_mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$opt_mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + func_append verstring ":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + func_append libobjs " $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_apped perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd1 in $cmds; do + IFS="$save_ifs" + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + func_append oldobjs " $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" + else + odir="$dir/$objdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" + + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case "$opt_mode" in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$opt_mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + func_append rmfiles " $odir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/missing b/missing new file mode 100755 index 0000000..894e786 --- /dev/null +++ b/missing @@ -0,0 +1,360 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2005-06-08.21 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# 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, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). +case "$1" in + lex|yacc) + # Not GNU programs, they don't have --version. + ;; + + tar) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/ntpd/Makefile.am b/ntpd/Makefile.am index b3af527..344ac8e 100644 --- a/ntpd/Makefile.am +++ b/ntpd/Makefile.am @@ -90,7 +90,7 @@ man_MANS= ntpd.$(NTPD_MS) LDADD_NTPD_COMMON = $(LDADD_LIBNTP) $(LIBOPTS_LDADD) $(PTHREAD_LIBS) LDADD_NTPD_COMMON += $(LIBM) $(LDADD_NTP) $(LSCF) -ntpd_LDADD = $(LDADD) ../libntp/libntp.a $(LDADD_LIBNTP) $(LIBM) $(LDADD_NTPD_COMMON) +ntpd_LDADD = $(LDADD) ../libntp/libntp.a $(LDADD_NTPD_COMMON) $(LDADD_LIBUTIL) ntpdsim_LDADD = $(LDADD) ../libntp/libntpsim.a $(LDADD_NTPD_COMMON) ntpdsim_CPPFLAGS = $(AM_CPPFLAGS) -DSIM check_y2k_LDADD = $(LDADD) ../libntp/libntp.a $(LDADD_LIBNTP) $(LIBM) $(LDADD_LIBNTP) $(PTHREAD_LIBS) diff --git a/ntpd/Makefile.in b/ntpd/Makefile.in index ddb2ad3..0eccb11 100644 --- a/ntpd/Makefile.in +++ b/ntpd/Makefile.in @@ -52,8 +52,7 @@ subdir = ntpd ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/libopts/m4/stdnoreturn.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap-thread-check.m4 \ - $(top_srcdir)/sntp/libevent/m4/openldap.m4 \ + $(top_srcdir)/sntp/m4/ax_c99_struct_init.m4 \ $(top_srcdir)/sntp/m4/define_dir.m4 \ $(top_srcdir)/sntp/m4/hms_search_lib.m4 \ $(top_srcdir)/sntp/m4/libtool.m4 \ @@ -64,6 +63,7 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_cacheversion.m4 \ $(top_srcdir)/sntp/m4/ntp_compiler.m4 \ $(top_srcdir)/sntp/m4/ntp_crosscompile.m4 \ + $(top_srcdir)/sntp/m4/ntp_crypto_rand.m4 \ $(top_srcdir)/sntp/m4/ntp_debug.m4 \ $(top_srcdir)/sntp/m4/ntp_dir_sep.m4 \ $(top_srcdir)/sntp/m4/ntp_facilitynames.m4 \ @@ -81,6 +81,8 @@ am__aclocal_m4_deps = $(top_srcdir)/sntp/libopts/m4/libopts.m4 \ $(top_srcdir)/sntp/m4/ntp_sntp.m4 \ $(top_srcdir)/sntp/m4/ntp_ver_suffix.m4 \ $(top_srcdir)/sntp/m4/ntp_vpathhack.m4 \ + $(top_srcdir)/sntp/m4/openldap-thread-check.m4 \ + $(top_srcdir)/sntp/m4/openldap.m4 \ $(top_srcdir)/sntp/m4/os_cflags.m4 \ $(top_srcdir)/sntp/m4/snprintf.m4 \ $(top_srcdir)/sntp/m4/version.m4 $(top_srcdir)/configure.ac @@ -157,8 +159,7 @@ am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) ntpd_DEPENDENCIES = $(am__DEPENDENCIES_2) ../libntp/libntp.a \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_3) + $(am__DEPENDENCIES_3) $(am__DEPENDENCIES_1) am__objects_2 = ntpdsim-ntp_config.$(OBJEXT) ntpdsim-ntp_io.$(OBJEXT) \ ntpdsim-ntp_parser.$(OBJEXT) ntpdsim-ntp_scanner.$(OBJEXT) \ ntpdsim-ntpd.$(OBJEXT) ntpdsim-ntpd-opts.$(OBJEXT) \ @@ -255,6 +256,7 @@ CHUTEST = @CHUTEST@ CONFIG_SHELL = @CONFIG_SHELL@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ +CPPFLAGS_LIBEVENT = @CPPFLAGS_LIBEVENT@ CPPFLAGS_NTP = @CPPFLAGS_NTP@ CXX = @CXX@ CXXCPP = @CXXCPP@ @@ -289,7 +291,9 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ +LDADD_LIBEVENT = @LDADD_LIBEVENT@ LDADD_LIBNTP = @LDADD_LIBNTP@ +LDADD_LIBUTIL = @LDADD_LIBUTIL@ LDADD_NLIST = @LDADD_NLIST@ LDADD_NTP = @LDADD_NTP@ LDFLAGS = @LDFLAGS@ @@ -428,6 +432,11 @@ TIMETRIM_DL = @TIMETRIM_DL@ TIMETRIM_DS = @TIMETRIM_DS@ TIMETRIM_MS = @TIMETRIM_MS@ TIMETRIM_NI = @TIMETRIM_NI@ +UPDATE_LEAP_DB = @UPDATE_LEAP_DB@ +UPDATE_LEAP_DL = @UPDATE_LEAP_DL@ +UPDATE_LEAP_DS = @UPDATE_LEAP_DS@ +UPDATE_LEAP_MS = @UPDATE_LEAP_MS@ +UPDATE_LEAP_NI = @UPDATE_LEAP_NI@ VERSION = @VERSION@ VER_SUFFIX = @VER_SUFFIX@ YACC = @YACC@ @@ -536,7 +545,7 @@ man_MANS = ntpd.$(NTPD_MS) # longer a reason to have ntpdbase-opts.def split off of ntpd-opts.def. LDADD_NTPD_COMMON = $(LDADD_LIBNTP) $(LIBOPTS_LDADD) $(PTHREAD_LIBS) \ $(LIBM) $(LDADD_NTP) $(LSCF) -ntpd_LDADD = $(LDADD) ../libntp/libntp.a $(LDADD_LIBNTP) $(LIBM) $(LDADD_NTPD_COMMON) +ntpd_LDADD = $(LDADD) ../libntp/libntp.a $(LDADD_NTPD_COMMON) $(LDADD_LIBUTIL) ntpdsim_LDADD = $(LDADD) ../libntp/libntpsim.a $(LDADD_NTPD_COMMON) ntpdsim_CPPFLAGS = $(AM_CPPFLAGS) -DSIM check_y2k_LDADD = $(LDADD) ../libntp/libntp.a $(LDADD_LIBNTP) $(LIBM) $(LDADD_LIBNTP) $(PTHREAD_LIBS) diff --git a/ntpd/cmd_args.c b/ntpd/cmd_args.c index 045c0a9..14e86f7 100644 --- a/ntpd/cmd_args.c +++ b/ntpd/cmd_args.c @@ -76,6 +76,9 @@ getCmdOpts( if (HAVE_OPT( PANICGATE )) allow_panic = TRUE; + if (HAVE_OPT( FORCE_STEP_ONCE )) + force_step_once = TRUE; + #ifdef HAVE_DROPROOT if (HAVE_OPT( JAILDIR )) { droproot = 1; @@ -175,14 +178,14 @@ getCmdOpts( if (HAVE_OPT( UPDATEINTERVAL )) { long val = OPT_VALUE_UPDATEINTERVAL; - + if (val >= 0) interface_interval = val; else { - fprintf(stderr, + fprintf(stderr, "command line interface update interval %ld must not be negative\n", val); - msyslog(LOG_ERR, + msyslog(LOG_ERR, "command line interface update interval %ld must not be negative", val); errflg++; diff --git a/ntpd/invoke-ntp.conf.texi b/ntpd/invoke-ntp.conf.texi index 78d3baf..7151efb 100644 --- a/ntpd/invoke-ntp.conf.texi +++ b/ntpd/invoke-ntp.conf.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntp.conf.texi) # -# It has been AutoGen-ed December 2, 2014 at 08:56:50 AM by AutoGen 5.18.5pre4 +# It has been AutoGen-ed April 7, 2015 at 04:25:50 AM by AutoGen 5.18.5pre4 # From the definitions ntp.conf.def # and the template file agtexi-file.tpl @end ignore @@ -365,6 +365,20 @@ in order to avoid accidental or malicious disruption in this mode, both the server and client should operate using symmetric-key or public-key authentication as described in @ref{Authentication Options}. +@item @code{mdnstries} @kbd{number} +If we are participating in mDNS, +after we have synched for the first time +we attempt to register with the mDNS system. +If that registration attempt fails, +we try again at one minute intervals for up to +@code{mdnstries} +times. +After all, +@code{ntpd} +may be starting before mDNS. +The default value for +@code{mdnstries} +is 5. @end table @node Authentication Support @subsection Authentication Support @@ -2468,7 +2482,7 @@ holds the names of all peer variables and the @code{clock_var_list} holds the names of the reference clock variables. -@item @code{tinker} @code{[@code{allan} @kbd{allan} | @code{dispersion} @kbd{dispersion} | @code{freq} @kbd{freq} | @code{huffpuff} @kbd{huffpuff} | @code{panic} @kbd{panic} | @code{step} @kbd{srep} | @code{stepout} @kbd{stepout}]} +@item @code{tinker} @code{[@code{allan} @kbd{allan} | @code{dispersion} @kbd{dispersion} | @code{freq} @kbd{freq} | @code{huffpuff} @kbd{huffpuff} | @code{panic} @kbd{panic} | @code{step} @kbd{step} | @code{stepback} @kbd{stepback} | @code{stepfwd} @kbd{stepfwd} | @code{stepout} @kbd{stepout}]} This command can be used to alter several system variables in very exceptional circumstances. It should occur in the @@ -2525,6 +2539,19 @@ adjustments will never occur. Note: The kernel time discipline is disabled if the step threshold is set to zero or greater than the default. +@item @code{stepback} @kbd{stepback} +The argument is the step threshold for the backward direction, +which by default is 0.128 s. +It can +be set to any positive number in seconds. +If both the forward and backward step thresholds are set to zero, step +adjustments will never occur. +Note: The kernel time discipline is +disabled if +each direction of step threshold are either +set to zero or greater than .5 second. +@item @code{stepfwd} @kbd{stepfwd} +As for stepback, but for the forward direction. @item @code{stepout} @kbd{stepout} The argument is the stepout timeout, which by default is 900 s. It can diff --git a/ntpd/invoke-ntp.keys.texi b/ntpd/invoke-ntp.keys.texi index b79bba8..b0d4940 100644 --- a/ntpd/invoke-ntp.keys.texi +++ b/ntpd/invoke-ntp.keys.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntp.keys.texi) # -# It has been AutoGen-ed December 2, 2014 at 08:56:52 AM by AutoGen 5.18.5pre4 +# It has been AutoGen-ed April 7, 2015 at 04:25:52 AM by AutoGen 5.18.5pre4 # From the definitions ntp.keys.def # and the template file agtexi-file.tpl @end ignore diff --git a/ntpd/invoke-ntpd.texi b/ntpd/invoke-ntpd.texi index 11ccce4..b6c69db 100644 --- a/ntpd/invoke-ntpd.texi +++ b/ntpd/invoke-ntpd.texi @@ -6,7 +6,7 @@ # # EDIT THIS FILE WITH CAUTION (invoke-ntpd.texi) # -# It has been AutoGen-ed December 2, 2014 at 08:56:55 AM by AutoGen 5.18.5pre4 +# It has been AutoGen-ed April 7, 2015 at 04:25:54 AM by AutoGen 5.18.5pre4 # From the definitions ntpd-opts.def # and the template file agtexi-cmd.tpl @end ignore @@ -95,6 +95,7 @@ This software is released under the NTP license, . * ntpd configfile:: configfile option (-c) * ntpd driftfile:: driftfile option (-f) * ntpd panicgate:: panicgate option (-g) +* ntpd force-step-once:: force-step-once option (-G) * ntpd jaildir:: jaildir option (-i) * ntpd interface:: interface option (-I) * ntpd keyfile:: keyfile option (-k) @@ -141,7 +142,7 @@ with a status code of 0. @exampleindent 0 @example -ntpd - NTP daemon program - Ver. 4.2.7p482 +ntpd - NTP daemon program - Ver. 4.2.8p2 Usage: ntpd [ - [] | --[@{=| @}] ]... \ [ ... ] Flg Arg Option-Name Description @@ -162,6 +163,7 @@ Usage: ntpd [ - [] | --[@{=| @}] ]... \ -f Str driftfile frequency drift file name -g no panicgate Allow the first adjustment to be Big - may appear multiple times + -G no force-step-once Step any initial offset correction. -i Str jaildir Jail directory -I Str interface Listen on an interface name or address - may appear multiple times @@ -298,7 +300,7 @@ The name and path of the frequency file, by default. This is the same operation as the @code{driftfile} @kbd{driftfile} -configuration specification in the +configuration specification in the @file{/etc/ntp.conf} file. @node ntpd panicgate @@ -326,6 +328,21 @@ options. See the @code{tinker} configuration file directive for other options. +@node ntpd force-step-once +@subsection force-step-once option (-G) +@cindex ntpd-force-step-once + +This is the ``step any initial offset correction.'' option. +Normally, +@code{ntpd} +steps the time if the time offset exceeds the step threshold, +which is 128 ms by default, and otherwise slews the time. +This option forces the initial offset correction to be stepped, +so the highest time accuracy can be achieved quickly. +However, this may also cause the time to be stepped back +so this option must not be used if +applications requiring monotonic time are running. +See the @code{tinker} configuration file directive for other options. @node ntpd jaildir @subsection jaildir option (-i) @cindex ntpd-jaildir @@ -370,7 +387,7 @@ Open the network address given, or all the addresses associated with the given interface name. This option may appear multiple times. This option also implies not opening other addresses, except wildcard and localhost. This option is deprecated. Please consider using the configuration file -@code{interface} command, which is more versatile. +@code{interface} command, which is more versatile. @node ntpd keyfile @subsection keyfile option (-k) @cindex ntpd-keyfile diff --git a/ntpd/keyword-gen-utd b/ntpd/keyword-gen-utd index 7474a56..b9b59bd 100644 --- a/ntpd/keyword-gen-utd +++ b/ntpd/keyword-gen-utd @@ -1 +1 @@ - * Generated 2013-08-04 04:56:14 UTC diff_ignore_line + * Generated 2015-03-16 09:05:44 UTC diff_ignore_line diff --git a/ntpd/keyword-gen.c b/ntpd/keyword-gen.c index d4f7758..5872e2a 100644 --- a/ntpd/keyword-gen.c +++ b/ntpd/keyword-gen.c @@ -97,6 +97,7 @@ struct key_tok ntp_keywords[] = { { "iburst", T_Iburst, FOLLBY_TOKEN }, { "key", T_Key, FOLLBY_TOKEN }, { "maxpoll", T_Maxpoll, FOLLBY_TOKEN }, +{ "mdnstries", T_Mdnstries, FOLLBY_TOKEN }, { "minpoll", T_Minpoll, FOLLBY_TOKEN }, { "mode", T_Mode, FOLLBY_TOKEN }, { "noselect", T_Noselect, FOLLBY_TOKEN }, @@ -205,6 +206,8 @@ struct key_tok ntp_keywords[] = { { "filenum", T_Filenum, FOLLBY_TOKEN }, /* tinker_option */ { "step", T_Step, FOLLBY_TOKEN }, +{ "stepback", T_Stepback, FOLLBY_TOKEN }, +{ "stepfwd", T_Stepfwd, FOLLBY_TOKEN }, { "panic", T_Panic, FOLLBY_TOKEN }, { "dispersion", T_Dispersion, FOLLBY_TOKEN }, { "stepout", T_Stepout, FOLLBY_TOKEN }, @@ -357,7 +360,7 @@ generate_fsm(void) fprintf(stderr, "keyword-gen sst[%u] too small " "for keyword '%s' id %d\n", - COUNTOF(sst), + (int)COUNTOF(sst), ntp_keywords[i].key, token); exit(4); diff --git a/ntpd/ntp.conf.5man b/ntpd/ntp.conf.5man index 389f23e..f1ed4b2 100644 --- a/ntpd/ntp.conf.5man +++ b/ntpd/ntp.conf.5man @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntp.conf 5man "02 Dec 2014" "4.2.7p482" "File Formats" +.TH ntp.conf 5man "07 Apr 2015" "4.2.8p2" "File Formats" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-7eaizK/ag-wfaayK) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-gKaW.1/ag-tKaO91) .\" -.\" It has been AutoGen-ed December 2, 2014 at 08:56:37 AM by AutoGen 5.18.5pre4 +.\" It has been AutoGen-ed April 7, 2015 at 04:25:37 AM by AutoGen 5.18.5pre4 .\" From the definitions ntp.conf.def .\" and the template file agman-cmd.tpl .SH NAME @@ -415,6 +415,21 @@ in order to avoid accidental or malicious disruption in this mode, both the server and client should operate using symmetric-key or public-key authentication as described in \fIAuthentication\f[] \fIOptions\f[]. +.TP 7 +.NOP \f\*[B-Font]mdnstries\f[] \f\*[I-Font]number\f[] +If we are participating in mDNS, +after we have synched for the first time +we attempt to register with the mDNS system. +If that registration attempt fails, +we try again at one minute intervals for up to +\f\*[B-Font]mdnstries\f[] +times. +After all, +\f\*[B-Font]ntpd\f[] +may be starting before mDNS. +The default value for +\f\*[B-Font]mdnstries\f[] +is 5. .PP .SH Authentication Support Authentication support allows the NTP client to verify that the @@ -2771,7 +2786,7 @@ the names of all peer variables and the \fIclock_var_list\f[] holds the names of the reference clock variables. .TP 7 -.NOP \f\*[B-Font]tinker\f[] [\f\*[B-Font]allan\f[] \f\*[I-Font]allan\f[] | \f\*[B-Font]dispersion\f[] \f\*[I-Font]dispersion\f[] | \f\*[B-Font]freq\f[] \f\*[I-Font]freq\f[] | \f\*[B-Font]huffpuff\f[] \f\*[I-Font]huffpuff\f[] | \f\*[B-Font]panic\f[] \f\*[I-Font]panic\f[] | \f\*[B-Font]step\f[] \f\*[I-Font]srep\f[] | \f\*[B-Font]stepout\f[] \f\*[I-Font]stepout\f[]] +.NOP \f\*[B-Font]tinker\f[] [\f\*[B-Font]allan\f[] \f\*[I-Font]allan\f[] | \f\*[B-Font]dispersion\f[] \f\*[I-Font]dispersion\f[] | \f\*[B-Font]freq\f[] \f\*[I-Font]freq\f[] | \f\*[B-Font]huffpuff\f[] \f\*[I-Font]huffpuff\f[] | \f\*[B-Font]panic\f[] \f\*[I-Font]panic\f[] | \f\*[B-Font]step\f[] \f\*[I-Font]step\f[] | \f\*[B-Font]stepback\f[] \f\*[I-Font]stepback\f[] | \f\*[B-Font]stepfwd\f[] \f\*[I-Font]stepfwd\f[] | \f\*[B-Font]stepout\f[] \f\*[I-Font]stepout\f[]] This command can be used to alter several system variables in very exceptional circumstances. It should occur in the @@ -2837,6 +2852,21 @@ Note: The kernel time discipline is disabled if the step threshold is set to zero or greater than the default. .TP 7 +.NOP \f\*[B-Font]stepback\f[] \f\*[I-Font]stepback\f[] +The argument is the step threshold for the backward direction, +which by default is 0.128 s. +It can +be set to any positive number in seconds. +If both the forward and backward step thresholds are set to zero, step +adjustments will never occur. +Note: The kernel time discipline is +disabled if +each direction of step threshold are either +set to zero or greater than .5 second. +.TP 7 +.NOP \f\*[B-Font]stepfwd\f[] \f\*[I-Font]stepfwd\f[] +As for stepback, but for the forward direction. +.TP 7 .NOP \f\*[B-Font]stepout\f[] \f\*[I-Font]stepout\f[] The argument is the stepout timeout, which by default is 900 s. It can @@ -2974,9 +3004,9 @@ RFC5905 .PP .SH "AUTHORS" -The University of Delaware +The University of Delaware and Network Time Foundation .SH "COPYRIGHT" -Copyright (C) 1970-2014 The University of Delaware all rights reserved. +Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation all rights reserved. This program is released under the terms of the NTP license, . .SH BUGS The syntax checking is not picky; some combinations of diff --git a/ntpd/ntp.conf.5mdoc b/ntpd/ntp.conf.5mdoc index 998a274..1a52a12 100644 --- a/ntpd/ntp.conf.5mdoc +++ b/ntpd/ntp.conf.5mdoc @@ -1,9 +1,9 @@ -.Dd December 2 2014 +.Dd April 7 2015 .Dt NTP_CONF 5mdoc File Formats .Os .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed December 2, 2014 at 08:56:58 AM by AutoGen 5.18.5pre4 +.\" It has been AutoGen-ed April 7, 2015 at 04:25:57 AM by AutoGen 5.18.5pre4 .\" From the definitions ntp.conf.def .\" and the template file agmdoc-cmd.tpl .Sh NAME @@ -402,6 +402,20 @@ in order to avoid accidental or malicious disruption in this mode, both the server and client should operate using symmetric\-key or public\-key authentication as described in .Sx Authentication Options . +.It Ic mdnstries Ar number +If we are participating in mDNS, +after we have synched for the first time +we attempt to register with the mDNS system. +If that registration attempt fails, +we try again at one minute intervals for up to +.Ic mdnstries +times. +After all, +.Ic ntpd +may be starting before mDNS. +The default value for +.Ic mdnstries +is 5. .El .Sh Authentication Support Authentication support allows the NTP client to verify that the @@ -2604,7 +2618,9 @@ holds the names of the reference clock variables. .Cm freq Ar freq | .Cm huffpuff Ar huffpuff | .Cm panic Ar panic | -.Cm step Ar srep | +.Cm step Ar step | +.Cm stepback Ar stepback | +.Cm stepfwd Ar stepfwd | .Cm stepout Ar stepout .Oc .Xc @@ -2664,6 +2680,19 @@ adjustments will never occur. Note: The kernel time discipline is disabled if the step threshold is set to zero or greater than the default. +.It Cm stepback Ar stepback +The argument is the step threshold for the backward direction, +which by default is 0.128 s. +It can +be set to any positive number in seconds. +If both the forward and backward step thresholds are set to zero, step +adjustments will never occur. +Note: The kernel time discipline is +disabled if +each direction of step threshold are either +set to zero or greater than .5 second. +.It Cm stepfwd Ar stepfwd +As for stepback, but for the forward direction. .It Cm stepout Ar stepout The argument is the stepout timeout, which by default is 900 s. It can @@ -2784,9 +2813,9 @@ A snapshot of this documentation is available in HTML format in .%O RFC5905 .Re .Sh "AUTHORS" -The University of Delaware +The University of Delaware and Network Time Foundation .Sh "COPYRIGHT" -Copyright (C) 1970\-2014 The University of Delaware all rights reserved. +Copyright (C) 1992\-2015 The University of Delaware and Network Time Foundation all rights reserved. This program is released under the terms of the NTP license, . .Sh BUGS The syntax checking is not picky; some combinations of diff --git a/ntpd/ntp.conf.def b/ntpd/ntp.conf.def index 5a5af21..e5c44b7 100644 --- a/ntpd/ntp.conf.def +++ b/ntpd/ntp.conf.def @@ -404,6 +404,20 @@ in order to avoid accidental or malicious disruption in this mode, both the server and client should operate using symmetric-key or public-key authentication as described in .Sx Authentication Options . +.It Ic mdnstries Ar number +If we are participating in mDNS, +after we have synched for the first time +we attempt to register with the mDNS system. +If that registration attempt fails, +we try again at one minute intervals for up to +.Ic mdnstries +times. +After all, +.Ic ntpd +may be starting before mDNS. +The default value for +.Ic mdnstries +is 5. .El .Sh Authentication Support Authentication support allows the NTP client to verify that the @@ -2606,7 +2620,9 @@ holds the names of the reference clock variables. .Cm freq Ar freq | .Cm huffpuff Ar huffpuff | .Cm panic Ar panic | -.Cm step Ar srep | +.Cm step Ar step | +.Cm stepback Ar stepback | +.Cm stepfwd Ar stepfwd | .Cm stepout Ar stepout .Oc .Xc @@ -2666,6 +2682,19 @@ adjustments will never occur. Note: The kernel time discipline is disabled if the step threshold is set to zero or greater than the default. +.It Cm stepback Ar stepback +The argument is the step threshold for the backward direction, +which by default is 0.128 s. +It can +be set to any positive number in seconds. +If both the forward and backward step thresholds are set to zero, step +adjustments will never occur. +Note: The kernel time discipline is +disabled if +each direction of step threshold are either +set to zero or greater than .5 second. +.It Cm stepfwd Ar stepfwd +As for stepback, but for the forward direction. .It Cm stepout Ar stepout The argument is the stepout timeout, which by default is 900 s. It can diff --git a/ntpd/ntp.conf.html b/ntpd/ntp.conf.html index 15632da..7ab25e3 100644 --- a/ntpd/ntp.conf.html +++ b/ntpd/ntp.conf.html @@ -33,7 +33,7 @@ Up: (dir)

    This document describes the configuration file for the NTP Project's ntpd program. -

    This document applies to version 4.2.7p482 of ntp.conf. +

    This document applies to version 4.2.8p2 of ntp.conf.

    Short Contents

    @@ -403,6 +403,19 @@ in order to avoid accidental or malicious disruption in this mode, both the server and client should operate using symmetric-key or public-key authentication as described in Authentication Options. +
    mdnstries number
    If we are participating in mDNS, +after we have synched for the first time +we attempt to register with the mDNS system. +If that registration attempt fails, +we try again at one minute intervals for up to +mdnstries +times. +After all, +ntpd +may be starting before mDNS. +The default value for +mdnstries +is 5.


    @@ -2450,7 +2463,7 @@ holds the names of all peer variables and the clock_var_list holds the names of the reference clock variables. -
    tinker [allan allan | dispersion dispersion | freq freq | huffpuff huffpuff | panic panic | step srep | stepout stepout]
    This command can be used to alter several system variables in +
    tinker [allan allan | dispersion dispersion | freq freq | huffpuff huffpuff | panic panic | step step | stepback stepback | stepfwd stepfwd | stepout stepout]
    This command can be used to alter several system variables in very exceptional circumstances. It should occur in the configuration file before any other configuration options. @@ -2500,6 +2513,17 @@ adjustments will never occur. Note: The kernel time discipline is disabled if the step threshold is set to zero or greater than the default. +
    stepback stepback
    The argument is the step threshold for the backward direction, +which by default is 0.128 s. +It can +be set to any positive number in seconds. +If both the forward and backward step thresholds are set to zero, step +adjustments will never occur. +Note: The kernel time discipline is +disabled if +each direction of step threshold are either +set to zero or greater than .5 second. +
    stepfwd stepfwd
    As for stepback, but for the forward direction.
    stepout stepout
    The argument is the stepout timeout, which by default is 900 s. It can be set to any positive number in seconds. diff --git a/ntpd/ntp.conf.man.in b/ntpd/ntp.conf.man.in index 3261b6c..548151d 100644 --- a/ntpd/ntp.conf.man.in +++ b/ntpd/ntp.conf.man.in @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntp.conf 5 "02 Dec 2014" "4.2.7p482" "File Formats" +.TH ntp.conf 5 "07 Apr 2015" "4.2.8p2" "File Formats" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-7eaizK/ag-wfaayK) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-gKaW.1/ag-tKaO91) .\" -.\" It has been AutoGen-ed December 2, 2014 at 08:56:37 AM by AutoGen 5.18.5pre4 +.\" It has been AutoGen-ed April 7, 2015 at 04:25:37 AM by AutoGen 5.18.5pre4 .\" From the definitions ntp.conf.def .\" and the template file agman-cmd.tpl .SH NAME @@ -415,6 +415,21 @@ in order to avoid accidental or malicious disruption in this mode, both the server and client should operate using symmetric-key or public-key authentication as described in \fIAuthentication\f[] \fIOptions\f[]. +.TP 7 +.NOP \f\*[B-Font]mdnstries\f[] \f\*[I-Font]number\f[] +If we are participating in mDNS, +after we have synched for the first time +we attempt to register with the mDNS system. +If that registration attempt fails, +we try again at one minute intervals for up to +\f\*[B-Font]mdnstries\f[] +times. +After all, +\f\*[B-Font]ntpd\f[] +may be starting before mDNS. +The default value for +\f\*[B-Font]mdnstries\f[] +is 5. .PP .SH Authentication Support Authentication support allows the NTP client to verify that the @@ -2771,7 +2786,7 @@ the names of all peer variables and the \fIclock_var_list\f[] holds the names of the reference clock variables. .TP 7 -.NOP \f\*[B-Font]tinker\f[] [\f\*[B-Font]allan\f[] \f\*[I-Font]allan\f[] | \f\*[B-Font]dispersion\f[] \f\*[I-Font]dispersion\f[] | \f\*[B-Font]freq\f[] \f\*[I-Font]freq\f[] | \f\*[B-Font]huffpuff\f[] \f\*[I-Font]huffpuff\f[] | \f\*[B-Font]panic\f[] \f\*[I-Font]panic\f[] | \f\*[B-Font]step\f[] \f\*[I-Font]srep\f[] | \f\*[B-Font]stepout\f[] \f\*[I-Font]stepout\f[]] +.NOP \f\*[B-Font]tinker\f[] [\f\*[B-Font]allan\f[] \f\*[I-Font]allan\f[] | \f\*[B-Font]dispersion\f[] \f\*[I-Font]dispersion\f[] | \f\*[B-Font]freq\f[] \f\*[I-Font]freq\f[] | \f\*[B-Font]huffpuff\f[] \f\*[I-Font]huffpuff\f[] | \f\*[B-Font]panic\f[] \f\*[I-Font]panic\f[] | \f\*[B-Font]step\f[] \f\*[I-Font]step\f[] | \f\*[B-Font]stepback\f[] \f\*[I-Font]stepback\f[] | \f\*[B-Font]stepfwd\f[] \f\*[I-Font]stepfwd\f[] | \f\*[B-Font]stepout\f[] \f\*[I-Font]stepout\f[]] This command can be used to alter several system variables in very exceptional circumstances. It should occur in the @@ -2837,6 +2852,21 @@ Note: The kernel time discipline is disabled if the step threshold is set to zero or greater than the default. .TP 7 +.NOP \f\*[B-Font]stepback\f[] \f\*[I-Font]stepback\f[] +The argument is the step threshold for the backward direction, +which by default is 0.128 s. +It can +be set to any positive number in seconds. +If both the forward and backward step thresholds are set to zero, step +adjustments will never occur. +Note: The kernel time discipline is +disabled if +each direction of step threshold are either +set to zero or greater than .5 second. +.TP 7 +.NOP \f\*[B-Font]stepfwd\f[] \f\*[I-Font]stepfwd\f[] +As for stepback, but for the forward direction. +.TP 7 .NOP \f\*[B-Font]stepout\f[] \f\*[I-Font]stepout\f[] The argument is the stepout timeout, which by default is 900 s. It can @@ -2974,9 +3004,9 @@ RFC5905 .PP .SH "AUTHORS" -The University of Delaware +The University of Delaware and Network Time Foundation .SH "COPYRIGHT" -Copyright (C) 1970-2014 The University of Delaware all rights reserved. +Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation all rights reserved. This program is released under the terms of the NTP license, . .SH BUGS The syntax checking is not picky; some combinations of diff --git a/ntpd/ntp.conf.mdoc.in b/ntpd/ntp.conf.mdoc.in index 3a236d5..da935ed 100644 --- a/ntpd/ntp.conf.mdoc.in +++ b/ntpd/ntp.conf.mdoc.in @@ -1,9 +1,9 @@ -.Dd December 2 2014 +.Dd April 7 2015 .Dt NTP_CONF 5 File Formats .Os .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed December 2, 2014 at 08:56:58 AM by AutoGen 5.18.5pre4 +.\" It has been AutoGen-ed April 7, 2015 at 04:25:57 AM by AutoGen 5.18.5pre4 .\" From the definitions ntp.conf.def .\" and the template file agmdoc-cmd.tpl .Sh NAME @@ -402,6 +402,20 @@ in order to avoid accidental or malicious disruption in this mode, both the server and client should operate using symmetric\-key or public\-key authentication as described in .Sx Authentication Options . +.It Ic mdnstries Ar number +If we are participating in mDNS, +after we have synched for the first time +we attempt to register with the mDNS system. +If that registration attempt fails, +we try again at one minute intervals for up to +.Ic mdnstries +times. +After all, +.Ic ntpd +may be starting before mDNS. +The default value for +.Ic mdnstries +is 5. .El .Sh Authentication Support Authentication support allows the NTP client to verify that the @@ -2604,7 +2618,9 @@ holds the names of the reference clock variables. .Cm freq Ar freq | .Cm huffpuff Ar huffpuff | .Cm panic Ar panic | -.Cm step Ar srep | +.Cm step Ar step | +.Cm stepback Ar stepback | +.Cm stepfwd Ar stepfwd | .Cm stepout Ar stepout .Oc .Xc @@ -2664,6 +2680,19 @@ adjustments will never occur. Note: The kernel time discipline is disabled if the step threshold is set to zero or greater than the default. +.It Cm stepback Ar stepback +The argument is the step threshold for the backward direction, +which by default is 0.128 s. +It can +be set to any positive number in seconds. +If both the forward and backward step thresholds are set to zero, step +adjustments will never occur. +Note: The kernel time discipline is +disabled if +each direction of step threshold are either +set to zero or greater than .5 second. +.It Cm stepfwd Ar stepfwd +As for stepback, but for the forward direction. .It Cm stepout Ar stepout The argument is the stepout timeout, which by default is 900 s. It can @@ -2784,9 +2813,9 @@ A snapshot of this documentation is available in HTML format in .%O RFC5905 .Re .Sh "AUTHORS" -The University of Delaware +The University of Delaware and Network Time Foundation .Sh "COPYRIGHT" -Copyright (C) 1970\-2014 The University of Delaware all rights reserved. +Copyright (C) 1992\-2015 The University of Delaware and Network Time Foundation all rights reserved. This program is released under the terms of the NTP license, . .Sh BUGS The syntax checking is not picky; some combinations of diff --git a/ntpd/ntp.keys.5man b/ntpd/ntp.keys.5man index 52acb7f..a505afb 100644 --- a/ntpd/ntp.keys.5man +++ b/ntpd/ntp.keys.5man @@ -1,8 +1,8 @@ -.TH ntp.keys 5man "02 Dec 2014" "4.2.7p482" "File Formats" +.TH ntp.keys 5man "07 Apr 2015" "4.2.8p2" "File Formats" .\" .\" EDIT THIS FILE WITH CAUTION (ntp.man) .\" -.\" It has been AutoGen-ed December 2, 2014 at 08:56:42 AM by AutoGen 5.18.5pre4 +.\" It has been AutoGen-ed April 7, 2015 at 04:25:42 AM by AutoGen 5.18.5pre4 .\" From the definitions ntp.keys.def .\" and the template file agman-file.tpl .Sh NAME @@ -158,9 +158,9 @@ the default name of the configuration file \fCntpdc\fR(1ntpdcmdoc)\f[], \fCsntp\fR(1sntpmdoc)\f[] .SH "AUTHORS" -The University of Delaware +The University of Delaware and Network Time Foundation .SH "COPYRIGHT" -Copyright (C) 1970-2014 The University of Delaware all rights reserved. +Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation all rights reserved. This program is released under the terms of the NTP license, . .SH "BUGS" Please send bug reports to: http://bugs.ntp.org, bugs@ntp.org diff --git a/ntpd/ntp.keys.5mdoc b/ntpd/ntp.keys.5mdoc index 56ad9c1..a7157ec 100644 --- a/ntpd/ntp.keys.5mdoc +++ b/ntpd/ntp.keys.5mdoc @@ -1,9 +1,9 @@ -.Dd December 2 2014 +.Dd April 7 2015 .Dt NTP_KEYS 5mdoc File Formats .Os SunOS 5.10 .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed December 2, 2014 at 08:57:01 AM by AutoGen 5.18.5pre4 +.\" It has been AutoGen-ed April 7, 2015 at 04:26:00 AM by AutoGen 5.18.5pre4 .\" From the definitions ntp.keys.def .\" and the template file agmdoc-file.tpl .Sh NAME @@ -145,9 +145,9 @@ it to autogen\-users@lists.sourceforge.net. Thank you. .Xr ntpdc 1ntpdcmdoc , .Xr sntp 1sntpmdoc .Sh "AUTHORS" -The University of Delaware +The University of Delaware and Network Time Foundation .Sh "COPYRIGHT" -Copyright (C) 1970\-2014 The University of Delaware all rights reserved. +Copyright (C) 1992\-2015 The University of Delaware and Network Time Foundation all rights reserved. This program is released under the terms of the NTP license, . .Sh "BUGS" Please send bug reports to: http://bugs.ntp.org, bugs@ntp.org diff --git a/ntpd/ntp.keys.html b/ntpd/ntp.keys.html index ab4b9b7..98a22ef 100644 --- a/ntpd/ntp.keys.html +++ b/ntpd/ntp.keys.html @@ -33,7 +33,7 @@ Up: (dir)

    This document describes the symmetric key file for the NTP Project's ntpd program. -

    This document applies to version 4.2.7p482 of ntp.keys. +

    This document applies to version 4.2.8p2 of ntp.keys.

    Short Contents

    diff --git a/ntpd/ntp.keys.man.in b/ntpd/ntp.keys.man.in index 943b27e..c7585af 100644 --- a/ntpd/ntp.keys.man.in +++ b/ntpd/ntp.keys.man.in @@ -1,8 +1,8 @@ -.TH ntp.keys 5 "02 Dec 2014" "4.2.7p482" "File Formats" +.TH ntp.keys 5 "07 Apr 2015" "4.2.8p2" "File Formats" .\" .\" EDIT THIS FILE WITH CAUTION (ntp.man) .\" -.\" It has been AutoGen-ed December 2, 2014 at 08:56:42 AM by AutoGen 5.18.5pre4 +.\" It has been AutoGen-ed April 7, 2015 at 04:25:42 AM by AutoGen 5.18.5pre4 .\" From the definitions ntp.keys.def .\" and the template file agman-file.tpl .Sh NAME @@ -158,9 +158,9 @@ the default name of the configuration file \fCntpdc\fR(@NTPDC_MS@)\f[], \fCsntp\fR(@SNTP_MS@)\f[] .SH "AUTHORS" -The University of Delaware +The University of Delaware and Network Time Foundation .SH "COPYRIGHT" -Copyright (C) 1970-2014 The University of Delaware all rights reserved. +Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation all rights reserved. This program is released under the terms of the NTP license, . .SH "BUGS" Please send bug reports to: http://bugs.ntp.org, bugs@ntp.org diff --git a/ntpd/ntp.keys.mdoc.in b/ntpd/ntp.keys.mdoc.in index b2a24e9..e6590db 100644 --- a/ntpd/ntp.keys.mdoc.in +++ b/ntpd/ntp.keys.mdoc.in @@ -1,9 +1,9 @@ -.Dd December 2 2014 +.Dd April 7 2015 .Dt NTP_KEYS 5 File Formats .Os SunOS 5.10 .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc) .\" -.\" It has been AutoGen-ed December 2, 2014 at 08:57:01 AM by AutoGen 5.18.5pre4 +.\" It has been AutoGen-ed April 7, 2015 at 04:26:00 AM by AutoGen 5.18.5pre4 .\" From the definitions ntp.keys.def .\" and the template file agmdoc-file.tpl .Sh NAME @@ -145,9 +145,9 @@ it to autogen\-users@lists.sourceforge.net. Thank you. .Xr ntpdc @NTPDC_MS@ , .Xr sntp @SNTP_MS@ .Sh "AUTHORS" -The University of Delaware +The University of Delaware and Network Time Foundation .Sh "COPYRIGHT" -Copyright (C) 1970\-2014 The University of Delaware all rights reserved. +Copyright (C) 1992\-2015 The University of Delaware and Network Time Foundation all rights reserved. This program is released under the terms of the NTP license, . .Sh "BUGS" Please send bug reports to: http://bugs.ntp.org, bugs@ntp.org diff --git a/ntpd/ntp_config.c b/ntpd/ntp_config.c index 0f48983..a224579 100644 --- a/ntpd/ntp_config.c +++ b/ntpd/ntp_config.c @@ -128,6 +128,8 @@ typedef struct peer_resolved_ctx_tag { #define ISEOL(c) ((c) == '#' || (c) == '\n' || (c) == '\0') #define ISSPACE(c) ((c) == ' ' || (c) == '\t') +#define _UC(str) ((char *)(intptr_t)(str)) + /* * Definitions of things either imported from or exported to outside */ @@ -316,6 +318,7 @@ static void config_ntpd(config_tree *); static void config_other_modes(config_tree *); static void config_auth(config_tree *); static void config_access(config_tree *); +static void config_mdnstries(config_tree *); static void config_phone(config_tree *); static void config_setvar(config_tree *); static void config_ttl(config_tree *); @@ -355,6 +358,7 @@ static u_int32 get_logmask(const char *); #ifndef SIM static int getnetnum(const char *num, sockaddr_u *addr, int complain, enum gnn_type a_type); + #endif @@ -392,6 +396,7 @@ init_syntax_tree( ) { ZERO(*ptree); + ptree->mdnstries = 5; } @@ -502,7 +507,7 @@ dump_config_tree( int_node *counter_set; string_node *str_node; - const char *s; + const char *s = NULL; char *s1; char *s2; char timestamp[80]; @@ -1105,7 +1110,7 @@ create_attr_rangeval( attr_val * create_attr_sval( int attr, - char *s + const char *s ) { attr_val *my_val; @@ -1114,7 +1119,7 @@ create_attr_sval( my_val->attr = attr; if (NULL == s) /* free() hates NULL */ s = estrdup(""); - my_val->value.s = s; + my_val->value.s = _UC(s); my_val->type = T_String; return my_val; @@ -1329,7 +1334,7 @@ create_unpeer_node( * We treat all valid 16-bit numbers as association IDs. */ pch = addr->address; - while (*pch && isdigit(*pch)) + while (*pch && isdigit((unsigned char)*pch)) pch++; if (!*pch @@ -2457,12 +2462,12 @@ config_access( /* It would be swell if we could identify the line number */ if ((RES_KOD & flags) && !(RES_LIMITED & flags)) { - char *kod_where = (my_node->addr) + const char *kod_where = (my_node->addr) ? my_node->addr->address : (mflags & RESM_SOURCE) ? "source" : "default"; - char *kod_warn = "KOD does nothing without LIMITED."; + const char *kod_warn = "KOD does nothing without LIMITED."; fprintf(stderr, "restrict %s: %s\n", kod_where, kod_warn); msyslog(LOG_WARNING, "restrict %s: %s", kod_where, kod_warn); @@ -2700,6 +2705,14 @@ config_tinker( item = LOOP_MAX; break; + case T_Stepback: + item = LOOP_MAX_BACK; + break; + + case T_Stepfwd: + item = LOOP_MAX_FWD; + break; + case T_Stepout: item = LOOP_MINSTEP; break; @@ -3033,7 +3046,7 @@ config_phone( config_tree *ptree ) { - int i; + size_t i; string_node * sn; i = 0; @@ -3045,13 +3058,23 @@ config_phone( sys_phone[i] = NULL; } else { msyslog(LOG_INFO, - "phone: Number of phone entries exceeds %lu. Ignoring phone %s...", - (u_long)(COUNTOF(sys_phone) - 1), sn->s); + "phone: Number of phone entries exceeds %zu. Ignoring phone %s...", + (COUNTOF(sys_phone) - 1), sn->s); } } } #endif /* !SIM */ +static void +config_mdnstries( + config_tree *ptree + ) +{ +#ifdef HAVE_DNSREGISTRATION + extern int mdnstries; + mdnstries = ptree->mdnstries; +#endif /* HAVE_DNSREGISTRATION */ +} #ifdef FREE_CFG_T static void @@ -3110,7 +3133,7 @@ config_ttl( config_tree *ptree ) { - int i = 0; + size_t i = 0; int_node *curr_ttl; curr_ttl = HEAD_PFIFO(ptree->ttl); @@ -3119,8 +3142,8 @@ config_ttl( sys_ttl[i++] = (u_char)curr_ttl->i; else msyslog(LOG_INFO, - "ttl: Number of TTL entries exceeds %lu. Ignoring TTL %d...", - (u_long)COUNTOF(sys_ttl), curr_ttl->i); + "ttl: Number of TTL entries exceeds %zu. Ignoring TTL %d...", + COUNTOF(sys_ttl), curr_ttl->i); } sys_ttlmax = i - 1; } @@ -4286,6 +4309,7 @@ config_ntpd( config_system_opts(ptree); config_logconfig(ptree); config_phone(ptree); + config_mdnstries(ptree); config_setvar(ptree); config_ttl(ptree); config_trap(ptree); @@ -4427,7 +4451,7 @@ getconfig( && check_netinfo && !(config_netinfo = get_netinfo_config()) #endif /* HAVE_NETINFO */ ) { - msyslog(LOG_INFO, "getconfig: Couldn't open <%s>", FindConfig(config_file)); + msyslog(LOG_INFO, "getconfig: Couldn't open <%s>: %m", FindConfig(config_file)); #ifndef SYS_WINNT io_open_sockets(); @@ -4441,7 +4465,7 @@ getconfig( * Broadcast clients can sometimes run without * a configuration file. */ - msyslog(LOG_INFO, "getconfig: Couldn't open <%s>", FindConfig(alt_config_file)); + msyslog(LOG_INFO, "getconfig: Couldn't open <%s>: %m", FindConfig(alt_config_file)); io_open_sockets(); return; @@ -4886,7 +4910,7 @@ ntp_rlimit( int rl_what, rlim_t rl_value, int rl_scale, - char * rl_sstr + const char * rl_sstr ) { struct rlimit rl; diff --git a/ntpd/ntp_control.c b/ntpd/ntp_control.c index 266978e..aa9f78c 100644 --- a/ntpd/ntp_control.c +++ b/ntpd/ntp_control.c @@ -58,13 +58,10 @@ static u_short ctlclkstatus (struct refclockstat *); static void ctl_flushpkt (u_char); static void ctl_putdata (const char *, unsigned int, int); static void ctl_putstr (const char *, const char *, size_t); -static void ctl_putdblf (const char *, const char *, double); -const char ctl_def_dbl_fmt[] = "%.3f"; -#define ctl_putdbl(tag, d) ctl_putdblf(tag, ctl_def_dbl_fmt, d) -const char ctl_def_dbl6_fmt[] = "%.6f"; -#define ctl_putdbl6(tag, d) ctl_putdblf(tag, ctl_def_dbl6_fmt, d) -const char ctl_def_sfp_fmt[] = "%g"; -#define ctl_putsfp(tag, sfp) ctl_putdblf(tag, ctl_def_sfp_fmt, \ +static void ctl_putdblf (const char *, int, int, double); +#define ctl_putdbl(tag, d) ctl_putdblf(tag, 1, 3, d) +#define ctl_putdbl6(tag, d) ctl_putdblf(tag, 1, 6, d) +#define ctl_putsfp(tag, sfp) ctl_putdblf(tag, 0, -1, \ FPTOD(sfp)) static void ctl_putuint (const char *, u_long); static void ctl_puthex (const char *, u_long); @@ -223,7 +220,8 @@ static const struct ctl_proc control_codes[] = { #define CS_TIMER_OVERRUNS 86 #define CS_TIMER_XMTS 87 #define CS_FUZZ 88 -#define CS_MAX_NOAUTOKEY CS_FUZZ +#define CS_WANDER_THRESH 89 +#define CS_MAX_NOAUTOKEY CS_WANDER_THRESH #ifdef AUTOKEY #define CS_FLAGS (1 + CS_MAX_NOAUTOKEY) #define CS_HOST (2 + CS_MAX_NOAUTOKEY) @@ -418,6 +416,7 @@ static const struct ctl_var sys_var[] = { { CS_TIMER_OVERRUNS, RO, "timer_overruns" }, /* 86 */ { CS_TIMER_XMTS, RO, "timer_xmts" }, /* 87 */ { CS_FUZZ, RO, "fuzz" }, /* 88 */ + { CS_WANDER_THRESH, RO, "clk_wander_threshold" }, /* 89 */ #ifdef AUTOKEY { CS_FLAGS, RO, "flags" }, /* 1 + CS_MAX_NOAUTOKEY */ { CS_HOST, RO, "host" }, /* 2 + CS_MAX_NOAUTOKEY */ @@ -480,7 +479,7 @@ static const struct ctl_var peer_var[] = { { 0, PADDING, "" }, /* 0 */ { CP_CONFIG, RO, "config" }, /* 1 */ { CP_AUTHENABLE, RO, "authenable" }, /* 2 */ - { CP_AUTHENTIC, RO, "authentic" }, /* 3 */ + { CP_AUTHENTIC, RO, "authentic" }, /* 3 */ { CP_SRCADR, RO, "srcadr" }, /* 4 */ { CP_SRCPORT, RO, "srcport" }, /* 5 */ { CP_DSTADR, RO, "dstadr" }, /* 6 */ @@ -532,7 +531,7 @@ static const struct ctl_var peer_var[] = { { CP_FLAGS, RO, "flags" }, /* 1 + CP_MAX_NOAUTOKEY */ { CP_HOST, RO, "host" }, /* 2 + CP_MAX_NOAUTOKEY */ { CP_VALID, RO, "valid" }, /* 3 + CP_MAX_NOAUTOKEY */ - { CP_INITSEQ, RO, "initsequence" }, /* 4 + CP_MAX_NOAUTOKEY */ + { CP_INITSEQ, RO, "initsequence" }, /* 4 + CP_MAX_NOAUTOKEY */ { CP_INITKEY, RO, "initkey" }, /* 5 + CP_MAX_NOAUTOKEY */ { CP_INITTSP, RO, "timestamp" }, /* 6 + CP_MAX_NOAUTOKEY */ { CP_SIGNATURE, RO, "signature" }, /* 7 + CP_MAX_NOAUTOKEY */ @@ -685,37 +684,37 @@ int num_ctl_traps; */ #ifdef REFCLOCK static const u_char clocktypes[] = { - CTL_SST_TS_NTP, /* REFCLK_NONE (0) */ + CTL_SST_TS_NTP, /* REFCLK_NONE (0) */ CTL_SST_TS_LOCAL, /* REFCLK_LOCALCLOCK (1) */ - CTL_SST_TS_UHF, /* deprecated REFCLK_GPS_TRAK (2) */ + CTL_SST_TS_UHF, /* deprecated REFCLK_GPS_TRAK (2) */ CTL_SST_TS_HF, /* REFCLK_WWV_PST (3) */ CTL_SST_TS_LF, /* REFCLK_WWVB_SPECTRACOM (4) */ - CTL_SST_TS_UHF, /* REFCLK_TRUETIME (5) */ - CTL_SST_TS_UHF, /* REFCLK_IRIG_AUDIO (6) */ + CTL_SST_TS_UHF, /* REFCLK_TRUETIME (5) */ + CTL_SST_TS_UHF, /* REFCLK_IRIG_AUDIO (6) */ CTL_SST_TS_HF, /* REFCLK_CHU (7) */ CTL_SST_TS_LF, /* REFCLOCK_PARSE (default) (8) */ CTL_SST_TS_LF, /* REFCLK_GPS_MX4200 (9) */ - CTL_SST_TS_UHF, /* REFCLK_GPS_AS2201 (10) */ - CTL_SST_TS_UHF, /* REFCLK_GPS_ARBITER (11) */ - CTL_SST_TS_UHF, /* REFCLK_IRIG_TPRO (12) */ + CTL_SST_TS_UHF, /* REFCLK_GPS_AS2201 (10) */ + CTL_SST_TS_UHF, /* REFCLK_GPS_ARBITER (11) */ + CTL_SST_TS_UHF, /* REFCLK_IRIG_TPRO (12) */ CTL_SST_TS_ATOM, /* REFCLK_ATOM_LEITCH (13) */ CTL_SST_TS_LF, /* deprecated REFCLK_MSF_EES (14) */ - CTL_SST_TS_NTP, /* not used (15) */ - CTL_SST_TS_UHF, /* REFCLK_IRIG_BANCOMM (16) */ - CTL_SST_TS_UHF, /* REFCLK_GPS_DATU (17) */ + CTL_SST_TS_NTP, /* not used (15) */ + CTL_SST_TS_UHF, /* REFCLK_IRIG_BANCOMM (16) */ + CTL_SST_TS_UHF, /* REFCLK_GPS_DATU (17) */ CTL_SST_TS_TELEPHONE, /* REFCLK_NIST_ACTS (18) */ CTL_SST_TS_HF, /* REFCLK_WWV_HEATH (19) */ - CTL_SST_TS_UHF, /* REFCLK_GPS_NMEA (20) */ - CTL_SST_TS_UHF, /* REFCLK_GPS_VME (21) */ + CTL_SST_TS_UHF, /* REFCLK_GPS_NMEA (20) */ + CTL_SST_TS_UHF, /* REFCLK_GPS_VME (21) */ CTL_SST_TS_ATOM, /* REFCLK_ATOM_PPS (22) */ CTL_SST_TS_NTP, /* not used (23) */ CTL_SST_TS_NTP, /* not used (24) */ - CTL_SST_TS_NTP, /* not used (25) */ - CTL_SST_TS_UHF, /* REFCLK_GPS_HP (26) */ + CTL_SST_TS_NTP, /* not used (25) */ + CTL_SST_TS_UHF, /* REFCLK_GPS_HP (26) */ CTL_SST_TS_LF, /* REFCLK_ARCRON_MSF (27) */ CTL_SST_TS_UHF, /* REFCLK_SHM (28) */ - CTL_SST_TS_UHF, /* REFCLK_PALISADE (29) */ - CTL_SST_TS_UHF, /* REFCLK_ONCORE (30) */ + CTL_SST_TS_UHF, /* REFCLK_PALISADE (29) */ + CTL_SST_TS_UHF, /* REFCLK_ONCORE (30) */ CTL_SST_TS_UHF, /* REFCLK_JUPITER (31) */ CTL_SST_TS_LF, /* REFCLK_CHRONOLOG (32) */ CTL_SST_TS_LF, /* REFCLK_DUMBCLOCK (33) */ @@ -723,7 +722,7 @@ static const u_char clocktypes[] = { CTL_SST_TS_LF, /* REFCLK_PCF (35) */ CTL_SST_TS_HF, /* REFCLK_WWV (36) */ CTL_SST_TS_LF, /* REFCLK_FG (37) */ - CTL_SST_TS_UHF, /* REFCLK_HOPF_SERIAL (38) */ + CTL_SST_TS_UHF, /* REFCLK_HOPF_SERIAL (38) */ CTL_SST_TS_UHF, /* REFCLK_HOPF_PCI (39) */ CTL_SST_TS_LF, /* REFCLK_JJY (40) */ CTL_SST_TS_UHF, /* REFCLK_TT560 (41) */ @@ -754,17 +753,17 @@ static u_char ctl_sys_num_events; u_long ctltimereset; /* time stats reset */ u_long numctlreq; /* number of requests we've received */ u_long numctlbadpkts; /* number of bad control packets */ -u_long numctlresponses; /* number of resp packets sent with data */ -u_long numctlfrags; /* number of fragments sent */ +u_long numctlresponses; /* number of resp packets sent with data */ +u_long numctlfrags; /* number of fragments sent */ u_long numctlerrors; /* number of error responses sent */ u_long numctltooshort; /* number of too short input packets */ -u_long numctlinputresp; /* number of responses on input */ -u_long numctlinputfrag; /* number of fragments on input */ +u_long numctlinputresp; /* number of responses on input */ +u_long numctlinputfrag; /* number of fragments on input */ u_long numctlinputerr; /* number of input pkts with err bit set */ -u_long numctlbadoffset; /* number of input pkts with nonzero offset */ +u_long numctlbadoffset; /* number of input pkts with nonzero offset */ u_long numctlbadversion; /* number of input pkts with unknown version */ u_long numctldatatooshort; /* data too short for count */ -u_long numctlbadop; /* bad op code found in packet */ +u_long numctlbadop; /* bad op code found in packet */ u_long numasyncmsgs; /* number of async messages we've sent */ /* @@ -783,6 +782,7 @@ static int res_offset; /* offset of payload in response */ static u_char * datapt; static u_char * dataend; static int datalinelen; +static int datasent; /* flag to avoid initial ", " */ static int datanotbinflag; static sockaddr_u *rmt_addr; static struct interface *lcl_inter; @@ -801,13 +801,17 @@ static u_char res_async; /* sending async trap response? */ static char *reqpt; static char *reqend; +#ifndef MIN +#define MIN(a, b) (((a) <= (b)) ? (a) : (b)) +#endif + /* * init_control - initialize request data */ void init_control(void) { - int i; + size_t i; #ifdef HAVE_UNAME uname(&utsnamebuf); @@ -842,9 +846,9 @@ ctl_error( * Fill in the fields. We assume rpkt.sequence and rpkt.associd * have already been filled in. */ - rpkt.r_m_e_op = CTL_RESPONSE | CTL_ERROR | + rpkt.r_m_e_op = (u_char)CTL_RESPONSE | CTL_ERROR | (res_opcode & CTL_OP_MASK); - rpkt.status = htons((errcode << 8) & 0xff00); + rpkt.status = htons((u_short)(errcode << 8) & 0xff00); rpkt.count = 0; /* @@ -860,7 +864,7 @@ ctl_error( CTL_HEADER_LEN); } -/* +/* * save_config - Implements ntpq -c "saveconfig " * Writes current configuration including any runtime * changes by ntpq's :config or config-from-file @@ -919,11 +923,12 @@ save_config( * allow timestamping of the saved config filename with * strftime() format such as: * ntpq -c "saveconfig ntp-%Y%m%d-%H%M%S.conf" + * XXX: Nice feature, but not too safe. */ if (0 == strftime(filename, sizeof(filename), filespec, localtime(&now))) strlcpy(filename, filespec, sizeof(filename)); - + /* * Conceptually we should be searching for DIRSEP in filename, * however Windows actually recognizes both forward and @@ -1003,7 +1008,7 @@ process_control( const struct ctl_proc *cc; keyid_t *pkid; int properlen; - int maclen; + size_t maclen; DPRINTF(3, ("in process_control()\n")); @@ -1019,11 +1024,11 @@ process_control( * If the length is less than required for the header, or * it is a response or a fragment, ignore this. */ - if (rbufp->recv_length < CTL_HEADER_LEN + if (rbufp->recv_length < (int)CTL_HEADER_LEN || (CTL_RESPONSE | CTL_MORE | CTL_ERROR) & pkt->r_m_e_op || pkt->offset != 0) { DPRINTF(1, ("invalid format in control packet\n")); - if (rbufp->recv_length < CTL_HEADER_LEN) + if (rbufp->recv_length < (int)CTL_HEADER_LEN) numctltooshort++; if (CTL_RESPONSE & pkt->r_m_e_op) numctlinputresp++; @@ -1063,6 +1068,7 @@ process_control( req_count = (int)ntohs(pkt->count); datanotbinflag = FALSE; datalinelen = 0; + datasent = 0; datapt = rpkt.u.data; dataend = &rpkt.u.data[CTL_MAX_DATA_LEN]; @@ -1092,7 +1098,7 @@ process_control( res_authenticate = TRUE; pkid = (void *)((char *)pkt + properlen); res_keyid = ntohl(*pkid); - DPRINTF(3, ("recv_len %d, properlen %d, wants auth with keyid %08x, MAC length=%d\n", + DPRINTF(3, ("recv_len %d, properlen %d, wants auth with keyid %08x, MAC length=%zu\n", rbufp->recv_length, properlen, res_keyid, maclen)); @@ -1216,7 +1222,7 @@ ctl_flushpkt( u_char more ) { - int i; + size_t i; int dlen; int sendlen; int maclen; @@ -1312,16 +1318,17 @@ static void ctl_putdata( const char *dp, unsigned int dlen, - int bin /* set to 1 when data is binary */ + int bin /* set to 1 when data is binary */ ) { int overhead; + unsigned int currentlen; overhead = 0; if (!bin) { datanotbinflag = TRUE; overhead = 3; - if (datapt != rpkt.u.data) { + if (datasent) { *datapt++ = ','; datalinelen++; if ((dlen + datalinelen + 1) >= MAXDATALINELEN) { @@ -1338,15 +1345,26 @@ ctl_putdata( /* * Save room for trailing junk */ - if (dlen + overhead + datapt > dataend) { + while (dlen + overhead + datapt > dataend) { /* * Not enough room in this one, flush it out. */ + currentlen = MIN(dlen, (unsigned int)(dataend - datapt)); + + memcpy(datapt, dp, currentlen); + + datapt += currentlen; + dp += currentlen; + dlen -= currentlen; + datalinelen += currentlen; + ctl_flushpkt(CTL_MORE); } + memcpy(datapt, dp, dlen); datapt += dlen; datalinelen += dlen; + datasent = TRUE; } @@ -1424,7 +1442,8 @@ ctl_putunqstr( static void ctl_putdblf( const char * tag, - const char * fmt, + int use_f, + int precision, double d ) { @@ -1437,8 +1456,9 @@ ctl_putdblf( while (*cq != '\0') *cp++ = *cq++; *cp++ = '='; - NTP_INSIST((cp - buffer) < sizeof(buffer)); - snprintf(cp, sizeof(buffer) - (cp - buffer), fmt, d); + NTP_INSIST((size_t)(cp - buffer) < sizeof(buffer)); + snprintf(cp, sizeof(buffer) - (cp - buffer), use_f ? "%.*f" : "%.*g", + precision, d); cp += strlen(cp); ctl_putdata(buffer, (unsigned)(cp - buffer), 0); } @@ -1462,12 +1482,39 @@ ctl_putuint( *cp++ = *cq++; *cp++ = '='; - NTP_INSIST((cp - buffer) < sizeof(buffer)); + NTP_INSIST((cp - buffer) < (int)sizeof(buffer)); snprintf(cp, sizeof(buffer) - (cp - buffer), "%lu", uval); cp += strlen(cp); ctl_putdata(buffer, (unsigned)( cp - buffer ), 0); } +/* + * ctl_putcal - write a decoded calendar data into the response + */ +static void +ctl_putcal( + const char *tag, + const struct calendar *pcal + ) +{ + char buffer[100]; + unsigned numch; + + numch = snprintf(buffer, sizeof(buffer), + "%s=%04d%02d%02d%02d%02d", + tag, + pcal->year, + pcal->month, + pcal->monthday, + pcal->hour, + pcal->minute + ); + NTP_INSIST(numch < sizeof(buffer)); + ctl_putdata(buffer, numch, 0); + + return; +} + /* * ctl_putfs - write a decoded filestamp into the response */ @@ -1493,7 +1540,7 @@ ctl_putfs( tm = gmtime(&fstamp); if (NULL == tm) return; - NTP_INSIST((cp - buffer) < sizeof(buffer)); + NTP_INSIST((cp - buffer) < (int)sizeof(buffer)); snprintf(cp, sizeof(buffer) - (cp - buffer), "%04d%02d%02d%02d%02d", tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min); @@ -1522,7 +1569,7 @@ ctl_puthex( *cp++ = *cq++; *cp++ = '='; - NTP_INSIST((cp - buffer) < sizeof(buffer)); + NTP_INSIST((cp - buffer) < (int)sizeof(buffer)); snprintf(cp, sizeof(buffer) - (cp - buffer), "0x%lx", uval); cp += strlen(cp); ctl_putdata(buffer,(unsigned)( cp - buffer ), 0); @@ -1548,7 +1595,7 @@ ctl_putint( *cp++ = *cq++; *cp++ = '='; - NTP_INSIST((cp - buffer) < sizeof(buffer)); + NTP_INSIST((cp - buffer) < (int)sizeof(buffer)); snprintf(cp, sizeof(buffer) - (cp - buffer), "%ld", ival); cp += strlen(cp); ctl_putdata(buffer, (unsigned)( cp - buffer ), 0); @@ -1574,7 +1621,7 @@ ctl_putts( *cp++ = *cq++; *cp++ = '='; - NTP_INSIST((cp - buffer) < sizeof(buffer)); + NTP_INSIST((size_t)(cp - buffer) < sizeof(buffer)); snprintf(cp, sizeof(buffer) - (cp - buffer), "0x%08x.%08x", (u_int)ts->l_ui, (u_int)ts->l_uf); cp += strlen(cp); @@ -1606,7 +1653,7 @@ ctl_putadr( cq = numtoa(addr32); else cq = stoa(addr); - NTP_INSIST((cp - buffer) < sizeof(buffer)); + NTP_INSIST((cp - buffer) < (int)sizeof(buffer)); snprintf(cp, sizeof(buffer) - (cp - buffer), "%s", cq); cp += strlen(cp); ctl_putdata(buffer, (unsigned)(cp - buffer), 0); @@ -1641,9 +1688,9 @@ ctl_putrefid( return; iptr = (char *)&refid; iplim = iptr + sizeof(refid); - for ( ; optr < oplim && iptr < iplim && '\0' != *iptr; + for ( ; optr < oplim && iptr < iplim && '\0' != *iptr; iptr++, optr++) - if (isprint(*iptr)) + if (isprint((int)*iptr)) *optr = *iptr; else *optr = '.'; @@ -1677,7 +1724,7 @@ ctl_putarray( if (i == 0) i = NTP_SHIFT; i--; - NTP_INSIST((cp - buffer) < sizeof(buffer)); + NTP_INSIST((cp - buffer) < (int)sizeof(buffer)); snprintf(cp, sizeof(buffer) - (cp - buffer), " %.2f", arr[i] * 1e3); cp += strlen(cp); @@ -1700,9 +1747,6 @@ ctl_putsys( double kb; double dtemp; const char *ss; - size_t len; - int firstvarname; - const struct ctl_var *k; #ifdef AUTOKEY struct cert_info *cp; #endif /* AUTOKEY */ @@ -1712,7 +1756,7 @@ ctl_putsys( static const double to_ms = # ifdef STA_NANO - 1.0e-6; /* nsec to msec */ + 1.0e-6; /* nsec to msec */ # else 1.0e-3; /* usec to msec */ # endif @@ -1848,11 +1892,11 @@ ctl_putsys( { char buf[CTL_MAX_DATA_LEN]; //buffPointer, firstElementPointer, buffEndPointer - register char *buffp, *buffend; - register int firstVarName; - register const char *ss; - register int len; - register struct ctl_var *k; + char *buffp, *buffend; + int firstVarName; + const char *ss1; + int len; + const struct ctl_var *k; buffp = buf; buffend = buf + sizeof(buf); @@ -1881,11 +1925,11 @@ ctl_putsys( continue; if (NULL == k->text) continue; - ss = strchr(k->text, '='); - if (NULL == ss) + ss1 = strchr(k->text, '='); + if (NULL == ss1) len = strlen(k->text); else - len = ss - k->text; + len = ss1 - k->text; if (buffp + len + 1 >= buffend) break; if (firstVarName) { @@ -1904,12 +1948,12 @@ ctl_putsys( ctl_putdata(buf, (unsigned)( buffp - buf ), 0); break; } - + case CS_TAI: if (sys_tai > 0) ctl_putuint(sys_var[CS_TAI].text, sys_tai); break; - + case CS_LEAPTAB: { leap_signature_t lsig; @@ -1918,7 +1962,7 @@ ctl_putsys( ctl_putfs(sys_var[CS_LEAPTAB].text, lsig.ttime); break; } - + case CS_LEAPEND: { leap_signature_t lsig; @@ -2063,7 +2107,7 @@ ctl_putsys( break; case CS_AUTHRESET: - ctl_putuint(sys_var[varid].text, + ctl_putuint(sys_var[varid].text, current_time - auth_timereset); break; @@ -2097,8 +2141,8 @@ ctl_putsys( case CS_K_OFFSET: CTL_IF_KERNLOOP( - ctl_putdblf, - (sys_var[varid].text, "%g", to_ms * ntx.offset) + ctl_putdblf, + (sys_var[varid].text, 0, -1, to_ms * ntx.offset) ); break; @@ -2112,7 +2156,7 @@ ctl_putsys( case CS_K_MAXERR: CTL_IF_KERNLOOP( ctl_putdblf, - (sys_var[varid].text, "%.6g", + (sys_var[varid].text, 0, 6, to_ms * ntx.maxerror) ); break; @@ -2120,7 +2164,7 @@ ctl_putsys( case CS_K_ESTERR: CTL_IF_KERNLOOP( ctl_putdblf, - (sys_var[varid].text, "%.6g", + (sys_var[varid].text, 0, 6, to_ms * ntx.esterror) ); break; @@ -2144,7 +2188,7 @@ ctl_putsys( case CS_K_PRECISION: CTL_IF_KERNLOOP( ctl_putdblf, - (sys_var[varid].text, "%.6g", + (sys_var[varid].text, 0, 6, to_ms * ntx.precision) ); break; @@ -2277,6 +2321,9 @@ ctl_putsys( case CS_FUZZ: ctl_putdbl(sys_var[varid].text, sys_fuzz * 1e3); break; + case CS_WANDER_THRESH: + ctl_putdbl(sys_var[varid].text, wander_threshold * 1e6); + break; #ifdef AUTOKEY case CS_FLAGS: if (crypto_flags) @@ -2319,14 +2366,11 @@ ctl_putsys( case CS_CERTIF: for (cp = cinfo; cp != NULL; cp = cp->link) { - tstamp_t tstamp; - snprintf(str, sizeof(str), "%s %s 0x%x", cp->subject, cp->issuer, cp->flags); ctl_putstr(sys_var[CS_CERTIF].text, str, strlen(str)); - tstamp = caltontp(&(cp->last)); /* XXX too small to hold some values, but that's what ctl_putfs requires */ - ctl_putfs(sys_var[CS_REVTIME].text, tstamp); + ctl_putcal(sys_var[CS_REVTIME].text, &(cp->last)); } break; @@ -2586,7 +2630,7 @@ ctl_putpeer( memcpy(s, k->text, i); s += i; } - if (s + 2 < be) { + if (s + 2 < be) { *s++ = '"'; *s = '\0'; ctl_putdata(buf, (u_int)(s - buf), 0); @@ -2665,7 +2709,7 @@ ctl_putpeer( strlen(p->ident)); break; - + #endif /* AUTOKEY */ } } @@ -2774,7 +2818,7 @@ ctl_putclock( sizeof(buf)) break; /* really long var name */ - snprintf(s, sizeof(buf), "%s=\"", + snprintf(s, sizeof(buf), "%s=\"", clock_var[CC_VARLIST].text); s += strlen(s); t = s; @@ -2887,7 +2931,7 @@ ctl_getitem( cp++; while (cp < reqend && *cp != ',') { *tp++ = *cp++; - if (tp - buf >= sizeof(buf)) { + if ((size_t)(tp - buf) >= sizeof(buf)) { ctl_error(CERR_BADFMT); numctlbadpkts++; NLOG(NLOG_SYSEVENT) @@ -2959,7 +3003,7 @@ read_status( { struct peer *peer; const u_char *cp; - int n; + size_t n; /* a_st holds association ID, status pairs alternating */ u_short a_st[CTL_MAX_DATA_LEN / sizeof(u_short)]; @@ -3017,7 +3061,7 @@ read_peervars(void) const struct ctl_var *v; struct peer *peer; const u_char *cp; - int i; + size_t i; char * valuep; u_char wants[CP_MAXCODE + 1]; u_int gotvar; @@ -3262,7 +3306,7 @@ static void configure( snprintf(remote_config.err_msg, sizeof(remote_config.err_msg), "runtime configuration prohibited by restrict ... nomodify"); - ctl_putdata(remote_config.err_msg, + ctl_putdata(remote_config.err_msg, strlen(remote_config.err_msg), 0); ctl_flushpkt(0); NLOG(NLOG_SYSINFO) @@ -3275,6 +3319,20 @@ static void configure( /* Initialize the remote config buffer */ data_count = reqend - reqpt; + + if (data_count > sizeof(remote_config.buffer) - 2) { + snprintf(remote_config.err_msg, + sizeof(remote_config.err_msg), + "runtime configuration failed: request too long"); + ctl_putdata(remote_config.err_msg, + strlen(remote_config.err_msg), 0); + ctl_flushpkt(0); + msyslog(LOG_NOTICE, + "runtime config from %s rejected: request too long", + stoa(&rbufp->recv_srcadr)); + return; + } + memcpy(remote_config.buffer, reqpt, data_count); if (data_count > 0 && '\n' != remote_config.buffer[data_count - 1]) @@ -3304,7 +3362,7 @@ static void configure( config_remotely(&rbufp->recv_srcadr); - /* + /* * Check if errors were reported. If not, output 'Config * Succeeded'. Else output the error count. It would be nice * to output any parser error messages. @@ -3313,10 +3371,10 @@ static void configure( retval = snprintf(remote_config.err_msg, sizeof(remote_config.err_msg), "Config Succeeded"); - if (retval > 0) + if (retval > 0) remote_config.err_pos += retval; } - + ctl_putdata(remote_config.err_msg, remote_config.err_pos, 0); ctl_flushpkt(0); @@ -3679,7 +3737,7 @@ static void read_mru_list( const char * pch; char * pnonce; int nonce_valid; - int i; + size_t i; int priors; u_short hash; mon_entry * mon; @@ -3708,9 +3766,9 @@ static void read_mru_list( set_var(&in_parms, maxlstint_text, sizeof(maxlstint_text), 0); set_var(&in_parms, laddr_text, sizeof(laddr_text), 0); for (i = 0; i < COUNTOF(last); i++) { - snprintf(buf, sizeof(buf), last_fmt, i); + snprintf(buf, sizeof(buf), last_fmt, (int)i); set_var(&in_parms, buf, strlen(buf) + 1, 0); - snprintf(buf, sizeof(buf), addr_fmt, i); + snprintf(buf, sizeof(buf), addr_fmt, (int)i); set_var(&in_parms, buf, strlen(buf) + 1, 0); } @@ -3729,6 +3787,7 @@ static void read_mru_list( while (NULL != (v = ctl_getitem(in_parms, &val)) && !(EOV & v->flags)) { + int si; if (!strcmp(nonce_text, v->text)) { if (NULL != pnonce) @@ -3751,20 +3810,20 @@ static void read_mru_list( } else if (!strcmp(laddr_text, v->text)) { if (decodenetnum(val, &laddr)) lcladr = getinterface(&laddr, 0); - } else if (1 == sscanf(v->text, last_fmt, &i) && - i < COUNTOF(last)) { + } else if (1 == sscanf(v->text, last_fmt, &si) && + (size_t)si < COUNTOF(last)) { if (2 == sscanf(val, "0x%08x.%08x", &ui, &uf)) { - last[i].l_ui = ui; - last[i].l_uf = uf; - if (!SOCK_UNSPEC(&addr[i]) && - i == priors) + last[si].l_ui = ui; + last[si].l_uf = uf; + if (!SOCK_UNSPEC(&addr[si]) && + si == priors) priors++; } - } else if (1 == sscanf(v->text, addr_fmt, &i) && - i < COUNTOF(addr)) { - if (decodenetnum(val, &addr[i]) - && last[i].l_ui && last[i].l_uf && - i == priors) + } else if (1 == sscanf(v->text, addr_fmt, &si) && + (size_t)si < COUNTOF(addr)) { + if (decodenetnum(val, &addr[si]) + && last[si].l_ui && last[si].l_uf && + si == priors) priors++; } } @@ -3798,7 +3857,7 @@ static void read_mru_list( * Find the starting point if one was provided. */ mon = NULL; - for (i = 0; i < priors; i++) { + for (i = 0; i < (size_t)priors; i++) { hash = MON_HASH(&addr[i]); for (mon = mon_hash[hash]; mon != NULL; @@ -3825,7 +3884,7 @@ static void read_mru_list( pch = sptoa(&mon->rmtadr); ctl_putunqstr("addr.older", pch, strlen(pch)); - /* + /* * Move on to the first entry the client doesn't have, * except in the special case of a limit of one. In * that case return the starting point entry. @@ -3835,7 +3894,7 @@ static void read_mru_list( } else { /* start with the oldest */ mon = TAIL_DLIST(mon_mru_list, mru); } - + /* * send up to limit= entries in up to frags= datagrams */ @@ -4594,7 +4653,7 @@ ctlfindtrap( for (n = 0; n < COUNTOF(ctl_traps); n++) if ((ctl_traps[n].tr_flags & TRAP_INUSE) && ADDR_PORT_EQ(raddr, &ctl_traps[n].tr_addr) - && (linter == ctl_traps[n].tr_localaddr)) + && (linter == ctl_traps[n].tr_localaddr)) return &ctl_traps[n]; return NULL; @@ -4651,7 +4710,7 @@ report_event( const char * src; u_char errlast; - errlast = (u_char)err & ~PEER_EVENT; + errlast = (u_char)err & ~PEER_EVENT; if (peer->last_event == errlast) peer->num_events = 0; if (peer->num_events >= CTL_PEER_MAXEVENTS) @@ -4873,7 +4932,7 @@ set_var( t++; } if (*s == *t && ((*t == '=') || !*t)) { - td = erealloc(k->text, size); + td = erealloc((void *)(intptr_t)k->text, size); memcpy(td, data, size); k->text = td; k->flags = def; @@ -4923,7 +4982,7 @@ get_ext_sys_var(const char *tag) } } } - + return val; } @@ -4936,7 +4995,7 @@ free_varlist( struct ctl_var *k; if (kv) { for (k = kv; !(k->flags & EOV); k++) - free((void *)k->text); + free((void *)(intptr_t)k->text); free((void *)kv); } } diff --git a/ntpd/ntp_crypto.c b/ntpd/ntp_crypto.c index e66d5c7..5795ae8 100644 --- a/ntpd/ntp_crypto.c +++ b/ntpd/ntp_crypto.c @@ -139,6 +139,7 @@ static int calcomp(struct calendar *pjd1, struct calendar *pjd2) #define TAI_1972 10 /* initial TAI offset (s) */ #define MAX_LEAP 100 /* max UTC leapseconds (s) */ #define VALUE_LEN (6 * 4) /* min response field length */ +#define MAX_VALLEN (65535 - VALUE_LEN) #define YEAR (60 * 60 * 24 * 365) /* seconds in year */ /* @@ -179,8 +180,8 @@ static char *rand_file = NULL; /* random seed file */ */ static int crypto_verify (struct exten *, struct value *, struct peer *); -static int crypto_encrypt (struct exten *, struct value *, - keyid_t *); +static int crypto_encrypt (const u_char *, u_int, keyid_t *, + struct value *); static int crypto_alice (struct peer *, struct value *); static int crypto_alice2 (struct peer *, struct value *); static int crypto_alice3 (struct peer *, struct value *); @@ -423,7 +424,6 @@ crypto_recv( int has_mac; /* length of MAC field */ int authlen; /* offset of MAC field */ associd_t associd; /* association ID */ - tstamp_t tstamp = 0; /* timestamp */ tstamp_t fstamp = 0; /* filestamp */ u_int len; /* extension field length */ u_int code; /* extension field opcode */ @@ -448,11 +448,12 @@ crypto_recv( */ authlen = LEN_PKT_NOMAC; hismode = (int)PKT_MODE((&rbufp->recv_pkt)->li_vn_mode); - while ((has_mac = rbufp->recv_length - authlen) > MAX_MAC_LEN) { + while ((has_mac = rbufp->recv_length - authlen) > (int)MAX_MAC_LEN) { pkt = (u_int32 *)&rbufp->recv_pkt + authlen / 4; ep = (struct exten *)pkt; code = ntohl(ep->opcode) & 0xffff0000; len = ntohl(ep->opcode) & 0x0000ffff; + // HMS: Why pkt[1] instead of ep->associd ? associd = (associd_t)ntohl(pkt[1]); rval = XEVNT_OK; #ifdef DEBUG @@ -473,9 +474,14 @@ crypto_recv( } if (len >= VALUE_LEN) { - tstamp = ntohl(ep->tstamp); fstamp = ntohl(ep->fstamp); vallen = ntohl(ep->vallen); + /* + * Bug 2761: I hope this isn't too early... + */ + if ( vallen == 0 + || len - VALUE_LEN < vallen) + return XEVNT_LEN; } switch (code) { @@ -526,8 +532,9 @@ crypto_recv( rval = XEVNT_ERR; break; } + INSIST(len >= VALUE_LEN); if (vallen == 0 || vallen > MAXHOSTNAME || - len < VALUE_LEN + vallen) { + len - VALUE_LEN < vallen) { rval = XEVNT_LEN; break; } @@ -820,15 +827,24 @@ crypto_recv( * errors. */ if (vallen == (u_int)EVP_PKEY_size(host_pkey)) { + u_int32 *cookiebuf = malloc( + RSA_size(host_pkey->pkey.rsa)); + if (!cookiebuf) { + rval = XEVNT_CKY; + break; + } + if (RSA_private_decrypt(vallen, (u_char *)ep->pkt, - (u_char *)&temp32, + (u_char *)cookiebuf, host_pkey->pkey.rsa, - RSA_PKCS1_OAEP_PADDING) <= 0) { + RSA_PKCS1_OAEP_PADDING) != 4) { rval = XEVNT_CKY; + free(cookiebuf); break; } else { - cookie = ntohl(temp32); + cookie = ntohl(*cookiebuf); + free(cookiebuf); } } else { rval = XEVNT_CKY; @@ -1185,8 +1201,9 @@ crypto_xmit( * choice. */ case CRYPTO_CERT | CRYPTO_RESP: - vallen = ntohl(ep->vallen); - if (vallen == 0 || vallen > MAXHOSTNAME) { + vallen = ntohl(ep->vallen); /* Must be <64k */ + if (vallen == 0 || vallen > MAXHOSTNAME || + len - VALUE_LEN < vallen) { rval = XEVNT_LEN; break; } @@ -1336,7 +1353,10 @@ crypto_xmit( * anything goes wrong. */ case CRYPTO_COOK | CRYPTO_RESP: - if ((opcode & 0xffff) < VALUE_LEN) { + vallen = ntohl(ep->vallen); /* Must be <64k */ + if ( vallen == 0 + || (vallen >= MAX_VALLEN) + || (opcode & 0x0000ffff) < VALUE_LEN + vallen) { rval = XEVNT_LEN; break; } @@ -1344,8 +1364,8 @@ crypto_xmit( tcookie = cookie; else tcookie = peer->hcookie; - if ((rval = crypto_encrypt(ep, &vtemp, &tcookie)) == - XEVNT_OK) { + if ((rval = crypto_encrypt((const u_char *)ep->pkt, vallen, &tcookie, &vtemp)) + == XEVNT_OK) { len = crypto_send(fp, &vtemp, start); value_free(&vtemp); } @@ -1485,13 +1505,16 @@ crypto_verify( * up to the next word (4 octets). */ vallen = ntohl(ep->vallen); - if (vallen == 0) + if ( vallen == 0 + || vallen > MAX_VALLEN) return (XEVNT_LEN); i = (vallen + 3) / 4; siglen = ntohl(ep->pkt[i++]); - if (len < VALUE_LEN + ((vallen + 3) / 4) * 4 + ((siglen + 3) / - 4) * 4) + if ( siglen > MAX_VALLEN + || len - VALUE_LEN < ((vallen + 3) / 4) * 4 + || len - VALUE_LEN - ((vallen + 3) / 4) * 4 + < ((siglen + 3) / 4) * 4) return (XEVNT_LEN); /* @@ -1549,6 +1572,7 @@ crypto_verify( * proventic bit. What a relief. */ EVP_VerifyInit(&ctx, peer->digest); + /* XXX: the "+ 12" needs to be at least documented... */ EVP_VerifyUpdate(&ctx, (u_char *)&ep->tstamp, vallen + 12); if (EVP_VerifyFinal(&ctx, (u_char *)&ep->pkt[i], siglen, pkey) <= 0) @@ -1561,35 +1585,32 @@ crypto_verify( /* - * crypto_encrypt - construct encrypted cookie and signature from - * extension field and cookie + * crypto_encrypt - construct vp (encrypted cookie and signature) from + * the public key and cookie. * - * Returns + * Returns: * XEVNT_OK success * XEVNT_CKY bad or missing cookie * XEVNT_PUB bad or missing public key */ static int crypto_encrypt( - struct exten *ep, /* extension pointer */ - struct value *vp, /* value pointer */ - keyid_t *cookie /* server cookie */ + const u_char *ptr, /* Public Key */ + u_int vallen, /* Length of Public Key */ + keyid_t *cookie, /* server cookie */ + struct value *vp /* value pointer */ ) { EVP_PKEY *pkey; /* public key */ EVP_MD_CTX ctx; /* signature context */ tstamp_t tstamp; /* NTP timestamp */ u_int32 temp32; - u_int len; - const u_char *ptr; u_char *puch; /* * Extract the public key from the request. */ - len = ntohl(ep->vallen); - ptr = (void *)ep->pkt; - pkey = d2i_PublicKey(EVP_PKEY_RSA, NULL, &ptr, len); + pkey = d2i_PublicKey(EVP_PKEY_RSA, NULL, &ptr, vallen); if (pkey == NULL) { msyslog(LOG_ERR, "crypto_encrypt: %s", ERR_error_string(ERR_get_error(), NULL)); @@ -1603,9 +1624,9 @@ crypto_encrypt( tstamp = crypto_time(); vp->tstamp = htonl(tstamp); vp->fstamp = hostval.tstamp; - len = EVP_PKEY_size(pkey); - vp->vallen = htonl(len); - vp->ptr = emalloc(len); + vallen = EVP_PKEY_size(pkey); + vp->vallen = htonl(vallen); + vp->ptr = emalloc(vallen); puch = vp->ptr; temp32 = htonl(*cookie); if (RSA_public_encrypt(4, (u_char *)&temp32, puch, @@ -1623,8 +1644,8 @@ crypto_encrypt( vp->sig = emalloc(sign_siglen); EVP_SignInit(&ctx, sign_digest); EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12); - EVP_SignUpdate(&ctx, vp->ptr, len); - if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) + EVP_SignUpdate(&ctx, vp->ptr, vallen); + if (EVP_SignFinal(&ctx, vp->sig, &vallen, sign_pkey)) vp->siglen = htonl(sign_siglen); return (XEVNT_OK); } @@ -1695,6 +1716,9 @@ crypto_ident( * call in the protocol module. * * Returns extension field pointer (no errors) + * + * XXX: opcode and len should really be 32-bit quantities and + * we should make sure that str is not too big. */ struct exten * crypto_args( @@ -1707,23 +1731,30 @@ crypto_args( tstamp_t tstamp; /* NTP timestamp */ struct exten *ep; /* extension field pointer */ u_int len; /* extension field length */ + size_t slen = 0; tstamp = crypto_time(); len = sizeof(struct exten); - if (str != NULL) - len += strlen(str); + if (str != NULL) { + slen = strlen(str); + INSIST(slen < MAX_VALLEN); + len += slen; + } ep = emalloc_zero(len); if (opcode == 0) return (ep); + REQUIRE(0 == (len & ~0x0000ffff)); + REQUIRE(0 == (opcode & ~0xffff0000)); + ep->opcode = htonl(opcode + len); ep->associd = htonl(associd); ep->tstamp = htonl(tstamp); ep->fstamp = hostval.tstamp; ep->vallen = 0; if (str != NULL) { - ep->vallen = htonl(strlen(str)); - memcpy((char *)ep->pkt, str, strlen(str)); + ep->vallen = htonl(slen); + memcpy((char *)ep->pkt, str, slen); } return (ep); } @@ -1736,6 +1767,8 @@ crypto_args( * Note: it is not polite to send a nonempty signature with zero * timestamp or a nonzero timestamp with an empty signature, but those * rules are not enforced here. + * + * XXX This code won't work on a box with 16-bit ints. */ int crypto_send( @@ -1745,14 +1778,15 @@ crypto_send( ) { u_int len, vallen, siglen, opcode; - int i, j; + u_int i, j; /* * Calculate extension field length and check for buffer * overflow. Leave room for the MAC. */ - len = 16; + len = 16; /* XXX Document! */ vallen = ntohl(vp->vallen); + INSIST(vallen <= MAX_VALLEN); len += ((vallen + 3) / 4 + 1) * 4; siglen = ntohl(vp->siglen); len += ((siglen + 3) / 4 + 1) * 4; @@ -1773,7 +1807,7 @@ crypto_send( i = 0; if (vallen > 0 && vp->ptr != NULL) { j = vallen / 4; - if (j * 4 < (int)vallen) + if (j * 4 < vallen) ep->pkt[i + j++] = 0; memcpy(&ep->pkt[i], vp->ptr, vallen); i += j; @@ -1786,13 +1820,14 @@ crypto_send( ep->pkt[i++] = vp->siglen; if (siglen > 0 && vp->sig != NULL) { j = siglen / 4; - if (j * 4 < (int)siglen) + if (j * 4 < siglen) ep->pkt[i + j++] = 0; memcpy(&ep->pkt[i], vp->sig, siglen); i += j; } opcode = ntohl(ep->opcode); ep->opcode = htonl((opcode & 0xffff0000) | len); + ENSURE(len <= MAX_VALLEN); return (len); } @@ -1829,7 +1864,6 @@ crypto_update(void) if (hostval.tstamp == 0) return; - /* * Sign public key and timestamps. The filestamp is derived from * the host key file extension from wherever the file was @@ -1946,7 +1980,7 @@ asn_to_calendar ( struct calendar *pjd /* pointer to result */ ) { - int len; /* length of ASN1_TIME string */ + size_t len; /* length of ASN1_TIME string */ char v[24]; /* writable copy of ASN1_TIME string */ unsigned long temp; /* result from strtoul */ @@ -2157,7 +2191,8 @@ crypto_bob( tstamp_t tstamp; /* NTP timestamp */ BIGNUM *bn, *bk, *r; u_char *ptr; - u_int len; + u_int len; /* extension field length */ + u_int vallen = 0; /* value length */ /* * If the IFF parameters are not valid, something awful @@ -2172,8 +2207,11 @@ crypto_bob( /* * Extract r from the challenge. */ - len = ntohl(ep->vallen); - if ((r = BN_bin2bn((u_char *)ep->pkt, len, NULL)) == NULL) { + vallen = ntohl(ep->vallen); + len = ntohl(ep->opcode) & 0x0000ffff; + if (vallen == 0 || len < VALUE_LEN || len - VALUE_LEN < vallen) + return XEVNT_LEN; + if ((r = BN_bin2bn((u_char *)ep->pkt, vallen, NULL)) == NULL) { msyslog(LOG_ERR, "crypto_bob: %s", ERR_error_string(ERR_get_error(), NULL)); return (XEVNT_ERR); @@ -2185,7 +2223,7 @@ crypto_bob( */ bctx = BN_CTX_new(); bk = BN_new(); bn = BN_new(); sdsa = DSA_SIG_new(); - BN_rand(bk, len * 8, -1, 1); /* k */ + BN_rand(bk, vallen * 8, -1, 1); /* k */ BN_mod_mul(bn, dsa->priv_key, r, dsa->q, bctx); /* b r mod q */ BN_add(bn, bn, bk); BN_mod(bn, bn, dsa->q, bctx); /* k + b r mod q */ @@ -2204,30 +2242,37 @@ crypto_bob( * Encode the values in ASN.1 and sign. The filestamp is from * the local file. */ - len = i2d_DSA_SIG(sdsa, NULL); - if (len == 0) { + vallen = i2d_DSA_SIG(sdsa, NULL); + if (vallen == 0) { msyslog(LOG_ERR, "crypto_bob: %s", ERR_error_string(ERR_get_error(), NULL)); DSA_SIG_free(sdsa); return (XEVNT_ERR); } + if (vallen > MAX_VALLEN) { + msyslog(LOG_ERR, "crypto_bob: signature is too big: %d", + vallen); + DSA_SIG_free(sdsa); + return (XEVNT_LEN); + } memset(vp, 0, sizeof(struct value)); tstamp = crypto_time(); vp->tstamp = htonl(tstamp); vp->fstamp = htonl(iffkey_info->fstamp); - vp->vallen = htonl(len); - ptr = emalloc(len); + vp->vallen = htonl(vallen); + ptr = emalloc(vallen); vp->ptr = ptr; i2d_DSA_SIG(sdsa, &ptr); DSA_SIG_free(sdsa); if (tstamp == 0) return (XEVNT_OK); + /* XXX: more validation to make sure the sign fits... */ vp->sig = emalloc(sign_siglen); EVP_SignInit(&ctx, sign_digest); EVP_SignUpdate(&ctx, (u_char *)&vp->tstamp, 12); - EVP_SignUpdate(&ctx, vp->ptr, len); - if (EVP_SignFinal(&ctx, vp->sig, &len, sign_pkey)) + EVP_SignUpdate(&ctx, vp->ptr, vallen); + if (EVP_SignFinal(&ctx, vp->sig, &vallen, sign_pkey)) vp->siglen = htonl(sign_siglen); return (XEVNT_OK); } @@ -3048,7 +3093,7 @@ cert_sign( X509_gmtime_adj(X509_get_notAfter(cert), YEAR); subj = X509_get_issuer_name(cert); X509_NAME_add_entry_by_txt(subj, "commonName", MBSTRING_ASC, - hostval.ptr, strlen(hostval.ptr), -1, 0); + hostval.ptr, strlen((const char *)hostval.ptr), -1, 0); subj = X509_get_subject_name(req); X509_set_subject_name(cert, subj); X509_set_pubkey(cert, pkey); @@ -3089,7 +3134,7 @@ cert_sign( vp->vallen = htonl(len); vp->ptr = emalloc(len); ptr = vp->ptr; - i2d_X509(cert, &ptr); + i2d_X509(cert, (unsigned char **)(intptr_t)&ptr); vp->siglen = 0; if (tstamp != 0) { vp->sig = emalloc(sign_siglen); @@ -3421,7 +3466,7 @@ cert_parse( /* * Check for a certificate loop. */ - if (strcmp(hostval.ptr, ret->issuer) == 0) { + if (strcmp((const char *)hostval.ptr, ret->issuer) == 0) { msyslog(LOG_NOTICE, "cert_parse: certificate trail loop %s", ret->subject); diff --git a/ntpd/ntp_filegen.c b/ntpd/ntp_filegen.c index a1703a9..4ee9095 100644 --- a/ntpd/ntp_filegen.c +++ b/ntpd/ntp_filegen.c @@ -617,7 +617,7 @@ filegen_statsdir(void) #ifdef DEBUG void filegen_unregister( - char *name + const char *name ) { struct filegen_entry ** ppfe; diff --git a/ntpd/ntp_io.c b/ntpd/ntp_io.c index 0f335ea..1ee7098 100644 --- a/ntpd/ntp_io.c +++ b/ntpd/ntp_io.c @@ -217,7 +217,7 @@ static isc_boolean_t socket_multicast_disable(endpt *, sockaddr_u *); #ifdef DEBUG static void interface_dump (const endpt *); static void sockaddr_dump (const sockaddr_u *); -static void print_interface (const endpt *, char *, char *); +static void print_interface (const endpt *, const char *, const char *); #define DPRINT_INTERFACE(level, args) do { if (debug >= (level)) { print_interface args; } } while (0) #else #define DPRINT_INTERFACE(level, args) do {} while (0) @@ -269,7 +269,9 @@ static SOCKET open_socket (sockaddr_u *, int, int, endpt *); static char * fdbits (int, fd_set *); static void set_reuseaddr (int); static isc_boolean_t socket_broadcast_enable (struct interface *, SOCKET, sockaddr_u *); +#ifdef OS_MISSES_SPECIFIC_ROUTE_UPDATES static isc_boolean_t socket_broadcast_disable (struct interface *, sockaddr_u *); +#endif typedef struct remaddr remaddr_t; @@ -548,7 +550,7 @@ sockaddr_dump(const sockaddr_u *psau) * print_interface - helper to output debug information */ static void -print_interface(const endpt *iface, char *pfx, char *sfx) +print_interface(const endpt *iface, const char *pfx, const char *sfx) { printf("%sinterface #%d: fd=%d, bfd=%d, name=%s, flags=0x%x, ifindex=%u, sin=%s", pfx, @@ -714,7 +716,6 @@ is_ip_address( ) { struct in_addr in4; - struct in6_addr in6; struct addrinfo hints; struct addrinfo *result; struct sockaddr_in6 *resaddr6; @@ -1646,16 +1647,15 @@ set_wildcard_reuse( static isc_boolean_t -is_anycast( +check_flags6( sockaddr_u *psau, - const char *name + const char *name, + u_int32 flags6 ) { -#if defined(INCLUDE_IPV6_SUPPORT) && defined(SIOCGIFAFLAG_IN6) && \ - defined(IN6_IFF_ANYCAST) +#if defined(INCLUDE_IPV6_SUPPORT) && defined(SIOCGIFAFLAG_IN6) struct in6_ifreq ifr6; int fd; - u_int32 flags6; if (psau->sa.sa_family != AF_INET6) return ISC_FALSE; @@ -1669,13 +1669,45 @@ is_anycast( return ISC_FALSE; } close(fd); - flags6 = ifr6.ifr_ifru.ifru_flags6; - if ((flags6 & IN6_IFF_ANYCAST) != 0) + if ((ifr6.ifr_ifru.ifru_flags6 & flags6) != 0) return ISC_TRUE; -#endif /* INCLUDE_IPV6_SUPPORT && SIOCGIFAFLAG_IN6 && IN6_IFF_ANYCAST */ +#endif /* INCLUDE_IPV6_SUPPORT && SIOCGIFAFLAG_IN6 */ + return ISC_FALSE; +} + +static isc_boolean_t +is_anycast( + sockaddr_u *psau, + const char *name + ) +{ +#ifdef IN6_IFF_ANYCAST + return check_flags6(psau, name, IN6_IFF_ANYCAST); +#else return ISC_FALSE; +#endif } +static isc_boolean_t +is_valid( + sockaddr_u *psau, + const char *name + ) +{ + u_int32 flags6; + + flags6 = 0; +#ifdef IN6_IFF_DEPARTED + flags6 |= IN6_IFF_DEPARTED; +#endif +#ifdef IN6_IFF_DETACHED + flags6 |= IN6_IFF_DETACHED; +#endif +#ifdef IN6_IFF_TENTATIVE + flags6 |= IN6_IFF_TENTATIVE; +#endif + return check_flags6(psau, name, flags6) ? ISC_FALSE : ISC_TRUE; +} /* * update_interface strategy @@ -1808,6 +1840,12 @@ update_interfaces( if (is_anycast(&enumep.sin, isc_if.name)) continue; + /* + * skip any address that is an invalid state to be used + */ + if (!is_valid(&enumep.sin, isc_if.name)) + continue; + /* * map to local *address* in order to map all duplicate * interfaces to an endpt structure with the appropriate @@ -1968,6 +2006,9 @@ update_interfaces( if (broadcast_client_enabled) io_setbclient(); + if (sys_bclient) + io_setbclient(); + return new_interface_found; } @@ -2232,6 +2273,7 @@ socket_broadcast_enable( #endif /* SO_BROADCAST */ } +#ifdef OS_MISSES_SPECIFIC_ROUTE_UPDATES /* * Remove a broadcast address from a given socket * The socket is in the ep_list all we need to do is disable @@ -2258,6 +2300,7 @@ socket_broadcast_disable( return ISC_FALSE; #endif /* SO_BROADCAST */ } +#endif /* OS_MISSES_SPECIFIC_ROUTE_UPDATES */ #endif /* OPEN_BCAST_SOCKET */ @@ -2311,7 +2354,7 @@ enable_multicast_if( #ifdef IP_MULTICAST_LOOP TYPEOF_IP_MULTICAST_LOOP off = 0; #endif -#ifdef IPV6_MULTICAST_LOOP +#if defined(INCLUDE_IPV6_MULTICAST_SUPPORT) && defined(IPV6_MULTICAST_LOOP) u_int off6 = 0; #endif @@ -2792,7 +2835,6 @@ open_socket( { SOCKET fd; int errval; - char scopetext[16]; /* * int is OK for REUSEADR per * http://www.kohala.com/start/mcast.api.txt @@ -2942,16 +2984,10 @@ open_socket( || debug > 1 #endif ) { - if (SCOPE(addr)) - snprintf(scopetext, sizeof(scopetext), - "%%%d", SCOPE(addr)); - else - scopetext[0] = 0; - msyslog(LOG_ERR, - "bind(%d) AF_INET%s %s%s#%d%s flags 0x%x failed: %m", + "bind(%d) AF_INET%s %s#%d%s flags 0x%x failed: %m", fd, IS_IPV6(addr) ? "6" : "", - stoa(addr), scopetext, SRCPORT(addr), + stoa(addr), SRCPORT(addr), IS_MCAST(addr) ? " (multicast)" : "", interf->flags); } @@ -3195,8 +3231,8 @@ read_refclock_packet( } i = (rp->datalen == 0 - || rp->datalen > sizeof(rb->recv_space)) - ? sizeof(rb->recv_space) + || rp->datalen > (int)sizeof(rb->recv_space)) + ? (int)sizeof(rb->recv_space) : rp->datalen; do { buflen = read(fd, (char *)&rb->recv_space, (u_int)i); @@ -3318,8 +3354,8 @@ fetch_timestamp( tvp->tv_usec = (long)(ticks * 1e6 * sys_tick); } - DPRINTF(4, ("fetch_timestamp: system usec network time stamp: %ld.%06ld\n", - tvp->tv_sec, tvp->tv_usec)); + DPRINTF(4, ("fetch_timestamp: system usec network time stamp: %jd.%06ld\n", + (intmax_t)tvp->tv_sec, (long)tvp->tv_usec)); nts = tval_stamp_to_lfp(*tvp); break; #endif /* HAVE_TIMESTAMP */ @@ -3442,6 +3478,29 @@ read_network_packet( DPRINTF(3, ("read_network_packet: fd=%d length %d from %s\n", fd, buflen, stoa(&rb->recv_srcadr))); + /* + ** Bug 2672: Some OSes (MacOSX and Linux) don't block spoofed ::1 + */ + + if (AF_INET6 == itf->family) { + DPRINTF(2, ("Got an IPv6 packet, from <%s> (%d) to <%s> (%d)\n", + stoa(&rb->recv_srcadr), + IN6_IS_ADDR_LOOPBACK(PSOCK_ADDR6(&rb->recv_srcadr)), + stoa(&itf->sin), + !IN6_IS_ADDR_LOOPBACK(PSOCK_ADDR6(&itf->sin)) + )); + + if ( IN6_IS_ADDR_LOOPBACK(PSOCK_ADDR6(&rb->recv_srcadr)) + && !IN6_IS_ADDR_LOOPBACK(PSOCK_ADDR6(&itf->sin)) + ) { + packets_dropped++; + DPRINTF(2, ("DROPPING that packet\n")); + freerecvbuf(rb); + return buflen; + } + DPRINTF(2, ("processing that packet\n")); + } + /* * Got one. Mark how and when it got here, * put it on the full list and do bookkeeping. @@ -4010,7 +4069,7 @@ calc_addr_distance( found_greater = FALSE; a1_greater = FALSE; /* suppress pot. uninit. warning */ - for (i = 0; i < sizeof(NSRCADR6(a1)); i++) { + for (i = 0; i < (int)sizeof(NSRCADR6(a1)); i++) { if (!found_greater && NSRCADR6(a1)[i] != NSRCADR6(a2)[i]) { found_greater = TRUE; @@ -4053,7 +4112,7 @@ cmp_addr_distance( return 1; } - for (i = 0; i < sizeof(NSRCADR6(d1)); i++) { + for (i = 0; i < (int)sizeof(NSRCADR6(d1)); i++) { if (NSRCADR6(d1)[i] < NSRCADR6(d2)[i]) return -1; else if (NSRCADR6(d1)[i] > NSRCADR6(d2)[i]) diff --git a/ntpd/ntp_keyword.h b/ntpd/ntp_keyword.h index 8b82ec0..7237936 100644 --- a/ntpd/ntp_keyword.h +++ b/ntpd/ntp_keyword.h @@ -2,7 +2,7 @@ * ntp_keyword.h * * NOTE: edit this file with caution, it is generated by keyword-gen.c - * Generated 2013-08-04 04:56:14 UTC diff_ignore_line + * Generated 2015-03-16 09:05:44 UTC diff_ignore_line * */ #include "ntp_scanner.h" @@ -10,7 +10,7 @@ #define LOWEST_KEYWORD_ID 258 -const char * const keyword_text[186] = { +const char * const keyword_text[189] = { /* 0 258 T_Abbrev */ "abbrev", /* 1 259 T_Age */ "age", /* 2 260 T_All */ "all", @@ -99,109 +99,112 @@ const char * const keyword_text[186] = { /* 85 343 T_Maxdist */ "maxdist", /* 86 344 T_Maxmem */ "maxmem", /* 87 345 T_Maxpoll */ "maxpoll", - /* 88 346 T_Mem */ "mem", - /* 89 347 T_Memlock */ "memlock", - /* 90 348 T_Minclock */ "minclock", - /* 91 349 T_Mindepth */ "mindepth", - /* 92 350 T_Mindist */ "mindist", - /* 93 351 T_Minimum */ "minimum", - /* 94 352 T_Minpoll */ "minpoll", - /* 95 353 T_Minsane */ "minsane", - /* 96 354 T_Mode */ "mode", - /* 97 355 T_Mode7 */ "mode7", - /* 98 356 T_Monitor */ "monitor", - /* 99 357 T_Month */ "month", - /* 100 358 T_Mru */ "mru", - /* 101 359 T_Multicastclient */ "multicastclient", - /* 102 360 T_Nic */ "nic", - /* 103 361 T_Nolink */ "nolink", - /* 104 362 T_Nomodify */ "nomodify", - /* 105 363 T_Nomrulist */ "nomrulist", - /* 106 364 T_None */ "none", - /* 107 365 T_Nonvolatile */ "nonvolatile", - /* 108 366 T_Nopeer */ "nopeer", - /* 109 367 T_Noquery */ "noquery", - /* 110 368 T_Noselect */ "noselect", - /* 111 369 T_Noserve */ "noserve", - /* 112 370 T_Notrap */ "notrap", - /* 113 371 T_Notrust */ "notrust", - /* 114 372 T_Ntp */ "ntp", - /* 115 373 T_Ntpport */ "ntpport", - /* 116 374 T_NtpSignDsocket */ "ntpsigndsocket", - /* 117 375 T_Orphan */ "orphan", - /* 118 376 T_Orphanwait */ "orphanwait", - /* 119 377 T_Panic */ "panic", - /* 120 378 T_Peer */ "peer", - /* 121 379 T_Peerstats */ "peerstats", - /* 122 380 T_Phone */ "phone", - /* 123 381 T_Pid */ "pid", - /* 124 382 T_Pidfile */ "pidfile", - /* 125 383 T_Pool */ "pool", - /* 126 384 T_Port */ "port", - /* 127 385 T_Preempt */ "preempt", - /* 128 386 T_Prefer */ "prefer", - /* 129 387 T_Protostats */ "protostats", - /* 130 388 T_Pw */ "pw", - /* 131 389 T_Randfile */ "randfile", - /* 132 390 T_Rawstats */ "rawstats", - /* 133 391 T_Refid */ "refid", - /* 134 392 T_Requestkey */ "requestkey", - /* 135 393 T_Reset */ "reset", - /* 136 394 T_Restrict */ "restrict", - /* 137 395 T_Revoke */ "revoke", - /* 138 396 T_Rlimit */ "rlimit", - /* 139 397 T_Saveconfigdir */ "saveconfigdir", - /* 140 398 T_Server */ "server", - /* 141 399 T_Setvar */ "setvar", - /* 142 400 T_Source */ "source", - /* 143 401 T_Stacksize */ "stacksize", - /* 144 402 T_Statistics */ "statistics", - /* 145 403 T_Stats */ "stats", - /* 146 404 T_Statsdir */ "statsdir", - /* 147 405 T_Step */ "step", - /* 148 406 T_Stepout */ "stepout", - /* 149 407 T_Stratum */ "stratum", - /* 150 408 T_String */ NULL, - /* 151 409 T_Sys */ "sys", - /* 152 410 T_Sysstats */ "sysstats", - /* 153 411 T_Tick */ "tick", - /* 154 412 T_Time1 */ "time1", - /* 155 413 T_Time2 */ "time2", - /* 156 414 T_Timer */ "timer", - /* 157 415 T_Timingstats */ "timingstats", - /* 158 416 T_Tinker */ "tinker", - /* 159 417 T_Tos */ "tos", - /* 160 418 T_Trap */ "trap", - /* 161 419 T_True */ "true", - /* 162 420 T_Trustedkey */ "trustedkey", - /* 163 421 T_Ttl */ "ttl", - /* 164 422 T_Type */ "type", - /* 165 423 T_U_int */ NULL, - /* 166 424 T_Unconfig */ "unconfig", - /* 167 425 T_Unpeer */ "unpeer", - /* 168 426 T_Version */ "version", - /* 169 427 T_WanderThreshold */ NULL, - /* 170 428 T_Week */ "week", - /* 171 429 T_Wildcard */ "wildcard", - /* 172 430 T_Xleave */ "xleave", - /* 173 431 T_Year */ "year", - /* 174 432 T_Flag */ NULL, - /* 175 433 T_EOC */ NULL, - /* 176 434 T_Simulate */ "simulate", - /* 177 435 T_Beep_Delay */ "beep_delay", - /* 178 436 T_Sim_Duration */ "simulation_duration", - /* 179 437 T_Server_Offset */ "server_offset", - /* 180 438 T_Duration */ "duration", - /* 181 439 T_Freq_Offset */ "freq_offset", - /* 182 440 T_Wander */ "wander", - /* 183 441 T_Jitter */ "jitter", - /* 184 442 T_Prop_Delay */ "prop_delay", - /* 185 443 T_Proc_Delay */ "proc_delay" + /* 88 346 T_Mdnstries */ "mdnstries", + /* 89 347 T_Mem */ "mem", + /* 90 348 T_Memlock */ "memlock", + /* 91 349 T_Minclock */ "minclock", + /* 92 350 T_Mindepth */ "mindepth", + /* 93 351 T_Mindist */ "mindist", + /* 94 352 T_Minimum */ "minimum", + /* 95 353 T_Minpoll */ "minpoll", + /* 96 354 T_Minsane */ "minsane", + /* 97 355 T_Mode */ "mode", + /* 98 356 T_Mode7 */ "mode7", + /* 99 357 T_Monitor */ "monitor", + /* 100 358 T_Month */ "month", + /* 101 359 T_Mru */ "mru", + /* 102 360 T_Multicastclient */ "multicastclient", + /* 103 361 T_Nic */ "nic", + /* 104 362 T_Nolink */ "nolink", + /* 105 363 T_Nomodify */ "nomodify", + /* 106 364 T_Nomrulist */ "nomrulist", + /* 107 365 T_None */ "none", + /* 108 366 T_Nonvolatile */ "nonvolatile", + /* 109 367 T_Nopeer */ "nopeer", + /* 110 368 T_Noquery */ "noquery", + /* 111 369 T_Noselect */ "noselect", + /* 112 370 T_Noserve */ "noserve", + /* 113 371 T_Notrap */ "notrap", + /* 114 372 T_Notrust */ "notrust", + /* 115 373 T_Ntp */ "ntp", + /* 116 374 T_Ntpport */ "ntpport", + /* 117 375 T_NtpSignDsocket */ "ntpsigndsocket", + /* 118 376 T_Orphan */ "orphan", + /* 119 377 T_Orphanwait */ "orphanwait", + /* 120 378 T_Panic */ "panic", + /* 121 379 T_Peer */ "peer", + /* 122 380 T_Peerstats */ "peerstats", + /* 123 381 T_Phone */ "phone", + /* 124 382 T_Pid */ "pid", + /* 125 383 T_Pidfile */ "pidfile", + /* 126 384 T_Pool */ "pool", + /* 127 385 T_Port */ "port", + /* 128 386 T_Preempt */ "preempt", + /* 129 387 T_Prefer */ "prefer", + /* 130 388 T_Protostats */ "protostats", + /* 131 389 T_Pw */ "pw", + /* 132 390 T_Randfile */ "randfile", + /* 133 391 T_Rawstats */ "rawstats", + /* 134 392 T_Refid */ "refid", + /* 135 393 T_Requestkey */ "requestkey", + /* 136 394 T_Reset */ "reset", + /* 137 395 T_Restrict */ "restrict", + /* 138 396 T_Revoke */ "revoke", + /* 139 397 T_Rlimit */ "rlimit", + /* 140 398 T_Saveconfigdir */ "saveconfigdir", + /* 141 399 T_Server */ "server", + /* 142 400 T_Setvar */ "setvar", + /* 143 401 T_Source */ "source", + /* 144 402 T_Stacksize */ "stacksize", + /* 145 403 T_Statistics */ "statistics", + /* 146 404 T_Stats */ "stats", + /* 147 405 T_Statsdir */ "statsdir", + /* 148 406 T_Step */ "step", + /* 149 407 T_Stepback */ "stepback", + /* 150 408 T_Stepfwd */ "stepfwd", + /* 151 409 T_Stepout */ "stepout", + /* 152 410 T_Stratum */ "stratum", + /* 153 411 T_String */ NULL, + /* 154 412 T_Sys */ "sys", + /* 155 413 T_Sysstats */ "sysstats", + /* 156 414 T_Tick */ "tick", + /* 157 415 T_Time1 */ "time1", + /* 158 416 T_Time2 */ "time2", + /* 159 417 T_Timer */ "timer", + /* 160 418 T_Timingstats */ "timingstats", + /* 161 419 T_Tinker */ "tinker", + /* 162 420 T_Tos */ "tos", + /* 163 421 T_Trap */ "trap", + /* 164 422 T_True */ "true", + /* 165 423 T_Trustedkey */ "trustedkey", + /* 166 424 T_Ttl */ "ttl", + /* 167 425 T_Type */ "type", + /* 168 426 T_U_int */ NULL, + /* 169 427 T_Unconfig */ "unconfig", + /* 170 428 T_Unpeer */ "unpeer", + /* 171 429 T_Version */ "version", + /* 172 430 T_WanderThreshold */ NULL, + /* 173 431 T_Week */ "week", + /* 174 432 T_Wildcard */ "wildcard", + /* 175 433 T_Xleave */ "xleave", + /* 176 434 T_Year */ "year", + /* 177 435 T_Flag */ NULL, + /* 178 436 T_EOC */ NULL, + /* 179 437 T_Simulate */ "simulate", + /* 180 438 T_Beep_Delay */ "beep_delay", + /* 181 439 T_Sim_Duration */ "simulation_duration", + /* 182 440 T_Server_Offset */ "server_offset", + /* 183 441 T_Duration */ "duration", + /* 184 442 T_Freq_Offset */ "freq_offset", + /* 185 443 T_Wander */ "wander", + /* 186 444 T_Jitter */ "jitter", + /* 187 445 T_Prop_Delay */ "prop_delay", + /* 188 446 T_Proc_Delay */ "proc_delay" }; -#define SCANNER_INIT_S 822 +#define SCANNER_INIT_S 837 -const scan_state sst[825] = { +const scan_state sst[840] = { /*SS_T( ch, f-by, match, other ), */ 0, /* 0 */ S_ST( '-', 3, 322, 0 ), /* 1 */ @@ -247,7 +250,7 @@ const scan_state sst[825] = { S_ST( 'd', 3, 42, 0 ), /* 41 beep_ */ S_ST( 'e', 3, 43, 0 ), /* 42 beep_d */ S_ST( 'l', 3, 44, 0 ), /* 43 beep_de */ - S_ST( 'a', 3, 435, 0 ), /* 44 beep_del */ + S_ST( 'a', 3, 438, 0 ), /* 44 beep_del */ S_ST( 'r', 3, 46, 34 ), /* 45 b */ S_ST( 'o', 3, 47, 0 ), /* 46 br */ S_ST( 'a', 3, 48, 0 ), /* 47 bro */ @@ -345,7 +348,7 @@ const scan_state sst[825] = { S_ST( 'a', 3, 140, 0 ), /* 139 dur */ S_ST( 't', 3, 141, 0 ), /* 140 dura */ S_ST( 'i', 3, 142, 0 ), /* 141 durat */ - S_ST( 'o', 3, 438, 0 ), /* 142 durati */ + S_ST( 'o', 3, 441, 0 ), /* 142 durati */ S_ST( 'e', 3, 144, 105 ), /* 143 */ S_ST( 'n', 3, 292, 0 ), /* 144 e */ S_ST( 'a', 3, 146, 0 ), /* 145 en */ @@ -371,7 +374,7 @@ const scan_state sst[825] = { S_ST( 'f', 3, 166, 0 ), /* 165 freq_o */ S_ST( 'f', 3, 167, 0 ), /* 166 freq_of */ S_ST( 's', 3, 168, 0 ), /* 167 freq_off */ - S_ST( 'e', 3, 439, 0 ), /* 168 freq_offs */ + S_ST( 'e', 3, 442, 0 ), /* 168 freq_offs */ S_ST( 'u', 3, 170, 161 ), /* 169 f */ S_ST( 'd', 3, 171, 0 ), /* 170 fu */ S_ST( 'g', 3, 304, 0 ), /* 171 fud */ @@ -431,7 +434,7 @@ const scan_state sst[825] = { S_ST( 'i', 3, 226, 0 ), /* 225 j */ S_ST( 't', 3, 227, 0 ), /* 226 ji */ S_ST( 't', 3, 228, 0 ), /* 227 jit */ - S_ST( 'e', 3, 441, 0 ), /* 228 jitt */ + S_ST( 'e', 3, 444, 0 ), /* 228 jitt */ S_ST( 'k', 3, 236, 224 ), /* 229 */ S_ST( 'e', 3, 324, 0 ), /* 230 k */ S_ST( 'r', 3, 232, 0 ), /* 231 ke */ @@ -456,7 +459,7 @@ const scan_state sst[825] = { S_ST( 's', 3, 251, 249 ), /* 250 li */ S_ST( 't', 3, 252, 0 ), /* 251 lis */ S_ST( 'e', 3, 332, 0 ), /* 252 list */ - S_ST( 'o', 3, 446, 244 ), /* 253 l */ + S_ST( 'o', 3, 449, 244 ), /* 253 l */ S_ST( 'g', 3, 315, 0 ), /* 254 lo */ S_ST( 'c', 3, 256, 0 ), /* 255 log */ S_ST( 'o', 3, 257, 0 ), /* 256 logc */ @@ -520,7 +523,7 @@ const scan_state sst[825] = { S_ST( 'e', 1, 0, 0 ), /* 314 T_Includefile */ S_ST( 'f', 3, 317, 255 ), /* 315 log */ S_ST( 'e', 0, 0, 0 ), /* 316 T_Interface */ - S_ST( 'i', 3, 408, 0 ), /* 317 logf */ + S_ST( 'i', 3, 411, 0 ), /* 317 logf */ S_ST( 'o', 0, 0, 193 ), /* 318 T_Io */ S_ST( '4', 0, 0, 0 ), /* 319 T_Ipv4 */ S_ST( '4', 0, 0, 0 ), /* 320 T_Ipv4_flag */ @@ -549,484 +552,499 @@ const scan_state sst[825] = { S_ST( 't', 0, 0, 0 ), /* 343 T_Maxdist */ S_ST( 'm', 0, 0, 0 ), /* 344 T_Maxmem */ S_ST( 'l', 0, 0, 0 ), /* 345 T_Maxpoll */ - S_ST( 'm', 0, 492, 0 ), /* 346 T_Mem */ - S_ST( 'k', 0, 0, 0 ), /* 347 T_Memlock */ - S_ST( 'k', 0, 0, 0 ), /* 348 T_Minclock */ - S_ST( 'h', 0, 0, 0 ), /* 349 T_Mindepth */ - S_ST( 't', 0, 0, 0 ), /* 350 T_Mindist */ - S_ST( 'm', 0, 0, 0 ), /* 351 T_Minimum */ - S_ST( 'l', 0, 0, 0 ), /* 352 T_Minpoll */ - S_ST( 'e', 0, 0, 0 ), /* 353 T_Minsane */ - S_ST( 'e', 0, 355, 0 ), /* 354 T_Mode */ - S_ST( '7', 0, 0, 0 ), /* 355 T_Mode7 */ - S_ST( 'r', 0, 0, 0 ), /* 356 T_Monitor */ - S_ST( 'h', 0, 0, 0 ), /* 357 T_Month */ - S_ST( 'u', 0, 0, 0 ), /* 358 T_Mru */ - S_ST( 't', 2, 0, 0 ), /* 359 T_Multicastclient */ - S_ST( 'c', 0, 0, 0 ), /* 360 T_Nic */ - S_ST( 'k', 0, 0, 0 ), /* 361 T_Nolink */ - S_ST( 'y', 0, 0, 0 ), /* 362 T_Nomodify */ - S_ST( 't', 0, 0, 0 ), /* 363 T_Nomrulist */ - S_ST( 'e', 0, 0, 0 ), /* 364 T_None */ - S_ST( 'e', 0, 0, 0 ), /* 365 T_Nonvolatile */ - S_ST( 'r', 0, 0, 0 ), /* 366 T_Nopeer */ - S_ST( 'y', 0, 0, 0 ), /* 367 T_Noquery */ - S_ST( 't', 0, 0, 0 ), /* 368 T_Noselect */ - S_ST( 'e', 0, 0, 0 ), /* 369 T_Noserve */ - S_ST( 'p', 0, 0, 0 ), /* 370 T_Notrap */ - S_ST( 't', 0, 0, 0 ), /* 371 T_Notrust */ - S_ST( 'p', 0, 588, 0 ), /* 372 T_Ntp */ - S_ST( 't', 0, 0, 0 ), /* 373 T_Ntpport */ - S_ST( 't', 1, 0, 0 ), /* 374 T_NtpSignDsocket */ - S_ST( 'n', 0, 603, 0 ), /* 375 T_Orphan */ - S_ST( 't', 0, 0, 0 ), /* 376 T_Orphanwait */ - S_ST( 'c', 0, 0, 0 ), /* 377 T_Panic */ - S_ST( 'r', 1, 612, 0 ), /* 378 T_Peer */ - S_ST( 's', 0, 0, 0 ), /* 379 T_Peerstats */ - S_ST( 'e', 2, 0, 0 ), /* 380 T_Phone */ - S_ST( 'd', 0, 620, 0 ), /* 381 T_Pid */ - S_ST( 'e', 1, 0, 0 ), /* 382 T_Pidfile */ - S_ST( 'l', 1, 0, 0 ), /* 383 T_Pool */ - S_ST( 't', 0, 0, 0 ), /* 384 T_Port */ - S_ST( 't', 0, 0, 0 ), /* 385 T_Preempt */ - S_ST( 'r', 0, 0, 0 ), /* 386 T_Prefer */ - S_ST( 's', 0, 0, 0 ), /* 387 T_Protostats */ - S_ST( 'w', 1, 0, 626 ), /* 388 T_Pw */ - S_ST( 'e', 1, 0, 0 ), /* 389 T_Randfile */ - S_ST( 's', 0, 0, 0 ), /* 390 T_Rawstats */ - S_ST( 'd', 1, 0, 0 ), /* 391 T_Refid */ - S_ST( 'y', 0, 0, 0 ), /* 392 T_Requestkey */ - S_ST( 't', 0, 0, 0 ), /* 393 T_Reset */ - S_ST( 't', 0, 0, 0 ), /* 394 T_Restrict */ - S_ST( 'e', 0, 0, 0 ), /* 395 T_Revoke */ - S_ST( 't', 0, 0, 0 ), /* 396 T_Rlimit */ - S_ST( 'r', 1, 0, 0 ), /* 397 T_Saveconfigdir */ - S_ST( 'r', 1, 703, 0 ), /* 398 T_Server */ - S_ST( 'r', 1, 0, 0 ), /* 399 T_Setvar */ - S_ST( 'e', 0, 0, 0 ), /* 400 T_Source */ - S_ST( 'e', 0, 0, 0 ), /* 401 T_Stacksize */ - S_ST( 's', 0, 0, 0 ), /* 402 T_Statistics */ - S_ST( 's', 0, 746, 741 ), /* 403 T_Stats */ - S_ST( 'r', 1, 0, 0 ), /* 404 T_Statsdir */ - S_ST( 'p', 0, 749, 0 ), /* 405 T_Step */ - S_ST( 't', 0, 0, 0 ), /* 406 T_Stepout */ - S_ST( 'm', 0, 0, 0 ), /* 407 T_Stratum */ - S_ST( 'l', 3, 334, 0 ), /* 408 logfi */ - S_ST( 's', 0, 756, 0 ), /* 409 T_Sys */ - S_ST( 's', 0, 0, 0 ), /* 410 T_Sysstats */ - S_ST( 'k', 0, 0, 0 ), /* 411 T_Tick */ - S_ST( '1', 0, 0, 0 ), /* 412 T_Time1 */ - S_ST( '2', 0, 0, 412 ), /* 413 T_Time2 */ - S_ST( 'r', 0, 0, 413 ), /* 414 T_Timer */ - S_ST( 's', 0, 0, 0 ), /* 415 T_Timingstats */ - S_ST( 'r', 0, 0, 0 ), /* 416 T_Tinker */ - S_ST( 's', 0, 0, 0 ), /* 417 T_Tos */ - S_ST( 'p', 1, 0, 0 ), /* 418 T_Trap */ - S_ST( 'e', 0, 0, 0 ), /* 419 T_True */ - S_ST( 'y', 0, 0, 0 ), /* 420 T_Trustedkey */ - S_ST( 'l', 0, 0, 0 ), /* 421 T_Ttl */ - S_ST( 'e', 0, 0, 0 ), /* 422 T_Type */ - S_ST( 'o', 3, 427, 254 ), /* 423 lo */ - S_ST( 'g', 1, 0, 0 ), /* 424 T_Unconfig */ - S_ST( 'r', 1, 0, 0 ), /* 425 T_Unpeer */ - S_ST( 'n', 0, 0, 0 ), /* 426 T_Version */ - S_ST( 'p', 3, 432, 0 ), /* 427 loo */ - S_ST( 'k', 0, 0, 0 ), /* 428 T_Week */ - S_ST( 'd', 0, 0, 0 ), /* 429 T_Wildcard */ - S_ST( 'e', 0, 0, 0 ), /* 430 T_Xleave */ - S_ST( 'r', 0, 0, 0 ), /* 431 T_Year */ - S_ST( 's', 3, 433, 0 ), /* 432 loop */ - S_ST( 't', 3, 444, 0 ), /* 433 loops */ - S_ST( 'e', 0, 0, 0 ), /* 434 T_Simulate */ - S_ST( 'y', 0, 0, 0 ), /* 435 T_Beep_Delay */ - S_ST( 'n', 0, 0, 0 ), /* 436 T_Sim_Duration */ - S_ST( 't', 0, 0, 0 ), /* 437 T_Server_Offset */ - S_ST( 'n', 0, 0, 0 ), /* 438 T_Duration */ - S_ST( 't', 0, 0, 0 ), /* 439 T_Freq_Offset */ - S_ST( 'r', 0, 0, 0 ), /* 440 T_Wander */ - S_ST( 'r', 0, 0, 0 ), /* 441 T_Jitter */ - S_ST( 'y', 0, 0, 0 ), /* 442 T_Prop_Delay */ - S_ST( 'y', 0, 0, 0 ), /* 443 T_Proc_Delay */ - S_ST( 'a', 3, 445, 0 ), /* 444 loopst */ - S_ST( 't', 3, 335, 0 ), /* 445 loopsta */ - S_ST( 'w', 3, 447, 423 ), /* 446 lo */ - S_ST( 'p', 3, 448, 0 ), /* 447 low */ - S_ST( 'r', 3, 449, 0 ), /* 448 lowp */ - S_ST( 'i', 3, 450, 0 ), /* 449 lowpr */ - S_ST( 'o', 3, 451, 0 ), /* 450 lowpri */ - S_ST( 't', 3, 452, 0 ), /* 451 lowprio */ - S_ST( 'r', 3, 453, 0 ), /* 452 lowpriot */ - S_ST( 'a', 3, 336, 0 ), /* 453 lowpriotr */ - S_ST( 'm', 3, 528, 237 ), /* 454 */ - S_ST( 'a', 3, 473, 0 ), /* 455 m */ - S_ST( 'n', 3, 457, 0 ), /* 456 ma */ - S_ST( 'y', 3, 458, 0 ), /* 457 man */ - S_ST( 'c', 3, 459, 0 ), /* 458 many */ - S_ST( 'a', 3, 460, 0 ), /* 459 manyc */ - S_ST( 's', 3, 461, 0 ), /* 460 manyca */ - S_ST( 't', 3, 467, 0 ), /* 461 manycas */ - S_ST( 'c', 3, 463, 0 ), /* 462 manycast */ - S_ST( 'l', 3, 464, 0 ), /* 463 manycastc */ - S_ST( 'i', 3, 465, 0 ), /* 464 manycastcl */ - S_ST( 'e', 3, 466, 0 ), /* 465 manycastcli */ - S_ST( 'n', 3, 337, 0 ), /* 466 manycastclie */ - S_ST( 's', 3, 468, 462 ), /* 467 manycast */ - S_ST( 'e', 3, 469, 0 ), /* 468 manycasts */ - S_ST( 'r', 3, 470, 0 ), /* 469 manycastse */ - S_ST( 'v', 3, 471, 0 ), /* 470 manycastser */ - S_ST( 'e', 3, 338, 0 ), /* 471 manycastserv */ - S_ST( 's', 3, 339, 456 ), /* 472 ma */ - S_ST( 'x', 3, 488, 472 ), /* 473 ma */ - S_ST( 'a', 3, 475, 0 ), /* 474 max */ - S_ST( 'g', 3, 340, 0 ), /* 475 maxa */ - S_ST( 'c', 3, 477, 474 ), /* 476 max */ - S_ST( 'l', 3, 478, 0 ), /* 477 maxc */ - S_ST( 'o', 3, 479, 0 ), /* 478 maxcl */ - S_ST( 'c', 3, 341, 0 ), /* 479 maxclo */ - S_ST( 'd', 3, 484, 476 ), /* 480 max */ - S_ST( 'e', 3, 482, 0 ), /* 481 maxd */ - S_ST( 'p', 3, 483, 0 ), /* 482 maxde */ - S_ST( 't', 3, 342, 0 ), /* 483 maxdep */ - S_ST( 'i', 3, 485, 481 ), /* 484 maxd */ - S_ST( 's', 3, 343, 0 ), /* 485 maxdi */ - S_ST( 'm', 3, 487, 480 ), /* 486 max */ - S_ST( 'e', 3, 344, 0 ), /* 487 maxm */ - S_ST( 'p', 3, 489, 486 ), /* 488 max */ - S_ST( 'o', 3, 490, 0 ), /* 489 maxp */ - S_ST( 'l', 3, 345, 0 ), /* 490 maxpo */ - S_ST( 'e', 3, 346, 455 ), /* 491 m */ - S_ST( 'l', 3, 493, 0 ), /* 492 mem */ - S_ST( 'o', 3, 494, 0 ), /* 493 meml */ - S_ST( 'c', 3, 347, 0 ), /* 494 memlo */ - S_ST( 'i', 3, 496, 491 ), /* 495 m */ - S_ST( 'n', 3, 513, 0 ), /* 496 mi */ - S_ST( 'c', 3, 498, 0 ), /* 497 min */ - S_ST( 'l', 3, 499, 0 ), /* 498 minc */ - S_ST( 'o', 3, 500, 0 ), /* 499 mincl */ - S_ST( 'c', 3, 348, 0 ), /* 500 minclo */ - S_ST( 'd', 3, 505, 497 ), /* 501 min */ - S_ST( 'e', 3, 503, 0 ), /* 502 mind */ - S_ST( 'p', 3, 504, 0 ), /* 503 minde */ - S_ST( 't', 3, 349, 0 ), /* 504 mindep */ - S_ST( 'i', 3, 506, 502 ), /* 505 mind */ - S_ST( 's', 3, 350, 0 ), /* 506 mindi */ - S_ST( 'i', 3, 508, 501 ), /* 507 min */ - S_ST( 'm', 3, 509, 0 ), /* 508 mini */ - S_ST( 'u', 3, 351, 0 ), /* 509 minim */ - S_ST( 'p', 3, 511, 507 ), /* 510 min */ - S_ST( 'o', 3, 512, 0 ), /* 511 minp */ - S_ST( 'l', 3, 352, 0 ), /* 512 minpo */ - S_ST( 's', 3, 514, 510 ), /* 513 min */ - S_ST( 'a', 3, 515, 0 ), /* 514 mins */ - S_ST( 'n', 3, 353, 0 ), /* 515 minsa */ - S_ST( 'o', 3, 518, 495 ), /* 516 m */ - S_ST( 'd', 3, 354, 0 ), /* 517 mo */ - S_ST( 'n', 3, 522, 517 ), /* 518 mo */ - S_ST( 'i', 3, 520, 0 ), /* 519 mon */ - S_ST( 't', 3, 521, 0 ), /* 520 moni */ - S_ST( 'o', 3, 356, 0 ), /* 521 monit */ - S_ST( 't', 3, 357, 519 ), /* 522 mon */ - S_ST( 'r', 3, 358, 516 ), /* 523 m */ - S_ST( 's', 3, 525, 523 ), /* 524 m */ - S_ST( 's', 3, 526, 0 ), /* 525 ms */ - S_ST( 'n', 3, 527, 0 ), /* 526 mss */ - S_ST( 't', 3, 328, 0 ), /* 527 mssn */ - S_ST( 'u', 3, 529, 524 ), /* 528 m */ - S_ST( 'l', 3, 530, 0 ), /* 529 mu */ - S_ST( 't', 3, 531, 0 ), /* 530 mul */ - S_ST( 'i', 3, 532, 0 ), /* 531 mult */ - S_ST( 'c', 3, 533, 0 ), /* 532 multi */ - S_ST( 'a', 3, 534, 0 ), /* 533 multic */ - S_ST( 's', 3, 535, 0 ), /* 534 multica */ - S_ST( 't', 3, 536, 0 ), /* 535 multicas */ - S_ST( 'c', 3, 537, 0 ), /* 536 multicast */ - S_ST( 'l', 3, 538, 0 ), /* 537 multicastc */ - S_ST( 'i', 3, 539, 0 ), /* 538 multicastcl */ - S_ST( 'e', 3, 540, 0 ), /* 539 multicastcli */ - S_ST( 'n', 3, 359, 0 ), /* 540 multicastclie */ - S_ST( 'n', 3, 584, 454 ), /* 541 */ - S_ST( 'i', 3, 360, 0 ), /* 542 n */ - S_ST( 'o', 3, 579, 542 ), /* 543 n */ - S_ST( 'l', 3, 545, 0 ), /* 544 no */ - S_ST( 'i', 3, 546, 0 ), /* 545 nol */ - S_ST( 'n', 3, 361, 0 ), /* 546 noli */ - S_ST( 'm', 3, 552, 544 ), /* 547 no */ - S_ST( 'o', 3, 549, 0 ), /* 548 nom */ - S_ST( 'd', 3, 550, 0 ), /* 549 nomo */ - S_ST( 'i', 3, 551, 0 ), /* 550 nomod */ - S_ST( 'f', 3, 362, 0 ), /* 551 nomodi */ - S_ST( 'r', 3, 553, 548 ), /* 552 nom */ - S_ST( 'u', 3, 554, 0 ), /* 553 nomr */ - S_ST( 'l', 3, 555, 0 ), /* 554 nomru */ - S_ST( 'i', 3, 556, 0 ), /* 555 nomrul */ - S_ST( 's', 3, 363, 0 ), /* 556 nomruli */ - S_ST( 'n', 3, 558, 547 ), /* 557 no */ - S_ST( 'v', 3, 559, 364 ), /* 558 non */ - S_ST( 'o', 3, 560, 0 ), /* 559 nonv */ - S_ST( 'l', 3, 561, 0 ), /* 560 nonvo */ - S_ST( 'a', 3, 562, 0 ), /* 561 nonvol */ - S_ST( 't', 3, 563, 0 ), /* 562 nonvola */ - S_ST( 'i', 3, 564, 0 ), /* 563 nonvolat */ - S_ST( 'l', 3, 365, 0 ), /* 564 nonvolati */ - S_ST( 'p', 3, 566, 557 ), /* 565 no */ - S_ST( 'e', 3, 567, 0 ), /* 566 nop */ - S_ST( 'e', 3, 366, 0 ), /* 567 nope */ - S_ST( 'q', 3, 569, 565 ), /* 568 no */ - S_ST( 'u', 3, 570, 0 ), /* 569 noq */ - S_ST( 'e', 3, 571, 0 ), /* 570 noqu */ - S_ST( 'r', 3, 367, 0 ), /* 571 noque */ - S_ST( 's', 3, 573, 568 ), /* 572 no */ - S_ST( 'e', 3, 577, 0 ), /* 573 nos */ - S_ST( 'l', 3, 575, 0 ), /* 574 nose */ - S_ST( 'e', 3, 576, 0 ), /* 575 nosel */ - S_ST( 'c', 3, 368, 0 ), /* 576 nosele */ - S_ST( 'r', 3, 578, 574 ), /* 577 nose */ - S_ST( 'v', 3, 369, 0 ), /* 578 noser */ - S_ST( 't', 3, 580, 572 ), /* 579 no */ - S_ST( 'r', 3, 582, 0 ), /* 580 not */ - S_ST( 'a', 3, 370, 0 ), /* 581 notr */ - S_ST( 'u', 3, 583, 581 ), /* 582 notr */ - S_ST( 's', 3, 371, 0 ), /* 583 notru */ - S_ST( 't', 3, 372, 543 ), /* 584 n */ - S_ST( 'p', 3, 586, 0 ), /* 585 ntp */ - S_ST( 'o', 3, 587, 0 ), /* 586 ntpp */ - S_ST( 'r', 3, 373, 0 ), /* 587 ntppo */ - S_ST( 's', 3, 589, 585 ), /* 588 ntp */ - S_ST( 'i', 3, 590, 0 ), /* 589 ntps */ - S_ST( 'g', 3, 591, 0 ), /* 590 ntpsi */ - S_ST( 'n', 3, 592, 0 ), /* 591 ntpsig */ - S_ST( 'd', 3, 593, 0 ), /* 592 ntpsign */ - S_ST( 's', 3, 594, 0 ), /* 593 ntpsignd */ - S_ST( 'o', 3, 595, 0 ), /* 594 ntpsignds */ - S_ST( 'c', 3, 596, 0 ), /* 595 ntpsigndso */ - S_ST( 'k', 3, 597, 0 ), /* 596 ntpsigndsoc */ - S_ST( 'e', 3, 374, 0 ), /* 597 ntpsigndsock */ - S_ST( 'o', 3, 599, 541 ), /* 598 */ - S_ST( 'r', 3, 600, 0 ), /* 599 o */ - S_ST( 'p', 3, 601, 0 ), /* 600 or */ - S_ST( 'h', 3, 602, 0 ), /* 601 orp */ - S_ST( 'a', 3, 375, 0 ), /* 602 orph */ - S_ST( 'w', 3, 604, 0 ), /* 603 orphan */ - S_ST( 'a', 3, 605, 0 ), /* 604 orphanw */ - S_ST( 'i', 3, 376, 0 ), /* 605 orphanwa */ - S_ST( 'p', 3, 388, 598 ), /* 606 */ - S_ST( 'a', 3, 608, 0 ), /* 607 p */ - S_ST( 'n', 3, 609, 0 ), /* 608 pa */ - S_ST( 'i', 3, 377, 0 ), /* 609 pan */ - S_ST( 'e', 3, 611, 607 ), /* 610 p */ - S_ST( 'e', 3, 378, 0 ), /* 611 pe */ - S_ST( 's', 3, 613, 0 ), /* 612 peer */ - S_ST( 't', 3, 614, 0 ), /* 613 peers */ - S_ST( 'a', 3, 615, 0 ), /* 614 peerst */ - S_ST( 't', 3, 379, 0 ), /* 615 peersta */ - S_ST( 'h', 3, 617, 610 ), /* 616 p */ - S_ST( 'o', 3, 618, 0 ), /* 617 ph */ - S_ST( 'n', 3, 380, 0 ), /* 618 pho */ - S_ST( 'i', 3, 381, 616 ), /* 619 p */ - S_ST( 'f', 3, 621, 0 ), /* 620 pid */ - S_ST( 'i', 3, 622, 0 ), /* 621 pidf */ - S_ST( 'l', 3, 382, 0 ), /* 622 pidfi */ - S_ST( 'o', 3, 625, 619 ), /* 623 p */ - S_ST( 'o', 3, 383, 0 ), /* 624 po */ - S_ST( 'r', 3, 384, 624 ), /* 625 po */ - S_ST( 'r', 3, 633, 623 ), /* 626 p */ - S_ST( 'e', 3, 631, 0 ), /* 627 pr */ - S_ST( 'e', 3, 629, 0 ), /* 628 pre */ - S_ST( 'm', 3, 630, 0 ), /* 629 pree */ - S_ST( 'p', 3, 385, 0 ), /* 630 preem */ - S_ST( 'f', 3, 632, 628 ), /* 631 pre */ - S_ST( 'e', 3, 386, 0 ), /* 632 pref */ - S_ST( 'o', 3, 646, 627 ), /* 633 pr */ - S_ST( 'c', 3, 635, 0 ), /* 634 pro */ - S_ST( '_', 3, 636, 0 ), /* 635 proc */ - S_ST( 'd', 3, 637, 0 ), /* 636 proc_ */ - S_ST( 'e', 3, 638, 0 ), /* 637 proc_d */ - S_ST( 'l', 3, 639, 0 ), /* 638 proc_de */ - S_ST( 'a', 3, 443, 0 ), /* 639 proc_del */ - S_ST( 'p', 3, 641, 634 ), /* 640 pro */ - S_ST( '_', 3, 642, 0 ), /* 641 prop */ - S_ST( 'd', 3, 643, 0 ), /* 642 prop_ */ - S_ST( 'e', 3, 644, 0 ), /* 643 prop_d */ - S_ST( 'l', 3, 645, 0 ), /* 644 prop_de */ - S_ST( 'a', 3, 442, 0 ), /* 645 prop_del */ - S_ST( 't', 3, 647, 640 ), /* 646 pro */ - S_ST( 'o', 3, 648, 0 ), /* 647 prot */ - S_ST( 's', 3, 649, 0 ), /* 648 proto */ - S_ST( 't', 3, 650, 0 ), /* 649 protos */ - S_ST( 'a', 3, 651, 0 ), /* 650 protost */ - S_ST( 't', 3, 387, 0 ), /* 651 protosta */ - S_ST( 'r', 3, 683, 606 ), /* 652 */ - S_ST( 'a', 3, 659, 0 ), /* 653 r */ - S_ST( 'n', 3, 655, 0 ), /* 654 ra */ - S_ST( 'd', 3, 656, 0 ), /* 655 ran */ - S_ST( 'f', 3, 657, 0 ), /* 656 rand */ - S_ST( 'i', 3, 658, 0 ), /* 657 randf */ - S_ST( 'l', 3, 389, 0 ), /* 658 randfi */ - S_ST( 'w', 3, 660, 654 ), /* 659 ra */ - S_ST( 's', 3, 661, 0 ), /* 660 raw */ - S_ST( 't', 3, 662, 0 ), /* 661 raws */ - S_ST( 'a', 3, 663, 0 ), /* 662 rawst */ - S_ST( 't', 3, 390, 0 ), /* 663 rawsta */ - S_ST( 'e', 3, 680, 653 ), /* 664 r */ - S_ST( 'f', 3, 666, 0 ), /* 665 re */ - S_ST( 'i', 3, 391, 0 ), /* 666 ref */ - S_ST( 'q', 3, 668, 665 ), /* 667 re */ - S_ST( 'u', 3, 669, 0 ), /* 668 req */ - S_ST( 'e', 3, 670, 0 ), /* 669 requ */ - S_ST( 's', 3, 671, 0 ), /* 670 reque */ - S_ST( 't', 3, 672, 0 ), /* 671 reques */ - S_ST( 'k', 3, 673, 0 ), /* 672 request */ - S_ST( 'e', 3, 392, 0 ), /* 673 requestk */ - S_ST( 's', 3, 676, 667 ), /* 674 re */ - S_ST( 'e', 3, 393, 0 ), /* 675 res */ - S_ST( 't', 3, 677, 675 ), /* 676 res */ - S_ST( 'r', 3, 678, 0 ), /* 677 rest */ - S_ST( 'i', 3, 679, 0 ), /* 678 restr */ - S_ST( 'c', 3, 394, 0 ), /* 679 restri */ - S_ST( 'v', 3, 681, 674 ), /* 680 re */ - S_ST( 'o', 3, 682, 0 ), /* 681 rev */ - S_ST( 'k', 3, 395, 0 ), /* 682 revo */ - S_ST( 'l', 3, 684, 664 ), /* 683 r */ - S_ST( 'i', 3, 685, 0 ), /* 684 rl */ - S_ST( 'm', 3, 686, 0 ), /* 685 rli */ - S_ST( 'i', 3, 396, 0 ), /* 686 rlim */ - S_ST( 's', 3, 755, 652 ), /* 687 */ - S_ST( 'a', 3, 689, 0 ), /* 688 s */ - S_ST( 'v', 3, 690, 0 ), /* 689 sa */ - S_ST( 'e', 3, 691, 0 ), /* 690 sav */ - S_ST( 'c', 3, 692, 0 ), /* 691 save */ - S_ST( 'o', 3, 693, 0 ), /* 692 savec */ - S_ST( 'n', 3, 694, 0 ), /* 693 saveco */ - S_ST( 'f', 3, 695, 0 ), /* 694 savecon */ - S_ST( 'i', 3, 696, 0 ), /* 695 saveconf */ - S_ST( 'g', 3, 697, 0 ), /* 696 saveconfi */ - S_ST( 'd', 3, 698, 0 ), /* 697 saveconfig */ - S_ST( 'i', 3, 397, 0 ), /* 698 saveconfigd */ - S_ST( 'e', 3, 709, 688 ), /* 699 s */ - S_ST( 'r', 3, 701, 0 ), /* 700 se */ - S_ST( 'v', 3, 702, 0 ), /* 701 ser */ - S_ST( 'e', 3, 398, 0 ), /* 702 serv */ - S_ST( '_', 3, 704, 0 ), /* 703 server */ - S_ST( 'o', 3, 705, 0 ), /* 704 server_ */ - S_ST( 'f', 3, 706, 0 ), /* 705 server_o */ - S_ST( 'f', 3, 707, 0 ), /* 706 server_of */ - S_ST( 's', 3, 708, 0 ), /* 707 server_off */ - S_ST( 'e', 3, 437, 0 ), /* 708 server_offs */ - S_ST( 't', 3, 710, 700 ), /* 709 se */ - S_ST( 'v', 3, 711, 0 ), /* 710 set */ - S_ST( 'a', 3, 399, 0 ), /* 711 setv */ - S_ST( 'i', 3, 713, 699 ), /* 712 s */ - S_ST( 'm', 3, 714, 0 ), /* 713 si */ - S_ST( 'u', 3, 715, 0 ), /* 714 sim */ - S_ST( 'l', 3, 716, 0 ), /* 715 simu */ - S_ST( 'a', 3, 717, 0 ), /* 716 simul */ - S_ST( 't', 3, 718, 0 ), /* 717 simula */ - S_ST( 'i', 3, 719, 434 ), /* 718 simulat */ - S_ST( 'o', 3, 720, 0 ), /* 719 simulati */ - S_ST( 'n', 3, 721, 0 ), /* 720 simulatio */ - S_ST( '_', 3, 722, 0 ), /* 721 simulation */ - S_ST( 'd', 3, 723, 0 ), /* 722 simulation_ */ - S_ST( 'u', 3, 724, 0 ), /* 723 simulation_d */ - S_ST( 'r', 3, 725, 0 ), /* 724 simulation_du */ - S_ST( 'a', 3, 726, 0 ), /* 725 simulation_dur */ - S_ST( 't', 3, 727, 0 ), /* 726 simulation_dura */ - S_ST( 'i', 3, 728, 0 ), /* 727 simulation_durat */ - S_ST( 'o', 3, 436, 0 ), /* 728 simulation_durati */ - S_ST( 'o', 3, 730, 712 ), /* 729 s */ - S_ST( 'u', 3, 731, 0 ), /* 730 so */ - S_ST( 'r', 3, 732, 0 ), /* 731 sou */ - S_ST( 'c', 3, 400, 0 ), /* 732 sour */ - S_ST( 't', 3, 751, 729 ), /* 733 s */ - S_ST( 'a', 3, 740, 0 ), /* 734 st */ - S_ST( 'c', 3, 736, 0 ), /* 735 sta */ - S_ST( 'k', 3, 737, 0 ), /* 736 stac */ - S_ST( 's', 3, 738, 0 ), /* 737 stack */ - S_ST( 'i', 3, 739, 0 ), /* 738 stacks */ - S_ST( 'z', 3, 401, 0 ), /* 739 stacksi */ - S_ST( 't', 3, 403, 735 ), /* 740 sta */ - S_ST( 'i', 3, 742, 0 ), /* 741 stat */ - S_ST( 's', 3, 743, 0 ), /* 742 stati */ - S_ST( 't', 3, 744, 0 ), /* 743 statis */ - S_ST( 'i', 3, 745, 0 ), /* 744 statist */ - S_ST( 'c', 3, 402, 0 ), /* 745 statisti */ - S_ST( 'd', 3, 747, 0 ), /* 746 stats */ - S_ST( 'i', 3, 404, 0 ), /* 747 statsd */ - S_ST( 'e', 3, 405, 734 ), /* 748 st */ - S_ST( 'o', 3, 750, 0 ), /* 749 step */ - S_ST( 'u', 3, 406, 0 ), /* 750 stepo */ - S_ST( 'r', 3, 752, 748 ), /* 751 st */ - S_ST( 'a', 3, 753, 0 ), /* 752 str */ - S_ST( 't', 3, 754, 0 ), /* 753 stra */ - S_ST( 'u', 3, 407, 0 ), /* 754 strat */ - S_ST( 'y', 3, 409, 733 ), /* 755 s */ - S_ST( 's', 3, 757, 0 ), /* 756 sys */ - S_ST( 't', 3, 758, 0 ), /* 757 syss */ - S_ST( 'a', 3, 759, 0 ), /* 758 sysst */ - S_ST( 't', 3, 410, 0 ), /* 759 syssta */ - S_ST( 't', 3, 786, 687 ), /* 760 */ - S_ST( 'i', 3, 772, 0 ), /* 761 t */ - S_ST( 'c', 3, 411, 0 ), /* 762 ti */ - S_ST( 'm', 3, 765, 762 ), /* 763 ti */ - S_ST( 'e', 3, 414, 0 ), /* 764 tim */ - S_ST( 'i', 3, 766, 764 ), /* 765 tim */ - S_ST( 'n', 3, 767, 0 ), /* 766 timi */ - S_ST( 'g', 3, 768, 0 ), /* 767 timin */ - S_ST( 's', 3, 769, 0 ), /* 768 timing */ - S_ST( 't', 3, 770, 0 ), /* 769 timings */ - S_ST( 'a', 3, 771, 0 ), /* 770 timingst */ - S_ST( 't', 3, 415, 0 ), /* 771 timingsta */ - S_ST( 'n', 3, 773, 763 ), /* 772 ti */ - S_ST( 'k', 3, 774, 0 ), /* 773 tin */ - S_ST( 'e', 3, 416, 0 ), /* 774 tink */ - S_ST( 'o', 3, 417, 761 ), /* 775 t */ - S_ST( 'r', 3, 778, 775 ), /* 776 t */ - S_ST( 'a', 3, 418, 0 ), /* 777 tr */ - S_ST( 'u', 3, 779, 777 ), /* 778 tr */ - S_ST( 's', 3, 780, 419 ), /* 779 tru */ - S_ST( 't', 3, 781, 0 ), /* 780 trus */ - S_ST( 'e', 3, 782, 0 ), /* 781 trust */ - S_ST( 'd', 3, 783, 0 ), /* 782 truste */ - S_ST( 'k', 3, 784, 0 ), /* 783 trusted */ - S_ST( 'e', 3, 420, 0 ), /* 784 trustedk */ - S_ST( 't', 3, 421, 776 ), /* 785 t */ - S_ST( 'y', 3, 787, 785 ), /* 786 t */ - S_ST( 'p', 3, 422, 0 ), /* 787 ty */ - S_ST( 'u', 3, 789, 760 ), /* 788 */ - S_ST( 'n', 3, 795, 0 ), /* 789 u */ - S_ST( 'c', 3, 791, 0 ), /* 790 un */ - S_ST( 'o', 3, 792, 0 ), /* 791 unc */ - S_ST( 'n', 3, 793, 0 ), /* 792 unco */ - S_ST( 'f', 3, 794, 0 ), /* 793 uncon */ - S_ST( 'i', 3, 424, 0 ), /* 794 unconf */ - S_ST( 'p', 3, 796, 790 ), /* 795 un */ - S_ST( 'e', 3, 797, 0 ), /* 796 unp */ - S_ST( 'e', 3, 425, 0 ), /* 797 unpe */ - S_ST( 'v', 3, 799, 788 ), /* 798 */ - S_ST( 'e', 3, 800, 0 ), /* 799 v */ - S_ST( 'r', 3, 801, 0 ), /* 800 ve */ - S_ST( 's', 3, 802, 0 ), /* 801 ver */ - S_ST( 'i', 3, 803, 0 ), /* 802 vers */ - S_ST( 'o', 3, 426, 0 ), /* 803 versi */ - S_ST( 'w', 3, 811, 798 ), /* 804 */ - S_ST( 'a', 3, 806, 0 ), /* 805 w */ - S_ST( 'n', 3, 807, 0 ), /* 806 wa */ - S_ST( 'd', 3, 808, 0 ), /* 807 wan */ - S_ST( 'e', 3, 440, 0 ), /* 808 wand */ - S_ST( 'e', 3, 810, 805 ), /* 809 w */ - S_ST( 'e', 3, 428, 0 ), /* 810 we */ - S_ST( 'i', 3, 812, 809 ), /* 811 w */ - S_ST( 'l', 3, 813, 0 ), /* 812 wi */ - S_ST( 'd', 3, 814, 0 ), /* 813 wil */ - S_ST( 'c', 3, 815, 0 ), /* 814 wild */ - S_ST( 'a', 3, 816, 0 ), /* 815 wildc */ - S_ST( 'r', 3, 429, 0 ), /* 816 wildca */ - S_ST( 'x', 3, 818, 804 ), /* 817 */ - S_ST( 'l', 3, 819, 0 ), /* 818 x */ - S_ST( 'e', 3, 820, 0 ), /* 819 xl */ - S_ST( 'a', 3, 821, 0 ), /* 820 xle */ - S_ST( 'v', 3, 430, 0 ), /* 821 xlea */ - S_ST( 'y', 3, 823, 817 ), /* 822 [initial state] */ - S_ST( 'e', 3, 824, 0 ), /* 823 y */ - S_ST( 'a', 3, 431, 0 ) /* 824 ye */ + S_ST( 's', 0, 0, 0 ), /* 346 T_Mdnstries */ + S_ST( 'm', 0, 502, 0 ), /* 347 T_Mem */ + S_ST( 'k', 0, 0, 0 ), /* 348 T_Memlock */ + S_ST( 'k', 0, 0, 0 ), /* 349 T_Minclock */ + S_ST( 'h', 0, 0, 0 ), /* 350 T_Mindepth */ + S_ST( 't', 0, 0, 0 ), /* 351 T_Mindist */ + S_ST( 'm', 0, 0, 0 ), /* 352 T_Minimum */ + S_ST( 'l', 0, 0, 0 ), /* 353 T_Minpoll */ + S_ST( 'e', 0, 0, 0 ), /* 354 T_Minsane */ + S_ST( 'e', 0, 356, 0 ), /* 355 T_Mode */ + S_ST( '7', 0, 0, 0 ), /* 356 T_Mode7 */ + S_ST( 'r', 0, 0, 0 ), /* 357 T_Monitor */ + S_ST( 'h', 0, 0, 0 ), /* 358 T_Month */ + S_ST( 'u', 0, 0, 0 ), /* 359 T_Mru */ + S_ST( 't', 2, 0, 0 ), /* 360 T_Multicastclient */ + S_ST( 'c', 0, 0, 0 ), /* 361 T_Nic */ + S_ST( 'k', 0, 0, 0 ), /* 362 T_Nolink */ + S_ST( 'y', 0, 0, 0 ), /* 363 T_Nomodify */ + S_ST( 't', 0, 0, 0 ), /* 364 T_Nomrulist */ + S_ST( 'e', 0, 0, 0 ), /* 365 T_None */ + S_ST( 'e', 0, 0, 0 ), /* 366 T_Nonvolatile */ + S_ST( 'r', 0, 0, 0 ), /* 367 T_Nopeer */ + S_ST( 'y', 0, 0, 0 ), /* 368 T_Noquery */ + S_ST( 't', 0, 0, 0 ), /* 369 T_Noselect */ + S_ST( 'e', 0, 0, 0 ), /* 370 T_Noserve */ + S_ST( 'p', 0, 0, 0 ), /* 371 T_Notrap */ + S_ST( 't', 0, 0, 0 ), /* 372 T_Notrust */ + S_ST( 'p', 0, 598, 0 ), /* 373 T_Ntp */ + S_ST( 't', 0, 0, 0 ), /* 374 T_Ntpport */ + S_ST( 't', 1, 0, 0 ), /* 375 T_NtpSignDsocket */ + S_ST( 'n', 0, 613, 0 ), /* 376 T_Orphan */ + S_ST( 't', 0, 0, 0 ), /* 377 T_Orphanwait */ + S_ST( 'c', 0, 0, 0 ), /* 378 T_Panic */ + S_ST( 'r', 1, 622, 0 ), /* 379 T_Peer */ + S_ST( 's', 0, 0, 0 ), /* 380 T_Peerstats */ + S_ST( 'e', 2, 0, 0 ), /* 381 T_Phone */ + S_ST( 'd', 0, 630, 0 ), /* 382 T_Pid */ + S_ST( 'e', 1, 0, 0 ), /* 383 T_Pidfile */ + S_ST( 'l', 1, 0, 0 ), /* 384 T_Pool */ + S_ST( 't', 0, 0, 0 ), /* 385 T_Port */ + S_ST( 't', 0, 0, 0 ), /* 386 T_Preempt */ + S_ST( 'r', 0, 0, 0 ), /* 387 T_Prefer */ + S_ST( 's', 0, 0, 0 ), /* 388 T_Protostats */ + S_ST( 'w', 1, 0, 636 ), /* 389 T_Pw */ + S_ST( 'e', 1, 0, 0 ), /* 390 T_Randfile */ + S_ST( 's', 0, 0, 0 ), /* 391 T_Rawstats */ + S_ST( 'd', 1, 0, 0 ), /* 392 T_Refid */ + S_ST( 'y', 0, 0, 0 ), /* 393 T_Requestkey */ + S_ST( 't', 0, 0, 0 ), /* 394 T_Reset */ + S_ST( 't', 0, 0, 0 ), /* 395 T_Restrict */ + S_ST( 'e', 0, 0, 0 ), /* 396 T_Revoke */ + S_ST( 't', 0, 0, 0 ), /* 397 T_Rlimit */ + S_ST( 'r', 1, 0, 0 ), /* 398 T_Saveconfigdir */ + S_ST( 'r', 1, 713, 0 ), /* 399 T_Server */ + S_ST( 'r', 1, 0, 0 ), /* 400 T_Setvar */ + S_ST( 'e', 0, 0, 0 ), /* 401 T_Source */ + S_ST( 'e', 0, 0, 0 ), /* 402 T_Stacksize */ + S_ST( 's', 0, 0, 0 ), /* 403 T_Statistics */ + S_ST( 's', 0, 756, 751 ), /* 404 T_Stats */ + S_ST( 'r', 1, 0, 0 ), /* 405 T_Statsdir */ + S_ST( 'p', 0, 764, 0 ), /* 406 T_Step */ + S_ST( 'k', 0, 0, 0 ), /* 407 T_Stepback */ + S_ST( 'd', 0, 0, 0 ), /* 408 T_Stepfwd */ + S_ST( 't', 0, 0, 0 ), /* 409 T_Stepout */ + S_ST( 'm', 0, 0, 0 ), /* 410 T_Stratum */ + S_ST( 'l', 3, 334, 0 ), /* 411 logfi */ + S_ST( 's', 0, 771, 0 ), /* 412 T_Sys */ + S_ST( 's', 0, 0, 0 ), /* 413 T_Sysstats */ + S_ST( 'k', 0, 0, 0 ), /* 414 T_Tick */ + S_ST( '1', 0, 0, 0 ), /* 415 T_Time1 */ + S_ST( '2', 0, 0, 415 ), /* 416 T_Time2 */ + S_ST( 'r', 0, 0, 416 ), /* 417 T_Timer */ + S_ST( 's', 0, 0, 0 ), /* 418 T_Timingstats */ + S_ST( 'r', 0, 0, 0 ), /* 419 T_Tinker */ + S_ST( 's', 0, 0, 0 ), /* 420 T_Tos */ + S_ST( 'p', 1, 0, 0 ), /* 421 T_Trap */ + S_ST( 'e', 0, 0, 0 ), /* 422 T_True */ + S_ST( 'y', 0, 0, 0 ), /* 423 T_Trustedkey */ + S_ST( 'l', 0, 0, 0 ), /* 424 T_Ttl */ + S_ST( 'e', 0, 0, 0 ), /* 425 T_Type */ + S_ST( 'o', 3, 430, 254 ), /* 426 lo */ + S_ST( 'g', 1, 0, 0 ), /* 427 T_Unconfig */ + S_ST( 'r', 1, 0, 0 ), /* 428 T_Unpeer */ + S_ST( 'n', 0, 0, 0 ), /* 429 T_Version */ + S_ST( 'p', 3, 435, 0 ), /* 430 loo */ + S_ST( 'k', 0, 0, 0 ), /* 431 T_Week */ + S_ST( 'd', 0, 0, 0 ), /* 432 T_Wildcard */ + S_ST( 'e', 0, 0, 0 ), /* 433 T_Xleave */ + S_ST( 'r', 0, 0, 0 ), /* 434 T_Year */ + S_ST( 's', 3, 436, 0 ), /* 435 loop */ + S_ST( 't', 3, 447, 0 ), /* 436 loops */ + S_ST( 'e', 0, 0, 0 ), /* 437 T_Simulate */ + S_ST( 'y', 0, 0, 0 ), /* 438 T_Beep_Delay */ + S_ST( 'n', 0, 0, 0 ), /* 439 T_Sim_Duration */ + S_ST( 't', 0, 0, 0 ), /* 440 T_Server_Offset */ + S_ST( 'n', 0, 0, 0 ), /* 441 T_Duration */ + S_ST( 't', 0, 0, 0 ), /* 442 T_Freq_Offset */ + S_ST( 'r', 0, 0, 0 ), /* 443 T_Wander */ + S_ST( 'r', 0, 0, 0 ), /* 444 T_Jitter */ + S_ST( 'y', 0, 0, 0 ), /* 445 T_Prop_Delay */ + S_ST( 'y', 0, 0, 0 ), /* 446 T_Proc_Delay */ + S_ST( 'a', 3, 448, 0 ), /* 447 loopst */ + S_ST( 't', 3, 335, 0 ), /* 448 loopsta */ + S_ST( 'w', 3, 450, 426 ), /* 449 lo */ + S_ST( 'p', 3, 451, 0 ), /* 450 low */ + S_ST( 'r', 3, 452, 0 ), /* 451 lowp */ + S_ST( 'i', 3, 453, 0 ), /* 452 lowpr */ + S_ST( 'o', 3, 454, 0 ), /* 453 lowpri */ + S_ST( 't', 3, 455, 0 ), /* 454 lowprio */ + S_ST( 'r', 3, 456, 0 ), /* 455 lowpriot */ + S_ST( 'a', 3, 336, 0 ), /* 456 lowpriotr */ + S_ST( 'm', 3, 538, 237 ), /* 457 */ + S_ST( 'a', 3, 476, 0 ), /* 458 m */ + S_ST( 'n', 3, 460, 0 ), /* 459 ma */ + S_ST( 'y', 3, 461, 0 ), /* 460 man */ + S_ST( 'c', 3, 462, 0 ), /* 461 many */ + S_ST( 'a', 3, 463, 0 ), /* 462 manyc */ + S_ST( 's', 3, 464, 0 ), /* 463 manyca */ + S_ST( 't', 3, 470, 0 ), /* 464 manycas */ + S_ST( 'c', 3, 466, 0 ), /* 465 manycast */ + S_ST( 'l', 3, 467, 0 ), /* 466 manycastc */ + S_ST( 'i', 3, 468, 0 ), /* 467 manycastcl */ + S_ST( 'e', 3, 469, 0 ), /* 468 manycastcli */ + S_ST( 'n', 3, 337, 0 ), /* 469 manycastclie */ + S_ST( 's', 3, 471, 465 ), /* 470 manycast */ + S_ST( 'e', 3, 472, 0 ), /* 471 manycasts */ + S_ST( 'r', 3, 473, 0 ), /* 472 manycastse */ + S_ST( 'v', 3, 474, 0 ), /* 473 manycastser */ + S_ST( 'e', 3, 338, 0 ), /* 474 manycastserv */ + S_ST( 's', 3, 339, 459 ), /* 475 ma */ + S_ST( 'x', 3, 491, 475 ), /* 476 ma */ + S_ST( 'a', 3, 478, 0 ), /* 477 max */ + S_ST( 'g', 3, 340, 0 ), /* 478 maxa */ + S_ST( 'c', 3, 480, 477 ), /* 479 max */ + S_ST( 'l', 3, 481, 0 ), /* 480 maxc */ + S_ST( 'o', 3, 482, 0 ), /* 481 maxcl */ + S_ST( 'c', 3, 341, 0 ), /* 482 maxclo */ + S_ST( 'd', 3, 487, 479 ), /* 483 max */ + S_ST( 'e', 3, 485, 0 ), /* 484 maxd */ + S_ST( 'p', 3, 486, 0 ), /* 485 maxde */ + S_ST( 't', 3, 342, 0 ), /* 486 maxdep */ + S_ST( 'i', 3, 488, 484 ), /* 487 maxd */ + S_ST( 's', 3, 343, 0 ), /* 488 maxdi */ + S_ST( 'm', 3, 490, 483 ), /* 489 max */ + S_ST( 'e', 3, 344, 0 ), /* 490 maxm */ + S_ST( 'p', 3, 492, 489 ), /* 491 max */ + S_ST( 'o', 3, 493, 0 ), /* 492 maxp */ + S_ST( 'l', 3, 345, 0 ), /* 493 maxpo */ + S_ST( 'd', 3, 495, 458 ), /* 494 m */ + S_ST( 'n', 3, 496, 0 ), /* 495 md */ + S_ST( 's', 3, 497, 0 ), /* 496 mdn */ + S_ST( 't', 3, 498, 0 ), /* 497 mdns */ + S_ST( 'r', 3, 499, 0 ), /* 498 mdnst */ + S_ST( 'i', 3, 500, 0 ), /* 499 mdnstr */ + S_ST( 'e', 3, 346, 0 ), /* 500 mdnstri */ + S_ST( 'e', 3, 347, 494 ), /* 501 m */ + S_ST( 'l', 3, 503, 0 ), /* 502 mem */ + S_ST( 'o', 3, 504, 0 ), /* 503 meml */ + S_ST( 'c', 3, 348, 0 ), /* 504 memlo */ + S_ST( 'i', 3, 506, 501 ), /* 505 m */ + S_ST( 'n', 3, 523, 0 ), /* 506 mi */ + S_ST( 'c', 3, 508, 0 ), /* 507 min */ + S_ST( 'l', 3, 509, 0 ), /* 508 minc */ + S_ST( 'o', 3, 510, 0 ), /* 509 mincl */ + S_ST( 'c', 3, 349, 0 ), /* 510 minclo */ + S_ST( 'd', 3, 515, 507 ), /* 511 min */ + S_ST( 'e', 3, 513, 0 ), /* 512 mind */ + S_ST( 'p', 3, 514, 0 ), /* 513 minde */ + S_ST( 't', 3, 350, 0 ), /* 514 mindep */ + S_ST( 'i', 3, 516, 512 ), /* 515 mind */ + S_ST( 's', 3, 351, 0 ), /* 516 mindi */ + S_ST( 'i', 3, 518, 511 ), /* 517 min */ + S_ST( 'm', 3, 519, 0 ), /* 518 mini */ + S_ST( 'u', 3, 352, 0 ), /* 519 minim */ + S_ST( 'p', 3, 521, 517 ), /* 520 min */ + S_ST( 'o', 3, 522, 0 ), /* 521 minp */ + S_ST( 'l', 3, 353, 0 ), /* 522 minpo */ + S_ST( 's', 3, 524, 520 ), /* 523 min */ + S_ST( 'a', 3, 525, 0 ), /* 524 mins */ + S_ST( 'n', 3, 354, 0 ), /* 525 minsa */ + S_ST( 'o', 3, 528, 505 ), /* 526 m */ + S_ST( 'd', 3, 355, 0 ), /* 527 mo */ + S_ST( 'n', 3, 532, 527 ), /* 528 mo */ + S_ST( 'i', 3, 530, 0 ), /* 529 mon */ + S_ST( 't', 3, 531, 0 ), /* 530 moni */ + S_ST( 'o', 3, 357, 0 ), /* 531 monit */ + S_ST( 't', 3, 358, 529 ), /* 532 mon */ + S_ST( 'r', 3, 359, 526 ), /* 533 m */ + S_ST( 's', 3, 535, 533 ), /* 534 m */ + S_ST( 's', 3, 536, 0 ), /* 535 ms */ + S_ST( 'n', 3, 537, 0 ), /* 536 mss */ + S_ST( 't', 3, 328, 0 ), /* 537 mssn */ + S_ST( 'u', 3, 539, 534 ), /* 538 m */ + S_ST( 'l', 3, 540, 0 ), /* 539 mu */ + S_ST( 't', 3, 541, 0 ), /* 540 mul */ + S_ST( 'i', 3, 542, 0 ), /* 541 mult */ + S_ST( 'c', 3, 543, 0 ), /* 542 multi */ + S_ST( 'a', 3, 544, 0 ), /* 543 multic */ + S_ST( 's', 3, 545, 0 ), /* 544 multica */ + S_ST( 't', 3, 546, 0 ), /* 545 multicas */ + S_ST( 'c', 3, 547, 0 ), /* 546 multicast */ + S_ST( 'l', 3, 548, 0 ), /* 547 multicastc */ + S_ST( 'i', 3, 549, 0 ), /* 548 multicastcl */ + S_ST( 'e', 3, 550, 0 ), /* 549 multicastcli */ + S_ST( 'n', 3, 360, 0 ), /* 550 multicastclie */ + S_ST( 'n', 3, 594, 457 ), /* 551 */ + S_ST( 'i', 3, 361, 0 ), /* 552 n */ + S_ST( 'o', 3, 589, 552 ), /* 553 n */ + S_ST( 'l', 3, 555, 0 ), /* 554 no */ + S_ST( 'i', 3, 556, 0 ), /* 555 nol */ + S_ST( 'n', 3, 362, 0 ), /* 556 noli */ + S_ST( 'm', 3, 562, 554 ), /* 557 no */ + S_ST( 'o', 3, 559, 0 ), /* 558 nom */ + S_ST( 'd', 3, 560, 0 ), /* 559 nomo */ + S_ST( 'i', 3, 561, 0 ), /* 560 nomod */ + S_ST( 'f', 3, 363, 0 ), /* 561 nomodi */ + S_ST( 'r', 3, 563, 558 ), /* 562 nom */ + S_ST( 'u', 3, 564, 0 ), /* 563 nomr */ + S_ST( 'l', 3, 565, 0 ), /* 564 nomru */ + S_ST( 'i', 3, 566, 0 ), /* 565 nomrul */ + S_ST( 's', 3, 364, 0 ), /* 566 nomruli */ + S_ST( 'n', 3, 568, 557 ), /* 567 no */ + S_ST( 'v', 3, 569, 365 ), /* 568 non */ + S_ST( 'o', 3, 570, 0 ), /* 569 nonv */ + S_ST( 'l', 3, 571, 0 ), /* 570 nonvo */ + S_ST( 'a', 3, 572, 0 ), /* 571 nonvol */ + S_ST( 't', 3, 573, 0 ), /* 572 nonvola */ + S_ST( 'i', 3, 574, 0 ), /* 573 nonvolat */ + S_ST( 'l', 3, 366, 0 ), /* 574 nonvolati */ + S_ST( 'p', 3, 576, 567 ), /* 575 no */ + S_ST( 'e', 3, 577, 0 ), /* 576 nop */ + S_ST( 'e', 3, 367, 0 ), /* 577 nope */ + S_ST( 'q', 3, 579, 575 ), /* 578 no */ + S_ST( 'u', 3, 580, 0 ), /* 579 noq */ + S_ST( 'e', 3, 581, 0 ), /* 580 noqu */ + S_ST( 'r', 3, 368, 0 ), /* 581 noque */ + S_ST( 's', 3, 583, 578 ), /* 582 no */ + S_ST( 'e', 3, 587, 0 ), /* 583 nos */ + S_ST( 'l', 3, 585, 0 ), /* 584 nose */ + S_ST( 'e', 3, 586, 0 ), /* 585 nosel */ + S_ST( 'c', 3, 369, 0 ), /* 586 nosele */ + S_ST( 'r', 3, 588, 584 ), /* 587 nose */ + S_ST( 'v', 3, 370, 0 ), /* 588 noser */ + S_ST( 't', 3, 590, 582 ), /* 589 no */ + S_ST( 'r', 3, 592, 0 ), /* 590 not */ + S_ST( 'a', 3, 371, 0 ), /* 591 notr */ + S_ST( 'u', 3, 593, 591 ), /* 592 notr */ + S_ST( 's', 3, 372, 0 ), /* 593 notru */ + S_ST( 't', 3, 373, 553 ), /* 594 n */ + S_ST( 'p', 3, 596, 0 ), /* 595 ntp */ + S_ST( 'o', 3, 597, 0 ), /* 596 ntpp */ + S_ST( 'r', 3, 374, 0 ), /* 597 ntppo */ + S_ST( 's', 3, 599, 595 ), /* 598 ntp */ + S_ST( 'i', 3, 600, 0 ), /* 599 ntps */ + S_ST( 'g', 3, 601, 0 ), /* 600 ntpsi */ + S_ST( 'n', 3, 602, 0 ), /* 601 ntpsig */ + S_ST( 'd', 3, 603, 0 ), /* 602 ntpsign */ + S_ST( 's', 3, 604, 0 ), /* 603 ntpsignd */ + S_ST( 'o', 3, 605, 0 ), /* 604 ntpsignds */ + S_ST( 'c', 3, 606, 0 ), /* 605 ntpsigndso */ + S_ST( 'k', 3, 607, 0 ), /* 606 ntpsigndsoc */ + S_ST( 'e', 3, 375, 0 ), /* 607 ntpsigndsock */ + S_ST( 'o', 3, 609, 551 ), /* 608 */ + S_ST( 'r', 3, 610, 0 ), /* 609 o */ + S_ST( 'p', 3, 611, 0 ), /* 610 or */ + S_ST( 'h', 3, 612, 0 ), /* 611 orp */ + S_ST( 'a', 3, 376, 0 ), /* 612 orph */ + S_ST( 'w', 3, 614, 0 ), /* 613 orphan */ + S_ST( 'a', 3, 615, 0 ), /* 614 orphanw */ + S_ST( 'i', 3, 377, 0 ), /* 615 orphanwa */ + S_ST( 'p', 3, 389, 608 ), /* 616 */ + S_ST( 'a', 3, 618, 0 ), /* 617 p */ + S_ST( 'n', 3, 619, 0 ), /* 618 pa */ + S_ST( 'i', 3, 378, 0 ), /* 619 pan */ + S_ST( 'e', 3, 621, 617 ), /* 620 p */ + S_ST( 'e', 3, 379, 0 ), /* 621 pe */ + S_ST( 's', 3, 623, 0 ), /* 622 peer */ + S_ST( 't', 3, 624, 0 ), /* 623 peers */ + S_ST( 'a', 3, 625, 0 ), /* 624 peerst */ + S_ST( 't', 3, 380, 0 ), /* 625 peersta */ + S_ST( 'h', 3, 627, 620 ), /* 626 p */ + S_ST( 'o', 3, 628, 0 ), /* 627 ph */ + S_ST( 'n', 3, 381, 0 ), /* 628 pho */ + S_ST( 'i', 3, 382, 626 ), /* 629 p */ + S_ST( 'f', 3, 631, 0 ), /* 630 pid */ + S_ST( 'i', 3, 632, 0 ), /* 631 pidf */ + S_ST( 'l', 3, 383, 0 ), /* 632 pidfi */ + S_ST( 'o', 3, 635, 629 ), /* 633 p */ + S_ST( 'o', 3, 384, 0 ), /* 634 po */ + S_ST( 'r', 3, 385, 634 ), /* 635 po */ + S_ST( 'r', 3, 643, 633 ), /* 636 p */ + S_ST( 'e', 3, 641, 0 ), /* 637 pr */ + S_ST( 'e', 3, 639, 0 ), /* 638 pre */ + S_ST( 'm', 3, 640, 0 ), /* 639 pree */ + S_ST( 'p', 3, 386, 0 ), /* 640 preem */ + S_ST( 'f', 3, 642, 638 ), /* 641 pre */ + S_ST( 'e', 3, 387, 0 ), /* 642 pref */ + S_ST( 'o', 3, 656, 637 ), /* 643 pr */ + S_ST( 'c', 3, 645, 0 ), /* 644 pro */ + S_ST( '_', 3, 646, 0 ), /* 645 proc */ + S_ST( 'd', 3, 647, 0 ), /* 646 proc_ */ + S_ST( 'e', 3, 648, 0 ), /* 647 proc_d */ + S_ST( 'l', 3, 649, 0 ), /* 648 proc_de */ + S_ST( 'a', 3, 446, 0 ), /* 649 proc_del */ + S_ST( 'p', 3, 651, 644 ), /* 650 pro */ + S_ST( '_', 3, 652, 0 ), /* 651 prop */ + S_ST( 'd', 3, 653, 0 ), /* 652 prop_ */ + S_ST( 'e', 3, 654, 0 ), /* 653 prop_d */ + S_ST( 'l', 3, 655, 0 ), /* 654 prop_de */ + S_ST( 'a', 3, 445, 0 ), /* 655 prop_del */ + S_ST( 't', 3, 657, 650 ), /* 656 pro */ + S_ST( 'o', 3, 658, 0 ), /* 657 prot */ + S_ST( 's', 3, 659, 0 ), /* 658 proto */ + S_ST( 't', 3, 660, 0 ), /* 659 protos */ + S_ST( 'a', 3, 661, 0 ), /* 660 protost */ + S_ST( 't', 3, 388, 0 ), /* 661 protosta */ + S_ST( 'r', 3, 693, 616 ), /* 662 */ + S_ST( 'a', 3, 669, 0 ), /* 663 r */ + S_ST( 'n', 3, 665, 0 ), /* 664 ra */ + S_ST( 'd', 3, 666, 0 ), /* 665 ran */ + S_ST( 'f', 3, 667, 0 ), /* 666 rand */ + S_ST( 'i', 3, 668, 0 ), /* 667 randf */ + S_ST( 'l', 3, 390, 0 ), /* 668 randfi */ + S_ST( 'w', 3, 670, 664 ), /* 669 ra */ + S_ST( 's', 3, 671, 0 ), /* 670 raw */ + S_ST( 't', 3, 672, 0 ), /* 671 raws */ + S_ST( 'a', 3, 673, 0 ), /* 672 rawst */ + S_ST( 't', 3, 391, 0 ), /* 673 rawsta */ + S_ST( 'e', 3, 690, 663 ), /* 674 r */ + S_ST( 'f', 3, 676, 0 ), /* 675 re */ + S_ST( 'i', 3, 392, 0 ), /* 676 ref */ + S_ST( 'q', 3, 678, 675 ), /* 677 re */ + S_ST( 'u', 3, 679, 0 ), /* 678 req */ + S_ST( 'e', 3, 680, 0 ), /* 679 requ */ + S_ST( 's', 3, 681, 0 ), /* 680 reque */ + S_ST( 't', 3, 682, 0 ), /* 681 reques */ + S_ST( 'k', 3, 683, 0 ), /* 682 request */ + S_ST( 'e', 3, 393, 0 ), /* 683 requestk */ + S_ST( 's', 3, 686, 677 ), /* 684 re */ + S_ST( 'e', 3, 394, 0 ), /* 685 res */ + S_ST( 't', 3, 687, 685 ), /* 686 res */ + S_ST( 'r', 3, 688, 0 ), /* 687 rest */ + S_ST( 'i', 3, 689, 0 ), /* 688 restr */ + S_ST( 'c', 3, 395, 0 ), /* 689 restri */ + S_ST( 'v', 3, 691, 684 ), /* 690 re */ + S_ST( 'o', 3, 692, 0 ), /* 691 rev */ + S_ST( 'k', 3, 396, 0 ), /* 692 revo */ + S_ST( 'l', 3, 694, 674 ), /* 693 r */ + S_ST( 'i', 3, 695, 0 ), /* 694 rl */ + S_ST( 'm', 3, 696, 0 ), /* 695 rli */ + S_ST( 'i', 3, 397, 0 ), /* 696 rlim */ + S_ST( 's', 3, 770, 662 ), /* 697 */ + S_ST( 'a', 3, 699, 0 ), /* 698 s */ + S_ST( 'v', 3, 700, 0 ), /* 699 sa */ + S_ST( 'e', 3, 701, 0 ), /* 700 sav */ + S_ST( 'c', 3, 702, 0 ), /* 701 save */ + S_ST( 'o', 3, 703, 0 ), /* 702 savec */ + S_ST( 'n', 3, 704, 0 ), /* 703 saveco */ + S_ST( 'f', 3, 705, 0 ), /* 704 savecon */ + S_ST( 'i', 3, 706, 0 ), /* 705 saveconf */ + S_ST( 'g', 3, 707, 0 ), /* 706 saveconfi */ + S_ST( 'd', 3, 708, 0 ), /* 707 saveconfig */ + S_ST( 'i', 3, 398, 0 ), /* 708 saveconfigd */ + S_ST( 'e', 3, 719, 698 ), /* 709 s */ + S_ST( 'r', 3, 711, 0 ), /* 710 se */ + S_ST( 'v', 3, 712, 0 ), /* 711 ser */ + S_ST( 'e', 3, 399, 0 ), /* 712 serv */ + S_ST( '_', 3, 714, 0 ), /* 713 server */ + S_ST( 'o', 3, 715, 0 ), /* 714 server_ */ + S_ST( 'f', 3, 716, 0 ), /* 715 server_o */ + S_ST( 'f', 3, 717, 0 ), /* 716 server_of */ + S_ST( 's', 3, 718, 0 ), /* 717 server_off */ + S_ST( 'e', 3, 440, 0 ), /* 718 server_offs */ + S_ST( 't', 3, 720, 710 ), /* 719 se */ + S_ST( 'v', 3, 721, 0 ), /* 720 set */ + S_ST( 'a', 3, 400, 0 ), /* 721 setv */ + S_ST( 'i', 3, 723, 709 ), /* 722 s */ + S_ST( 'm', 3, 724, 0 ), /* 723 si */ + S_ST( 'u', 3, 725, 0 ), /* 724 sim */ + S_ST( 'l', 3, 726, 0 ), /* 725 simu */ + S_ST( 'a', 3, 727, 0 ), /* 726 simul */ + S_ST( 't', 3, 728, 0 ), /* 727 simula */ + S_ST( 'i', 3, 729, 437 ), /* 728 simulat */ + S_ST( 'o', 3, 730, 0 ), /* 729 simulati */ + S_ST( 'n', 3, 731, 0 ), /* 730 simulatio */ + S_ST( '_', 3, 732, 0 ), /* 731 simulation */ + S_ST( 'd', 3, 733, 0 ), /* 732 simulation_ */ + S_ST( 'u', 3, 734, 0 ), /* 733 simulation_d */ + S_ST( 'r', 3, 735, 0 ), /* 734 simulation_du */ + S_ST( 'a', 3, 736, 0 ), /* 735 simulation_dur */ + S_ST( 't', 3, 737, 0 ), /* 736 simulation_dura */ + S_ST( 'i', 3, 738, 0 ), /* 737 simulation_durat */ + S_ST( 'o', 3, 439, 0 ), /* 738 simulation_durati */ + S_ST( 'o', 3, 740, 722 ), /* 739 s */ + S_ST( 'u', 3, 741, 0 ), /* 740 so */ + S_ST( 'r', 3, 742, 0 ), /* 741 sou */ + S_ST( 'c', 3, 401, 0 ), /* 742 sour */ + S_ST( 't', 3, 766, 739 ), /* 743 s */ + S_ST( 'a', 3, 750, 0 ), /* 744 st */ + S_ST( 'c', 3, 746, 0 ), /* 745 sta */ + S_ST( 'k', 3, 747, 0 ), /* 746 stac */ + S_ST( 's', 3, 748, 0 ), /* 747 stack */ + S_ST( 'i', 3, 749, 0 ), /* 748 stacks */ + S_ST( 'z', 3, 402, 0 ), /* 749 stacksi */ + S_ST( 't', 3, 404, 745 ), /* 750 sta */ + S_ST( 'i', 3, 752, 0 ), /* 751 stat */ + S_ST( 's', 3, 753, 0 ), /* 752 stati */ + S_ST( 't', 3, 754, 0 ), /* 753 statis */ + S_ST( 'i', 3, 755, 0 ), /* 754 statist */ + S_ST( 'c', 3, 403, 0 ), /* 755 statisti */ + S_ST( 'd', 3, 757, 0 ), /* 756 stats */ + S_ST( 'i', 3, 405, 0 ), /* 757 statsd */ + S_ST( 'e', 3, 406, 744 ), /* 758 st */ + S_ST( 'b', 3, 760, 0 ), /* 759 step */ + S_ST( 'a', 3, 761, 0 ), /* 760 stepb */ + S_ST( 'c', 3, 407, 0 ), /* 761 stepba */ + S_ST( 'f', 3, 763, 759 ), /* 762 step */ + S_ST( 'w', 3, 408, 0 ), /* 763 stepf */ + S_ST( 'o', 3, 765, 762 ), /* 764 step */ + S_ST( 'u', 3, 409, 0 ), /* 765 stepo */ + S_ST( 'r', 3, 767, 758 ), /* 766 st */ + S_ST( 'a', 3, 768, 0 ), /* 767 str */ + S_ST( 't', 3, 769, 0 ), /* 768 stra */ + S_ST( 'u', 3, 410, 0 ), /* 769 strat */ + S_ST( 'y', 3, 412, 743 ), /* 770 s */ + S_ST( 's', 3, 772, 0 ), /* 771 sys */ + S_ST( 't', 3, 773, 0 ), /* 772 syss */ + S_ST( 'a', 3, 774, 0 ), /* 773 sysst */ + S_ST( 't', 3, 413, 0 ), /* 774 syssta */ + S_ST( 't', 3, 801, 697 ), /* 775 */ + S_ST( 'i', 3, 787, 0 ), /* 776 t */ + S_ST( 'c', 3, 414, 0 ), /* 777 ti */ + S_ST( 'm', 3, 780, 777 ), /* 778 ti */ + S_ST( 'e', 3, 417, 0 ), /* 779 tim */ + S_ST( 'i', 3, 781, 779 ), /* 780 tim */ + S_ST( 'n', 3, 782, 0 ), /* 781 timi */ + S_ST( 'g', 3, 783, 0 ), /* 782 timin */ + S_ST( 's', 3, 784, 0 ), /* 783 timing */ + S_ST( 't', 3, 785, 0 ), /* 784 timings */ + S_ST( 'a', 3, 786, 0 ), /* 785 timingst */ + S_ST( 't', 3, 418, 0 ), /* 786 timingsta */ + S_ST( 'n', 3, 788, 778 ), /* 787 ti */ + S_ST( 'k', 3, 789, 0 ), /* 788 tin */ + S_ST( 'e', 3, 419, 0 ), /* 789 tink */ + S_ST( 'o', 3, 420, 776 ), /* 790 t */ + S_ST( 'r', 3, 793, 790 ), /* 791 t */ + S_ST( 'a', 3, 421, 0 ), /* 792 tr */ + S_ST( 'u', 3, 794, 792 ), /* 793 tr */ + S_ST( 's', 3, 795, 422 ), /* 794 tru */ + S_ST( 't', 3, 796, 0 ), /* 795 trus */ + S_ST( 'e', 3, 797, 0 ), /* 796 trust */ + S_ST( 'd', 3, 798, 0 ), /* 797 truste */ + S_ST( 'k', 3, 799, 0 ), /* 798 trusted */ + S_ST( 'e', 3, 423, 0 ), /* 799 trustedk */ + S_ST( 't', 3, 424, 791 ), /* 800 t */ + S_ST( 'y', 3, 802, 800 ), /* 801 t */ + S_ST( 'p', 3, 425, 0 ), /* 802 ty */ + S_ST( 'u', 3, 804, 775 ), /* 803 */ + S_ST( 'n', 3, 810, 0 ), /* 804 u */ + S_ST( 'c', 3, 806, 0 ), /* 805 un */ + S_ST( 'o', 3, 807, 0 ), /* 806 unc */ + S_ST( 'n', 3, 808, 0 ), /* 807 unco */ + S_ST( 'f', 3, 809, 0 ), /* 808 uncon */ + S_ST( 'i', 3, 427, 0 ), /* 809 unconf */ + S_ST( 'p', 3, 811, 805 ), /* 810 un */ + S_ST( 'e', 3, 812, 0 ), /* 811 unp */ + S_ST( 'e', 3, 428, 0 ), /* 812 unpe */ + S_ST( 'v', 3, 814, 803 ), /* 813 */ + S_ST( 'e', 3, 815, 0 ), /* 814 v */ + S_ST( 'r', 3, 816, 0 ), /* 815 ve */ + S_ST( 's', 3, 817, 0 ), /* 816 ver */ + S_ST( 'i', 3, 818, 0 ), /* 817 vers */ + S_ST( 'o', 3, 429, 0 ), /* 818 versi */ + S_ST( 'w', 3, 826, 813 ), /* 819 */ + S_ST( 'a', 3, 821, 0 ), /* 820 w */ + S_ST( 'n', 3, 822, 0 ), /* 821 wa */ + S_ST( 'd', 3, 823, 0 ), /* 822 wan */ + S_ST( 'e', 3, 443, 0 ), /* 823 wand */ + S_ST( 'e', 3, 825, 820 ), /* 824 w */ + S_ST( 'e', 3, 431, 0 ), /* 825 we */ + S_ST( 'i', 3, 827, 824 ), /* 826 w */ + S_ST( 'l', 3, 828, 0 ), /* 827 wi */ + S_ST( 'd', 3, 829, 0 ), /* 828 wil */ + S_ST( 'c', 3, 830, 0 ), /* 829 wild */ + S_ST( 'a', 3, 831, 0 ), /* 830 wildc */ + S_ST( 'r', 3, 432, 0 ), /* 831 wildca */ + S_ST( 'x', 3, 833, 819 ), /* 832 */ + S_ST( 'l', 3, 834, 0 ), /* 833 x */ + S_ST( 'e', 3, 835, 0 ), /* 834 xl */ + S_ST( 'a', 3, 836, 0 ), /* 835 xle */ + S_ST( 'v', 3, 433, 0 ), /* 836 xlea */ + S_ST( 'y', 3, 838, 832 ), /* 837 [initial state] */ + S_ST( 'e', 3, 839, 0 ), /* 838 y */ + S_ST( 'a', 3, 434, 0 ) /* 839 ye */ }; diff --git a/ntpd/ntp_leapsec.c b/ntpd/ntp_leapsec.c index 14b8cd9..eeef89f 100644 --- a/ntpd/ntp_leapsec.c +++ b/ntpd/ntp_leapsec.c @@ -787,7 +787,7 @@ leapsec_add( const vint64 * now64 , int insert) { - vint64 ttime, stime; + vint64 ttime, starttime; struct calendar fts; leap_info_t li; @@ -815,12 +815,12 @@ leapsec_add( fts.hour = 0; fts.minute = 0; fts.second = 0; - stime = ntpcal_date_to_ntp64(&fts); + starttime = ntpcal_date_to_ntp64(&fts); fts.month++; ttime = ntpcal_date_to_ntp64(&fts); li.ttime = ttime; - li.stime = ttime.D_s.lo - stime.D_s.lo; + li.stime = ttime.D_s.lo - starttime.D_s.lo; li.taiof = (pt->head.size ? pt->info[0].taiof : pt->head.base_tai) + (insert ? 1 : -1); li.dynls = 1; @@ -839,7 +839,7 @@ leapsec_raw( int taiof, int dynls) { - vint64 stime; + vint64 starttime; struct calendar fts; leap_info_t li; @@ -856,9 +856,9 @@ leapsec_raw( return FALSE; } fts.month--; /* was in range 1..12, no overflow here! */ - stime = ntpcal_date_to_ntp64(&fts); + starttime = ntpcal_date_to_ntp64(&fts); li.ttime = *ttime; - li.stime = ttime->D_s.lo - stime.D_s.lo; + li.stime = ttime->D_s.lo - starttime.D_s.lo; li.taiof = (int16_t)taiof; li.dynls = (dynls != 0); return add_range(pt, &li); @@ -920,7 +920,8 @@ do_leap_hash( /* now do the byte twiddle */ for (wi=0; wi < 5; ++wi) for (di=3; di >= 0; --di) { - mac->hv[wi*4 + di] = (unsigned char)tmp[wi]; + mac->hv[wi*4 + di] = + (unsigned char)(tmp[wi] & 0x0FF); tmp[wi] >>= 8; } return TRUE; @@ -972,7 +973,7 @@ leapsec_validate( do_hash_data(&mdctx, line+2); else if (!strncmp(line, "#$", 2)) do_hash_data(&mdctx, line+2); - else if (isdigit(line[0])) + else if (isdigit((unsigned char)line[0])) do_hash_data(&mdctx, line); } isc_sha1_final(&mdctx, ldig.hv); diff --git a/ntpd/ntp_loopfilter.c b/ntpd/ntp_loopfilter.c index 87db726..e47f83b 100644 --- a/ntpd/ntp_loopfilter.c +++ b/ntpd/ntp_loopfilter.c @@ -8,6 +8,9 @@ # include #endif +#ifdef USE_SNPRINTB +# include +#endif #include "ntpd.h" #include "ntp_io.h" #include "ntp_unixtime.h" @@ -43,7 +46,7 @@ #define CLOCK_LIMIT 30 /* poll-adjust threshold */ #define CLOCK_PGATE 4. /* poll-adjust gate */ #define PPS_MAXAGE 120 /* kernel pps signal timeout (s) */ -#define FREQTOD(x) ((x) / 65536e6) /* NTP to double */ +#define FREQTOD(x) ((x) / 65536e6) /* NTP to double */ #define DTOFREQ(x) ((int32)((x) * 65536e6)) /* double to NTP */ /* @@ -103,7 +106,8 @@ /* * Program variables that can be tinkered. */ -double clock_max = CLOCK_MAX; /* step threshold */ +double clock_max_back = CLOCK_MAX; /* step threshold */ +double clock_max_fwd = CLOCK_MAX; /* step threshold */ double clock_minstep = CLOCK_MINSTEP; /* stepout threshold */ double clock_panic = CLOCK_PANIC; /* panic threshold */ double clock_phi = CLOCK_PHI; /* dispersion rate (s/s) */ @@ -149,8 +153,10 @@ int kern_enable = TRUE; /* kernel support enabled */ int hardpps_enable; /* kernel PPS discipline enabled */ int ext_enable; /* external clock enabled */ int pps_stratum; /* pps stratum */ -int allow_panic = FALSE; /* allow panic correction */ -int mode_ntpdate = FALSE; /* exit on first clock set */ +int kernel_status; /* from ntp_adjtime */ +int allow_panic = FALSE; /* allow panic correction (-g) */ +int force_step_once = FALSE; /* always step time once at startup (-G) */ +int mode_ntpdate = FALSE; /* exit on first clock set (-q) */ int freq_cnt; /* initial frequency clamp */ int freq_set; /* initial set frequency switch */ @@ -182,6 +188,21 @@ static sigjmp_buf env; /* environment var. for pll_trap() */ #endif /* SIGSYS */ #endif /* KERNEL_PLL */ +static void +sync_status(const char *what, int ostatus, int nstatus) +{ + char obuf[256], nbuf[256], tbuf[1024]; +#if defined(USE_SNPRINTB) && defined (STA_FMT) + snprintb(obuf, sizeof(obuf), STA_FMT, ostatus); + snprintb(nbuf, sizeof(nbuf), STA_FMT, nstatus); +#else + snprintf(obuf, sizeof(obuf), "%04x", ostatus); + snprintf(nbuf, sizeof(nbuf), "%04x", nstatus); +#endif + snprintf(tbuf, sizeof(tbuf), "%s status: %s -> %s", what, obuf, nbuf); + report_event(EVNT_KERN, NULL, tbuf); +} + /* * file_name - return pointer to non-relative portion of this C file pathname */ @@ -189,7 +210,9 @@ static char *file_name(void) { if (this_file == NULL) { (void)strncpy(relative_path, __FILE__, PATH_MAX); - for (this_file=relative_path; *this_file && ! isalnum(*this_file); this_file++) ; + for (this_file=relative_path; + *this_file && ! isalnum((unsigned char)*this_file); + this_file++) ; } return this_file; } @@ -259,47 +282,69 @@ ntp_adjtime_error_handler( } break; #ifdef TIME_OK - case TIME_OK: /* 0 no leap second warning */ - /* OK means OK */ + case TIME_OK: /* 0: synchronized, no leap second warning */ + /* msyslog(LOG_INFO, "kernel reports time is synchronized normally"); */ break; +#else +# warning TIME_OK is not defined #endif #ifdef TIME_INS - case TIME_INS: /* 1 positive leap second warning */ - msyslog(LOG_INFO, "%s: %s line %d: kernel reports positive leap second warning state", - caller, file_name(), line - ); + case TIME_INS: /* 1: positive leap second warning */ + msyslog(LOG_INFO, "kernel reports leap second insertion scheduled"); break; +#else +# warning TIME_INS is not defined #endif #ifdef TIME_DEL - case TIME_DEL: /* 2 negative leap second warning */ - msyslog(LOG_INFO, "%s: %s line %d: kernel reports negative leap second warning state", - caller, file_name(), line - ); + case TIME_DEL: /* 2: negative leap second warning */ + msyslog(LOG_INFO, "kernel reports leap second deletion scheduled"); break; +#else +# warning TIME_DEL is not defined #endif #ifdef TIME_OOP - case TIME_OOP: /* 3 leap second in progress */ - msyslog(LOG_INFO, "%s: %s line %d: kernel reports leap second in progress", - caller, file_name(), line - ); + case TIME_OOP: /* 3: leap second in progress */ + msyslog(LOG_INFO, "kernel reports leap second in progress"); break; +#else +# warning TIME_OOP is not defined #endif #ifdef TIME_WAIT - case TIME_WAIT: /* 4 leap second has occured */ - msyslog(LOG_INFO, "%s: %s line %d: kernel reports leap second has occured", - caller, file_name(), line - ); + case TIME_WAIT: /* 4: leap second has occured */ + msyslog(LOG_INFO, "kernel reports leap second has occurred"); break; +#else +# warning TIME_WAIT is not defined #endif #ifdef TIME_ERROR - case TIME_ERROR: /* loss of synchronization */ + case TIME_ERROR: /* 5: unsynchronized, or loss of synchronization */ + /* error (see status word) */ if (pps_call && !(ptimex->status & STA_PPSSIGNAL)) report_event(EVNT_KERN, NULL, "PPS no signal"); errno = saved_errno; DPRINTF(1, ("kernel loop status (%s) %d %m\n", k_st_flags(ptimex->status), errno)); + /* + * This code may be returned when ntp_adjtime() has just + * been called for the first time, quite a while after + * startup, when ntpd just starts to discipline the kernel + * time. In this case the occurrence of this message + * can be pretty confusing. + * + * HMS: How about a message when we begin kernel processing: + * Determining kernel clock state... + * so an initial TIME_ERROR message is less confising, + * or skipping the first message (ugh), + * or ??? + * msyslog(LOG_INFO, "kernel reports time synchronization lost"); + */ + errno = saved_errno; /* may not be needed */ + msyslog(LOG_INFO, "kernel reports TIME_ERROR: %#x: %s %m", + ptimex->status, k_st_flags(ptimex->status)); break; +#else +# warning TIME_ERROR is not defined #endif default: msyslog(LOG_NOTICE, "%s: %s line %d: unhandled return value %d from ntp_adjtime in %s at line %d", @@ -383,7 +428,8 @@ local_clock( * directly to the terminal. */ if (mode_ntpdate) { - if (fabs(fp_offset) > clock_max && clock_max > 0) { + if ( ( fp_offset > clock_max_fwd && clock_max_fwd > 0) + || (-fp_offset > clock_max_back && clock_max_back > 0)) { step_systime(fp_offset); msyslog(LOG_NOTICE, "ntpd: time set %+.6f s", fp_offset); @@ -432,10 +478,10 @@ local_clock( * threshold (128 ms) and when it does not. Under certain * conditions updates are suspended until the stepout theshold * (900 s) is exceeded. See the documentation on how these - * thresholds interact with commands and command line options. + * thresholds interact with commands and command line options. * * Note the kernel is disabled if step is disabled or greater - * than 0.5 s or in ntpdate mode. + * than 0.5 s or in ntpdate mode. */ osys_poll = sys_poll; if (sys_poll < peer->minpoll) @@ -445,7 +491,14 @@ local_clock( mu = current_time - clock_epoch; clock_frequency = drift_comp; rval = 1; - if (fabs(fp_offset) > clock_max && clock_max > 0) { + if ( ( fp_offset > clock_max_fwd && clock_max_fwd > 0) + || (-fp_offset > clock_max_back && clock_max_back > 0) + || force_step_once ) { + if (force_step_once) { + force_step_once = FALSE; /* we want this only once after startup */ + msyslog(LOG_NOTICE, "Doing intital time step" ); + } + switch (state) { /* @@ -505,7 +558,7 @@ local_clock( * threshold. Note that a single spike greater than the * step threshold is always suppressed, even with a * long time constant. - */ + */ default: snprintf(tbuf, sizeof(tbuf), "%+.6f s", fp_offset); @@ -523,7 +576,6 @@ local_clock( } rstclock(EVNT_SYNC, 0); } else { - /* * The offset is less than the step threshold. Calculate * the jitter as the exponentially weighted offset @@ -585,9 +637,9 @@ local_clock( /* * The PLL frequency gain (numerator) depends on * the minimum of the update interval and Allan - * intercept. This reduces the PLL gain when the + * intercept. This reduces the PLL gain when the * FLL becomes effective. - */ + */ etemp = min(ULOGTOD(allan_xpt), mu); dtemp = 4 * CLOCK_PLL * ULOGTOD(sys_poll); clock_frequency += fp_offset * etemp / (dtemp * @@ -663,16 +715,17 @@ local_clock( * Enable/disable the PPS if requested. */ if (hardpps_enable) { + ntv.status |= (STA_PPSTIME | STA_PPSFREQ); if (!(pll_status & STA_PPSTIME)) - report_event(EVNT_KERN, - NULL, "PPS enabled"); - ntv.status |= STA_PPSTIME | STA_PPSFREQ; + sync_status("PPS enabled", + pll_status, + ntv.status); } else { + ntv.status &= ~(STA_PPSTIME | STA_PPSFREQ); if (pll_status & STA_PPSTIME) - report_event(EVNT_KERN, - NULL, "PPS disabled"); - ntv.status &= ~(STA_PPSTIME | - STA_PPSFREQ); + sync_status("PPS disabled", + pll_status, + ntv.status); } if (sys_leap == LEAP_ADDSECOND) ntv.status |= STA_INS; @@ -685,8 +738,13 @@ local_clock( * the pps. In any case, fetch the kernel offset, * frequency and jitter. */ - if ((ntp_adj_ret = ntp_adjtime(&ntv)) != 0) { - ntp_adjtime_error_handler(__func__, &ntv, ntp_adj_ret, errno, hardpps_enable, 0, __LINE__ - 1); + ntp_adj_ret = ntp_adjtime(&ntv); + /* + * A squeal is a return status < 0, or a state change. + */ + if ((0 > ntp_adj_ret) || (ntp_adj_ret != kernel_status)) { + kernel_status = ntp_adj_ret; + ntp_adjtime_error_handler(__func__, &ntv, ntp_adj_ret, errno, hardpps_enable, 0, __LINE__ - 1); } pll_status = ntv.status; #ifdef STA_NANO @@ -867,7 +925,7 @@ adj_host_clock( clock_offset -= offset_adj; /* * Windows port adj_systime() must be called each second, - * even if the argument is zero, to ease emulation of + * even if the argument is zero, to ease emulation of * adjtime() using Windows' slew API which controls the rate * but does not automatically stop slewing when an offset * has decayed to zero. @@ -896,7 +954,7 @@ rstclock( report_event(trans, NULL, NULL); state = trans; last_offset = clock_offset = offset; - clock_epoch = current_time; + clock_epoch = current_time; } @@ -1142,6 +1200,21 @@ loop_config( break; case LOOP_KERN_CLEAR: +#if 0 /* XXX: needs more review, and how can we get here? */ +#ifndef LOCKCLOCK +# ifdef KERNEL_PLL + if (pll_control && kern_enable) { + memset((char *)&ntv, 0, sizeof(ntv)); + ntv.modes = MOD_STATUS; + ntv.status = STA_UNSYNC; + ntp_adjtime(&ntv); + sync_status("kernel time sync disabled", + pll_status, + ntv.status); + } +# endif /* KERNEL_PLL */ +#endif /* LOCKCLOCK */ +#endif break; /* @@ -1154,12 +1227,12 @@ loop_config( case LOOP_CODEC: /* audio codec frequency (codec) */ clock_codec = freq / 1e6; break; - + case LOOP_PHI: /* dispersion threshold (dispersion) */ clock_phi = freq / 1e6; break; - case LOOP_FREQ: /* initial frequency (freq) */ + case LOOP_FREQ: /* initial frequency (freq) */ init_drift_comp = freq; freq_set++; break; @@ -1180,8 +1253,27 @@ loop_config( break; case LOOP_MAX: /* step threshold (step) */ - clock_max = freq; - if (clock_max == 0 || clock_max > 0.5) + clock_max_fwd = clock_max_back = freq; + if (freq == 0 || freq > 0.5) + select_loop(FALSE); + break; + + case LOOP_MAX_BACK: /* step threshold (step) */ + clock_max_back = freq; + /* + * Leave using the kernel discipline code unless both + * limits are massive. This assumes the reason to stop + * using it is that it's pointless, not that it goes wrong. + */ + if ( (clock_max_back == 0 || clock_max_back > 0.5) + || (clock_max_fwd == 0 || clock_max_fwd > 0.5)) + select_loop(FALSE); + break; + + case LOOP_MAX_FWD: /* step threshold (step) */ + clock_max_fwd = freq; + if ( (clock_max_back == 0 || clock_max_back > 0.5) + || (clock_max_fwd == 0 || clock_max_fwd > 0.5)) select_loop(FALSE); break; @@ -1189,7 +1281,7 @@ loop_config( if (freq < CLOCK_MINSTEP) clock_minstep = CLOCK_MINSTEP; else - clock_minstep = freq; + clock_minstep = freq; break; case LOOP_TICK: /* tick increment (tick) */ diff --git a/ntpd/ntp_parser.c b/ntpd/ntp_parser.c index b3f4e4f..0cf5519 100644 --- a/ntpd/ntp_parser.c +++ b/ntpd/ntp_parser.c @@ -96,7 +96,7 @@ # define ONLY_SIM(a) NULL #endif -#line 100 "../../ntpd/ntp_parser.c" /* yacc.c:339 */ +#line 100 "ntp_parser.c" /* yacc.c:339 */ # ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus @@ -219,104 +219,107 @@ extern int yydebug; T_Maxdist = 343, T_Maxmem = 344, T_Maxpoll = 345, - T_Mem = 346, - T_Memlock = 347, - T_Minclock = 348, - T_Mindepth = 349, - T_Mindist = 350, - T_Minimum = 351, - T_Minpoll = 352, - T_Minsane = 353, - T_Mode = 354, - T_Mode7 = 355, - T_Monitor = 356, - T_Month = 357, - T_Mru = 358, - T_Multicastclient = 359, - T_Nic = 360, - T_Nolink = 361, - T_Nomodify = 362, - T_Nomrulist = 363, - T_None = 364, - T_Nonvolatile = 365, - T_Nopeer = 366, - T_Noquery = 367, - T_Noselect = 368, - T_Noserve = 369, - T_Notrap = 370, - T_Notrust = 371, - T_Ntp = 372, - T_Ntpport = 373, - T_NtpSignDsocket = 374, - T_Orphan = 375, - T_Orphanwait = 376, - T_Panic = 377, - T_Peer = 378, - T_Peerstats = 379, - T_Phone = 380, - T_Pid = 381, - T_Pidfile = 382, - T_Pool = 383, - T_Port = 384, - T_Preempt = 385, - T_Prefer = 386, - T_Protostats = 387, - T_Pw = 388, - T_Randfile = 389, - T_Rawstats = 390, - T_Refid = 391, - T_Requestkey = 392, - T_Reset = 393, - T_Restrict = 394, - T_Revoke = 395, - T_Rlimit = 396, - T_Saveconfigdir = 397, - T_Server = 398, - T_Setvar = 399, - T_Source = 400, - T_Stacksize = 401, - T_Statistics = 402, - T_Stats = 403, - T_Statsdir = 404, - T_Step = 405, - T_Stepout = 406, - T_Stratum = 407, - T_String = 408, - T_Sys = 409, - T_Sysstats = 410, - T_Tick = 411, - T_Time1 = 412, - T_Time2 = 413, - T_Timer = 414, - T_Timingstats = 415, - T_Tinker = 416, - T_Tos = 417, - T_Trap = 418, - T_True = 419, - T_Trustedkey = 420, - T_Ttl = 421, - T_Type = 422, - T_U_int = 423, - T_Unconfig = 424, - T_Unpeer = 425, - T_Version = 426, - T_WanderThreshold = 427, - T_Week = 428, - T_Wildcard = 429, - T_Xleave = 430, - T_Year = 431, - T_Flag = 432, - T_EOC = 433, - T_Simulate = 434, - T_Beep_Delay = 435, - T_Sim_Duration = 436, - T_Server_Offset = 437, - T_Duration = 438, - T_Freq_Offset = 439, - T_Wander = 440, - T_Jitter = 441, - T_Prop_Delay = 442, - T_Proc_Delay = 443 + T_Mdnstries = 346, + T_Mem = 347, + T_Memlock = 348, + T_Minclock = 349, + T_Mindepth = 350, + T_Mindist = 351, + T_Minimum = 352, + T_Minpoll = 353, + T_Minsane = 354, + T_Mode = 355, + T_Mode7 = 356, + T_Monitor = 357, + T_Month = 358, + T_Mru = 359, + T_Multicastclient = 360, + T_Nic = 361, + T_Nolink = 362, + T_Nomodify = 363, + T_Nomrulist = 364, + T_None = 365, + T_Nonvolatile = 366, + T_Nopeer = 367, + T_Noquery = 368, + T_Noselect = 369, + T_Noserve = 370, + T_Notrap = 371, + T_Notrust = 372, + T_Ntp = 373, + T_Ntpport = 374, + T_NtpSignDsocket = 375, + T_Orphan = 376, + T_Orphanwait = 377, + T_Panic = 378, + T_Peer = 379, + T_Peerstats = 380, + T_Phone = 381, + T_Pid = 382, + T_Pidfile = 383, + T_Pool = 384, + T_Port = 385, + T_Preempt = 386, + T_Prefer = 387, + T_Protostats = 388, + T_Pw = 389, + T_Randfile = 390, + T_Rawstats = 391, + T_Refid = 392, + T_Requestkey = 393, + T_Reset = 394, + T_Restrict = 395, + T_Revoke = 396, + T_Rlimit = 397, + T_Saveconfigdir = 398, + T_Server = 399, + T_Setvar = 400, + T_Source = 401, + T_Stacksize = 402, + T_Statistics = 403, + T_Stats = 404, + T_Statsdir = 405, + T_Step = 406, + T_Stepback = 407, + T_Stepfwd = 408, + T_Stepout = 409, + T_Stratum = 410, + T_String = 411, + T_Sys = 412, + T_Sysstats = 413, + T_Tick = 414, + T_Time1 = 415, + T_Time2 = 416, + T_Timer = 417, + T_Timingstats = 418, + T_Tinker = 419, + T_Tos = 420, + T_Trap = 421, + T_True = 422, + T_Trustedkey = 423, + T_Ttl = 424, + T_Type = 425, + T_U_int = 426, + T_Unconfig = 427, + T_Unpeer = 428, + T_Version = 429, + T_WanderThreshold = 430, + T_Week = 431, + T_Wildcard = 432, + T_Xleave = 433, + T_Year = 434, + T_Flag = 435, + T_EOC = 436, + T_Simulate = 437, + T_Beep_Delay = 438, + T_Sim_Duration = 439, + T_Server_Offset = 440, + T_Duration = 441, + T_Freq_Offset = 442, + T_Wander = 443, + T_Jitter = 444, + T_Prop_Delay = 445, + T_Proc_Delay = 446 }; #endif /* Tokens. */ @@ -408,104 +411,107 @@ extern int yydebug; #define T_Maxdist 343 #define T_Maxmem 344 #define T_Maxpoll 345 -#define T_Mem 346 -#define T_Memlock 347 -#define T_Minclock 348 -#define T_Mindepth 349 -#define T_Mindist 350 -#define T_Minimum 351 -#define T_Minpoll 352 -#define T_Minsane 353 -#define T_Mode 354 -#define T_Mode7 355 -#define T_Monitor 356 -#define T_Month 357 -#define T_Mru 358 -#define T_Multicastclient 359 -#define T_Nic 360 -#define T_Nolink 361 -#define T_Nomodify 362 -#define T_Nomrulist 363 -#define T_None 364 -#define T_Nonvolatile 365 -#define T_Nopeer 366 -#define T_Noquery 367 -#define T_Noselect 368 -#define T_Noserve 369 -#define T_Notrap 370 -#define T_Notrust 371 -#define T_Ntp 372 -#define T_Ntpport 373 -#define T_NtpSignDsocket 374 -#define T_Orphan 375 -#define T_Orphanwait 376 -#define T_Panic 377 -#define T_Peer 378 -#define T_Peerstats 379 -#define T_Phone 380 -#define T_Pid 381 -#define T_Pidfile 382 -#define T_Pool 383 -#define T_Port 384 -#define T_Preempt 385 -#define T_Prefer 386 -#define T_Protostats 387 -#define T_Pw 388 -#define T_Randfile 389 -#define T_Rawstats 390 -#define T_Refid 391 -#define T_Requestkey 392 -#define T_Reset 393 -#define T_Restrict 394 -#define T_Revoke 395 -#define T_Rlimit 396 -#define T_Saveconfigdir 397 -#define T_Server 398 -#define T_Setvar 399 -#define T_Source 400 -#define T_Stacksize 401 -#define T_Statistics 402 -#define T_Stats 403 -#define T_Statsdir 404 -#define T_Step 405 -#define T_Stepout 406 -#define T_Stratum 407 -#define T_String 408 -#define T_Sys 409 -#define T_Sysstats 410 -#define T_Tick 411 -#define T_Time1 412 -#define T_Time2 413 -#define T_Timer 414 -#define T_Timingstats 415 -#define T_Tinker 416 -#define T_Tos 417 -#define T_Trap 418 -#define T_True 419 -#define T_Trustedkey 420 -#define T_Ttl 421 -#define T_Type 422 -#define T_U_int 423 -#define T_Unconfig 424 -#define T_Unpeer 425 -#define T_Version 426 -#define T_WanderThreshold 427 -#define T_Week 428 -#define T_Wildcard 429 -#define T_Xleave 430 -#define T_Year 431 -#define T_Flag 432 -#define T_EOC 433 -#define T_Simulate 434 -#define T_Beep_Delay 435 -#define T_Sim_Duration 436 -#define T_Server_Offset 437 -#define T_Duration 438 -#define T_Freq_Offset 439 -#define T_Wander 440 -#define T_Jitter 441 -#define T_Prop_Delay 442 -#define T_Proc_Delay 443 +#define T_Mdnstries 346 +#define T_Mem 347 +#define T_Memlock 348 +#define T_Minclock 349 +#define T_Mindepth 350 +#define T_Mindist 351 +#define T_Minimum 352 +#define T_Minpoll 353 +#define T_Minsane 354 +#define T_Mode 355 +#define T_Mode7 356 +#define T_Monitor 357 +#define T_Month 358 +#define T_Mru 359 +#define T_Multicastclient 360 +#define T_Nic 361 +#define T_Nolink 362 +#define T_Nomodify 363 +#define T_Nomrulist 364 +#define T_None 365 +#define T_Nonvolatile 366 +#define T_Nopeer 367 +#define T_Noquery 368 +#define T_Noselect 369 +#define T_Noserve 370 +#define T_Notrap 371 +#define T_Notrust 372 +#define T_Ntp 373 +#define T_Ntpport 374 +#define T_NtpSignDsocket 375 +#define T_Orphan 376 +#define T_Orphanwait 377 +#define T_Panic 378 +#define T_Peer 379 +#define T_Peerstats 380 +#define T_Phone 381 +#define T_Pid 382 +#define T_Pidfile 383 +#define T_Pool 384 +#define T_Port 385 +#define T_Preempt 386 +#define T_Prefer 387 +#define T_Protostats 388 +#define T_Pw 389 +#define T_Randfile 390 +#define T_Rawstats 391 +#define T_Refid 392 +#define T_Requestkey 393 +#define T_Reset 394 +#define T_Restrict 395 +#define T_Revoke 396 +#define T_Rlimit 397 +#define T_Saveconfigdir 398 +#define T_Server 399 +#define T_Setvar 400 +#define T_Source 401 +#define T_Stacksize 402 +#define T_Statistics 403 +#define T_Stats 404 +#define T_Statsdir 405 +#define T_Step 406 +#define T_Stepback 407 +#define T_Stepfwd 408 +#define T_Stepout 409 +#define T_Stratum 410 +#define T_String 411 +#define T_Sys 412 +#define T_Sysstats 413 +#define T_Tick 414 +#define T_Time1 415 +#define T_Time2 416 +#define T_Timer 417 +#define T_Timingstats 418 +#define T_Tinker 419 +#define T_Tos 420 +#define T_Trap 421 +#define T_True 422 +#define T_Trustedkey 423 +#define T_Ttl 424 +#define T_Type 425 +#define T_U_int 426 +#define T_Unconfig 427 +#define T_Unpeer 428 +#define T_Version 429 +#define T_WanderThreshold 430 +#define T_Week 431 +#define T_Wildcard 432 +#define T_Xleave 433 +#define T_Year 434 +#define T_Flag 435 +#define T_EOC 436 +#define T_Simulate 437 +#define T_Beep_Delay 438 +#define T_Sim_Duration 439 +#define T_Server_Offset 440 +#define T_Duration 441 +#define T_Freq_Offset 442 +#define T_Wander 443 +#define T_Jitter 444 +#define T_Prop_Delay 445 +#define T_Proc_Delay 446 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -531,7 +537,7 @@ union YYSTYPE script_info * Sim_script; script_info_fifo * Sim_script_fifo; -#line 535 "../../ntpd/ntp_parser.c" /* yacc.c:355 */ +#line 541 "ntp_parser.c" /* yacc.c:355 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -546,7 +552,7 @@ int yyparse (struct FILE_INFO *ip_file); /* Copy the second part of user declarations. */ -#line 550 "../../ntpd/ntp_parser.c" /* yacc.c:358 */ +#line 556 "ntp_parser.c" /* yacc.c:358 */ #ifdef short # undef short @@ -786,23 +792,23 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 203 +#define YYFINAL 207 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 653 +#define YYLAST 622 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 194 +#define YYNTOKENS 197 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 104 /* YYNRULES -- Number of rules. */ -#define YYNRULES 307 +#define YYNRULES 310 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 411 +#define YYNSTATES 415 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 443 +#define YYMAXUTOK 446 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -815,15 +821,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 190, 191, 2, 2, 2, 2, 2, 2, 2, 2, + 193, 194, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 189, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 192, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 192, 2, 193, 2, 2, 2, 2, + 2, 2, 2, 195, 2, 196, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -855,44 +861,45 @@ static const yytype_uint8 yytranslate[] = 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188 + 185, 186, 187, 188, 189, 190, 191 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 363, 363, 367, 368, 369, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 404, 414, 415, 416, 417, 418, 422, 423, 428, 433, - 435, 441, 442, 450, 451, 452, 456, 461, 462, 463, - 464, 465, 466, 467, 468, 472, 474, 479, 480, 481, - 482, 483, 484, 488, 493, 502, 512, 513, 523, 525, - 527, 538, 545, 547, 552, 554, 556, 558, 560, 569, - 575, 576, 584, 586, 598, 599, 600, 601, 602, 611, - 616, 621, 629, 631, 633, 638, 639, 640, 641, 642, - 643, 647, 648, 649, 650, 659, 661, 670, 680, 685, - 693, 694, 695, 696, 697, 698, 699, 700, 705, 706, - 714, 724, 733, 748, 753, 754, 758, 759, 763, 764, - 765, 766, 767, 768, 769, 778, 782, 786, 794, 802, - 810, 825, 840, 853, 854, 862, 863, 864, 865, 866, - 867, 868, 869, 870, 871, 872, 873, 874, 875, 876, - 880, 885, 893, 898, 899, 900, 904, 909, 917, 922, - 923, 924, 925, 926, 927, 928, 929, 937, 947, 952, - 960, 962, 964, 966, 968, 973, 974, 978, 979, 980, - 981, 989, 994, 999, 1007, 1012, 1013, 1014, 1023, 1025, - 1030, 1035, 1043, 1045, 1062, 1063, 1064, 1065, 1066, 1067, - 1071, 1072, 1080, 1085, 1090, 1098, 1103, 1104, 1105, 1106, - 1107, 1108, 1109, 1110, 1119, 1120, 1121, 1128, 1135, 1151, - 1170, 1175, 1177, 1179, 1181, 1183, 1190, 1195, 1196, 1197, - 1201, 1202, 1203, 1207, 1208, 1212, 1219, 1229, 1238, 1243, - 1245, 1250, 1251, 1259, 1261, 1269, 1274, 1282, 1307, 1314, - 1324, 1325, 1329, 1330, 1331, 1332, 1336, 1337, 1338, 1342, - 1347, 1352, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1376, - 1381, 1389, 1394, 1402, 1404, 1408, 1413, 1418, 1426, 1431, - 1439, 1448, 1449, 1453, 1454, 1463, 1481, 1485, 1490, 1498, - 1503, 1504, 1508, 1513, 1521, 1526, 1531, 1536, 1541, 1549, - 1554, 1559, 1567, 1572, 1573, 1574, 1575, 1576 + 0, 366, 366, 370, 371, 372, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 407, 417, 418, 419, 420, 421, 425, 426, 431, 436, + 438, 444, 445, 453, 454, 455, 459, 464, 465, 466, + 467, 468, 469, 470, 471, 475, 477, 482, 483, 484, + 485, 486, 487, 491, 496, 505, 515, 516, 526, 528, + 530, 532, 543, 550, 552, 557, 559, 561, 563, 565, + 574, 580, 581, 589, 591, 603, 604, 605, 606, 607, + 616, 621, 626, 634, 636, 638, 643, 644, 645, 646, + 647, 648, 652, 653, 654, 655, 664, 666, 675, 685, + 690, 698, 699, 700, 701, 702, 703, 704, 705, 710, + 711, 719, 729, 738, 753, 758, 759, 763, 764, 768, + 769, 770, 771, 772, 773, 774, 783, 787, 791, 799, + 807, 815, 830, 845, 858, 859, 867, 868, 869, 870, + 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, + 881, 885, 890, 898, 903, 904, 905, 909, 914, 922, + 927, 928, 929, 930, 931, 932, 933, 934, 942, 952, + 957, 965, 967, 969, 971, 973, 978, 979, 983, 984, + 985, 986, 994, 999, 1004, 1012, 1017, 1018, 1019, 1028, + 1030, 1035, 1040, 1048, 1050, 1067, 1068, 1069, 1070, 1071, + 1072, 1076, 1077, 1085, 1090, 1095, 1103, 1108, 1109, 1110, + 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1126, 1127, 1128, + 1135, 1142, 1158, 1177, 1182, 1184, 1186, 1188, 1190, 1197, + 1202, 1203, 1204, 1208, 1209, 1210, 1214, 1215, 1219, 1226, + 1236, 1245, 1250, 1252, 1257, 1258, 1266, 1268, 1276, 1281, + 1289, 1314, 1321, 1331, 1332, 1336, 1337, 1338, 1339, 1343, + 1344, 1345, 1349, 1354, 1359, 1367, 1368, 1369, 1370, 1371, + 1372, 1373, 1383, 1388, 1396, 1401, 1409, 1411, 1415, 1420, + 1425, 1433, 1438, 1446, 1455, 1456, 1460, 1461, 1470, 1488, + 1492, 1497, 1505, 1510, 1511, 1515, 1520, 1528, 1533, 1538, + 1543, 1548, 1556, 1561, 1566, 1574, 1579, 1580, 1581, 1582, + 1583 }; #endif @@ -918,42 +925,44 @@ static const char *const yytname[] = "T_Link", "T_Listen", "T_Logconfig", "T_Logfile", "T_Loopstats", "T_Lowpriotrap", "T_Manycastclient", "T_Manycastserver", "T_Mask", "T_Maxage", "T_Maxclock", "T_Maxdepth", "T_Maxdist", "T_Maxmem", - "T_Maxpoll", "T_Mem", "T_Memlock", "T_Minclock", "T_Mindepth", - "T_Mindist", "T_Minimum", "T_Minpoll", "T_Minsane", "T_Mode", "T_Mode7", - "T_Monitor", "T_Month", "T_Mru", "T_Multicastclient", "T_Nic", - "T_Nolink", "T_Nomodify", "T_Nomrulist", "T_None", "T_Nonvolatile", - "T_Nopeer", "T_Noquery", "T_Noselect", "T_Noserve", "T_Notrap", - "T_Notrust", "T_Ntp", "T_Ntpport", "T_NtpSignDsocket", "T_Orphan", - "T_Orphanwait", "T_Panic", "T_Peer", "T_Peerstats", "T_Phone", "T_Pid", - "T_Pidfile", "T_Pool", "T_Port", "T_Preempt", "T_Prefer", "T_Protostats", - "T_Pw", "T_Randfile", "T_Rawstats", "T_Refid", "T_Requestkey", "T_Reset", - "T_Restrict", "T_Revoke", "T_Rlimit", "T_Saveconfigdir", "T_Server", - "T_Setvar", "T_Source", "T_Stacksize", "T_Statistics", "T_Stats", - "T_Statsdir", "T_Step", "T_Stepout", "T_Stratum", "T_String", "T_Sys", - "T_Sysstats", "T_Tick", "T_Time1", "T_Time2", "T_Timer", "T_Timingstats", - "T_Tinker", "T_Tos", "T_Trap", "T_True", "T_Trustedkey", "T_Ttl", - "T_Type", "T_U_int", "T_Unconfig", "T_Unpeer", "T_Version", - "T_WanderThreshold", "T_Week", "T_Wildcard", "T_Xleave", "T_Year", - "T_Flag", "T_EOC", "T_Simulate", "T_Beep_Delay", "T_Sim_Duration", - "T_Server_Offset", "T_Duration", "T_Freq_Offset", "T_Wander", "T_Jitter", - "T_Prop_Delay", "T_Proc_Delay", "'='", "'('", "')'", "'{'", "'}'", - "$accept", "configuration", "command_list", "command", "server_command", - "client_type", "address", "ip_address", "address_fam", "option_list", - "option", "option_flag", "option_flag_keyword", "option_int", - "option_int_keyword", "option_str", "option_str_keyword", - "unpeer_command", "unpeer_keyword", "other_mode_command", - "authentication_command", "crypto_command_list", "crypto_command", - "crypto_str_keyword", "orphan_mode_command", "tos_option_list", - "tos_option", "tos_option_int_keyword", "tos_option_dbl_keyword", - "monitoring_command", "stats_list", "stat", "filegen_option_list", - "filegen_option", "link_nolink", "enable_disable", "filegen_type", - "access_control_command", "ac_flag_list", "access_control_flag", - "discard_option_list", "discard_option", "discard_option_keyword", - "mru_option_list", "mru_option", "mru_option_keyword", "fudge_command", - "fudge_factor_list", "fudge_factor", "fudge_factor_dbl_keyword", - "fudge_factor_bool_keyword", "rlimit_command", "rlimit_option_list", - "rlimit_option", "rlimit_option_keyword", "system_option_command", - "system_option_list", "system_option", "system_option_flag_keyword", + "T_Maxpoll", "T_Mdnstries", "T_Mem", "T_Memlock", "T_Minclock", + "T_Mindepth", "T_Mindist", "T_Minimum", "T_Minpoll", "T_Minsane", + "T_Mode", "T_Mode7", "T_Monitor", "T_Month", "T_Mru", + "T_Multicastclient", "T_Nic", "T_Nolink", "T_Nomodify", "T_Nomrulist", + "T_None", "T_Nonvolatile", "T_Nopeer", "T_Noquery", "T_Noselect", + "T_Noserve", "T_Notrap", "T_Notrust", "T_Ntp", "T_Ntpport", + "T_NtpSignDsocket", "T_Orphan", "T_Orphanwait", "T_Panic", "T_Peer", + "T_Peerstats", "T_Phone", "T_Pid", "T_Pidfile", "T_Pool", "T_Port", + "T_Preempt", "T_Prefer", "T_Protostats", "T_Pw", "T_Randfile", + "T_Rawstats", "T_Refid", "T_Requestkey", "T_Reset", "T_Restrict", + "T_Revoke", "T_Rlimit", "T_Saveconfigdir", "T_Server", "T_Setvar", + "T_Source", "T_Stacksize", "T_Statistics", "T_Stats", "T_Statsdir", + "T_Step", "T_Stepback", "T_Stepfwd", "T_Stepout", "T_Stratum", + "T_String", "T_Sys", "T_Sysstats", "T_Tick", "T_Time1", "T_Time2", + "T_Timer", "T_Timingstats", "T_Tinker", "T_Tos", "T_Trap", "T_True", + "T_Trustedkey", "T_Ttl", "T_Type", "T_U_int", "T_Unconfig", "T_Unpeer", + "T_Version", "T_WanderThreshold", "T_Week", "T_Wildcard", "T_Xleave", + "T_Year", "T_Flag", "T_EOC", "T_Simulate", "T_Beep_Delay", + "T_Sim_Duration", "T_Server_Offset", "T_Duration", "T_Freq_Offset", + "T_Wander", "T_Jitter", "T_Prop_Delay", "T_Proc_Delay", "'='", "'('", + "')'", "'{'", "'}'", "$accept", "configuration", "command_list", + "command", "server_command", "client_type", "address", "ip_address", + "address_fam", "option_list", "option", "option_flag", + "option_flag_keyword", "option_int", "option_int_keyword", "option_str", + "option_str_keyword", "unpeer_command", "unpeer_keyword", + "other_mode_command", "authentication_command", "crypto_command_list", + "crypto_command", "crypto_str_keyword", "orphan_mode_command", + "tos_option_list", "tos_option", "tos_option_int_keyword", + "tos_option_dbl_keyword", "monitoring_command", "stats_list", "stat", + "filegen_option_list", "filegen_option", "link_nolink", "enable_disable", + "filegen_type", "access_control_command", "ac_flag_list", + "access_control_flag", "discard_option_list", "discard_option", + "discard_option_keyword", "mru_option_list", "mru_option", + "mru_option_keyword", "fudge_command", "fudge_factor_list", + "fudge_factor", "fudge_factor_dbl_keyword", "fudge_factor_bool_keyword", + "rlimit_command", "rlimit_option_list", "rlimit_option", + "rlimit_option_keyword", "system_option_command", "system_option_list", + "system_option", "system_option_flag_keyword", "system_option_local_flag_keyword", "tinker_command", "tinker_option_list", "tinker_option", "tinker_option_keyword", "miscellaneous_command", "misc_cmd_dbl_keyword", "misc_cmd_str_keyword", @@ -994,15 +1003,15 @@ static const yytype_uint16 yytoknum[] = 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 61, - 40, 41, 123, 125 + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 61, 40, 41, 123, 125 }; # endif -#define YYPACT_NINF -178 +#define YYPACT_NINF -182 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-178))) + (!!((Yystate) == (-182))) #define YYTABLE_NINF -7 @@ -1013,48 +1022,48 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 26, -153, -30, -178, -178, -178, -28, -178, 166, 18, - -109, 166, -178, 200, -47, -178, -102, -178, -96, -93, - -178, -89, -178, -178, -47, 330, -47, -178, -178, -85, - -178, -76, -178, -178, 20, -2, 45, 22, -22, -178, - -178, -67, 200, -65, -178, 107, 520, -63, -53, 35, - -178, -178, -178, 46, 203, -94, -178, -47, -178, -47, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -21, -55, -54, -178, 4, -178, -178, -77, -178, -178, - -178, 158, -178, -178, -178, -178, -178, -178, -178, -178, - 166, -178, -178, -178, -178, -178, -178, 18, -178, 47, - 84, -178, 166, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, 49, -178, -33, 361, -178, - -178, -178, -89, -178, -178, -47, -178, -178, -178, -178, - -178, -178, -178, -178, 330, -178, 58, -47, -178, -178, - -31, -178, -178, -178, -178, -178, -178, -178, -178, -2, - -178, -178, 94, 98, -178, -178, 43, -178, -178, -178, - -178, -22, -178, 68, -57, -178, 200, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, 107, -178, -21, - -178, -178, -25, -178, -178, -178, -178, -178, -178, -178, - -178, 520, -178, 75, -21, -178, -178, 86, -53, -178, - -178, -178, 87, -178, -19, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, 3, -107, -178, -178, - -178, -178, -178, 88, -178, 7, -178, -178, -178, -178, - -5, 8, -178, -178, -178, -178, 23, 111, -178, -178, - 49, -178, -21, -25, -178, -178, -178, -178, -178, -178, - -178, -178, 482, -178, -178, 482, 482, -63, -178, -178, - 28, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -46, 144, -178, -178, -178, 416, -178, -178, -178, - -178, -178, -178, -178, -178, -127, 5, 10, -178, -178, - -178, -178, 40, -178, -178, 24, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, 482, 482, -178, 167, -63, 142, -178, 143, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -51, -178, - 57, 27, 34, -117, -178, 29, -178, -21, -178, -178, - -178, -178, -178, -178, -178, -178, -178, 482, -178, -178, - -178, -178, 32, -178, -178, -178, -47, -178, -178, -178, - 33, -178, -178, -178, 38, 52, -21, 39, -146, -178, - 59, -21, -178, -178, -178, 50, -44, -178, -178, -178, - -178, -178, 60, 63, 41, -178, 71, -178, -21, -178, - -178 + 18, -161, -18, -182, -182, -182, -10, -182, 189, 11, + -103, 189, -182, 7, -49, -182, -100, -182, -97, -90, + -182, -84, -182, -182, -49, 13, 365, -49, -182, -182, + -81, -182, -80, -182, -182, 20, 86, 104, 21, -33, + -182, -182, -73, 7, -72, -182, 51, 500, -71, -54, + 26, -182, -182, -182, 90, 205, -83, -182, -49, -182, + -49, -182, -182, -182, -182, -182, -182, -182, -182, -182, + -182, -8, -65, -51, -182, -9, -182, -182, -91, -182, + -182, -182, -15, -182, -182, -182, -182, -182, -182, -182, + -182, 189, -182, -182, -182, -182, -182, -182, 11, -182, + 46, 85, -182, 189, -182, -182, -182, -182, -182, -182, + -182, -182, -182, -182, -182, -182, 92, -182, -35, 366, + -182, -182, -182, -84, -182, -182, -49, -182, -182, -182, + -182, -182, -182, -182, -182, -182, 365, -182, 68, -49, + -182, -182, -23, -182, -182, -182, -182, -182, -182, -182, + -182, 86, -182, -182, 114, 121, -182, -182, 67, -182, + -182, -182, -182, -33, -182, 93, -28, -182, 7, -182, + -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, + -182, 51, -182, -8, -182, -182, -17, -182, -182, -182, + -182, -182, -182, -182, -182, 500, -182, 107, -8, -182, + -182, 112, -54, -182, -182, -182, 113, -182, 8, -182, + -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, + -2, -147, -182, -182, -182, -182, -182, 128, -182, 25, + -182, -182, -182, -182, 116, 37, -182, -182, -182, -182, + 38, 135, -182, -182, 92, -182, -8, -17, -182, -182, + -182, -182, -182, -182, -182, -182, 445, -182, -182, 445, + 445, -71, -182, -182, 40, -182, -182, -182, -182, -182, + -182, -182, -182, -182, -182, -52, 163, -182, -182, -182, + 261, -182, -182, -182, -182, -182, -182, -182, -182, -114, + 27, 14, -182, -182, -182, -182, 55, -182, -182, 0, + -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, + -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, + -182, -182, -182, -182, -182, 445, 445, -182, 185, -71, + 153, -182, 156, -182, -182, -182, -182, -182, -182, -182, + -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, + -182, -182, -53, -182, 61, 30, 43, -133, -182, 23, + -182, -8, -182, -182, -182, -182, -182, -182, -182, -182, + -182, 445, -182, -182, -182, -182, 32, -182, -182, -182, + -49, -182, -182, -182, 45, -182, -182, -182, 41, 50, + -8, 47, -157, -182, 56, -8, -182, -182, -182, 49, + 130, -182, -182, -182, -182, -182, 110, 59, 54, -182, + 70, -182, -8, -182, -182 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1062,80 +1071,80 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 0, 0, 24, 58, 227, 0, 70, 0, 0, - 237, 0, 220, 0, 0, 230, 0, 250, 0, 0, - 231, 0, 233, 25, 0, 0, 0, 251, 228, 0, - 23, 0, 232, 22, 0, 0, 0, 0, 0, 234, - 21, 0, 0, 0, 229, 0, 0, 0, 0, 0, - 56, 57, 286, 0, 2, 0, 7, 0, 8, 0, - 9, 10, 13, 11, 12, 14, 15, 16, 17, 18, - 0, 0, 0, 214, 0, 215, 19, 0, 5, 61, - 62, 63, 194, 195, 196, 197, 200, 198, 199, 201, - 189, 191, 192, 193, 153, 154, 155, 125, 151, 0, - 235, 221, 188, 100, 101, 102, 103, 107, 104, 105, - 106, 108, 29, 30, 28, 0, 26, 0, 6, 64, - 65, 247, 222, 246, 279, 59, 159, 160, 161, 162, - 163, 164, 165, 166, 126, 157, 0, 60, 69, 277, - 223, 66, 262, 263, 264, 265, 266, 267, 268, 259, - 261, 133, 29, 30, 133, 133, 26, 67, 187, 185, - 186, 181, 183, 0, 0, 224, 95, 99, 96, 206, - 207, 208, 209, 210, 211, 212, 213, 202, 204, 0, - 90, 85, 0, 86, 94, 92, 93, 91, 89, 87, - 88, 79, 81, 0, 0, 241, 273, 0, 68, 272, - 274, 270, 226, 1, 0, 4, 31, 55, 284, 283, - 216, 217, 218, 258, 257, 256, 0, 0, 78, 74, - 75, 76, 77, 0, 71, 0, 190, 150, 152, 236, - 97, 0, 177, 178, 179, 180, 0, 0, 175, 176, - 167, 169, 0, 0, 27, 219, 245, 278, 156, 158, - 276, 260, 129, 133, 133, 132, 127, 0, 182, 184, - 0, 98, 203, 205, 282, 280, 281, 84, 80, 82, - 83, 225, 0, 271, 269, 3, 20, 252, 253, 254, - 249, 255, 248, 290, 291, 0, 0, 0, 73, 72, - 117, 116, 0, 114, 115, 0, 109, 112, 113, 173, - 174, 172, 168, 170, 171, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 134, 130, 131, 133, 240, 0, 0, 242, 0, 37, - 38, 39, 54, 47, 49, 48, 51, 40, 41, 42, - 43, 50, 52, 44, 32, 33, 36, 34, 0, 35, - 0, 0, 0, 0, 293, 0, 288, 0, 110, 124, - 120, 122, 118, 119, 121, 123, 111, 128, 239, 238, - 244, 243, 0, 45, 46, 53, 0, 287, 285, 292, - 0, 289, 275, 296, 0, 0, 0, 0, 0, 298, - 0, 0, 294, 297, 295, 0, 0, 303, 304, 305, - 306, 307, 0, 0, 0, 299, 0, 301, 0, 300, - 302 + 0, 0, 0, 24, 58, 230, 0, 71, 0, 0, + 240, 0, 223, 0, 0, 233, 0, 253, 0, 0, + 234, 0, 236, 25, 0, 0, 0, 0, 254, 231, + 0, 23, 0, 235, 22, 0, 0, 0, 0, 0, + 237, 21, 0, 0, 0, 232, 0, 0, 0, 0, + 0, 56, 57, 289, 0, 2, 0, 7, 0, 8, + 0, 9, 10, 13, 11, 12, 14, 15, 16, 17, + 18, 0, 0, 0, 217, 0, 218, 19, 0, 5, + 62, 63, 64, 195, 196, 197, 198, 201, 199, 200, + 202, 190, 192, 193, 194, 154, 155, 156, 126, 152, + 0, 238, 224, 189, 101, 102, 103, 104, 108, 105, + 106, 107, 109, 29, 30, 28, 0, 26, 0, 6, + 65, 66, 250, 225, 249, 282, 59, 61, 160, 161, + 162, 163, 164, 165, 166, 167, 127, 158, 0, 60, + 70, 280, 226, 67, 265, 266, 267, 268, 269, 270, + 271, 262, 264, 134, 29, 30, 134, 134, 26, 68, + 188, 186, 187, 182, 184, 0, 0, 227, 96, 100, + 97, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 203, 205, 0, 91, 86, 0, 87, 95, 93, + 94, 92, 90, 88, 89, 80, 82, 0, 0, 244, + 276, 0, 69, 275, 277, 273, 229, 1, 0, 4, + 31, 55, 287, 286, 219, 220, 221, 261, 260, 259, + 0, 0, 79, 75, 76, 77, 78, 0, 72, 0, + 191, 151, 153, 239, 98, 0, 178, 179, 180, 181, + 0, 0, 176, 177, 168, 170, 0, 0, 27, 222, + 248, 281, 157, 159, 279, 263, 130, 134, 134, 133, + 128, 0, 183, 185, 0, 99, 204, 206, 285, 283, + 284, 85, 81, 83, 84, 228, 0, 274, 272, 3, + 20, 255, 256, 257, 252, 258, 251, 293, 294, 0, + 0, 0, 74, 73, 118, 117, 0, 115, 116, 0, + 110, 113, 114, 174, 175, 173, 169, 171, 172, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 135, 131, 132, 134, 243, 0, + 0, 245, 0, 37, 38, 39, 54, 47, 49, 48, + 51, 40, 41, 42, 43, 50, 52, 44, 32, 33, + 36, 34, 0, 35, 0, 0, 0, 0, 296, 0, + 291, 0, 111, 125, 121, 123, 119, 120, 122, 124, + 112, 129, 242, 241, 247, 246, 0, 45, 46, 53, + 0, 290, 288, 295, 0, 292, 278, 299, 0, 0, + 0, 0, 0, 301, 0, 0, 297, 300, 298, 0, + 0, 306, 307, 308, 309, 310, 0, 0, 0, 302, + 0, 304, 0, 303, 305 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -178, -178, -178, -40, -178, -178, -14, -35, -178, -178, - -178, -178, -178, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, -178, -178, 64, -178, -178, -178, - -178, -32, -178, -178, -178, -178, -178, -178, -151, -178, - -178, 141, -178, -178, 116, -178, -178, -178, 11, -178, - -178, -178, -178, 93, -178, -178, 248, -69, -178, -178, - -178, -178, 83, -178, -178, -178, -178, -178, -178, -178, - -178, -178, -178, -178, 139, -178, -178, -178, -178, -178, - -178, 119, -178, -178, 67, -178, -178, 243, 36, -177, - -178, -178, -178, -15, -178, -178, -82, -178, -178, -178, - -116, -178, -126, -178 + -182, -182, -182, -45, -182, -182, -14, -36, -182, -182, + -182, -182, -182, -182, -182, -182, -182, -182, -182, -182, + -182, -182, -182, -182, -182, -182, 60, -182, -182, -182, + -182, -38, -182, -182, -182, -182, -182, -182, -142, -182, + -182, 134, -182, -182, 120, -182, -182, -182, 5, -182, + -182, -182, -182, 96, -182, -182, 250, -42, -182, -182, + -182, -182, 81, -182, -182, -182, -182, -182, -182, -182, + -182, -182, -182, -182, 140, -182, -182, -182, -182, -182, + -182, 117, -182, -182, 63, -182, -182, 240, 22, -181, + -182, -182, -182, -16, -182, -182, -86, -182, -182, -182, + -120, -182, -132, -182 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 53, 54, 55, 56, 57, 124, 116, 117, 276, - 344, 345, 346, 347, 348, 349, 350, 58, 59, 60, - 61, 81, 224, 225, 62, 191, 192, 193, 194, 63, - 166, 111, 230, 296, 297, 298, 366, 64, 252, 320, - 97, 98, 99, 134, 135, 136, 65, 240, 241, 242, - 243, 66, 161, 162, 163, 67, 90, 91, 92, 93, - 68, 177, 178, 179, 69, 70, 71, 72, 101, 165, - 369, 271, 327, 122, 123, 73, 74, 282, 216, 75, - 149, 150, 202, 198, 199, 200, 140, 125, 267, 210, - 76, 77, 285, 286, 287, 353, 354, 385, 355, 388, - 389, 402, 403, 404 + -1, 54, 55, 56, 57, 58, 125, 117, 118, 280, + 348, 349, 350, 351, 352, 353, 354, 59, 60, 61, + 62, 82, 228, 229, 63, 195, 196, 197, 198, 64, + 168, 112, 234, 300, 301, 302, 370, 65, 256, 324, + 98, 99, 100, 136, 137, 138, 66, 244, 245, 246, + 247, 67, 163, 164, 165, 68, 91, 92, 93, 94, + 69, 181, 182, 183, 70, 71, 72, 73, 102, 167, + 373, 275, 331, 123, 124, 74, 75, 286, 220, 76, + 151, 152, 206, 202, 203, 204, 142, 126, 271, 214, + 77, 78, 289, 290, 291, 357, 358, 389, 359, 392, + 393, 406, 407, 408 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1143,142 +1152,136 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 115, 156, 263, 255, 256, 142, 143, 196, 277, 373, - 167, 208, 195, 264, 204, 325, 351, 270, 112, 158, - 113, 226, 155, 144, 290, 78, 351, 1, 359, 94, - 79, 291, 80, 226, 292, 265, 2, 387, 213, 209, - 3, 4, 5, 206, 100, 207, 203, 392, 6, 7, - 360, 118, 231, 283, 284, 8, 9, 119, 214, 10, - 120, 145, 11, 12, 121, 303, 13, 278, 138, 279, - 159, 293, 151, 283, 284, 14, 378, 139, 245, 15, - 141, 215, 157, 326, 205, 16, 164, 17, 168, 146, - 114, 232, 233, 234, 235, 201, 18, 19, 211, 212, - 20, 294, 321, 322, 21, 22, 114, 228, 23, 24, - 152, 247, 153, 169, 95, 217, 229, 374, 249, 96, - 244, 253, 250, 247, 160, 254, 361, 257, 259, 25, - 26, 27, 260, 362, 261, 269, 28, 197, 170, 266, - 397, 398, 399, 400, 401, 29, 272, 274, 288, 30, - 363, 31, 147, 32, 33, 171, 280, 148, 172, 275, - 289, 299, 295, 34, 35, 36, 37, 38, 39, 40, - 41, 301, 367, 42, 82, 43, 300, 281, 83, 328, - 381, 324, 44, 356, 84, 236, 218, 45, 46, 47, - 154, 48, 49, 358, 368, 50, 51, 364, 114, 357, - 365, 237, 371, 372, -6, 52, 238, 239, 219, 390, - 375, 220, 377, 2, 395, 384, 376, 3, 4, 5, - 103, 380, 323, 382, 104, 6, 7, 386, 391, 173, - 408, 410, 8, 9, 85, 387, 10, 394, 227, 11, - 12, 407, 396, 13, 397, 398, 399, 400, 401, 409, - 248, 302, 14, 405, 258, 268, 15, 174, 175, 102, - 262, 246, 16, 176, 17, 273, 86, 87, 251, 137, - 352, 379, 393, 18, 19, 0, 406, 20, 0, 304, - 105, 21, 22, 88, 0, 23, 24, 0, 0, 0, - 370, 221, 222, 0, 0, 0, 0, 0, 223, 0, - 0, 0, 0, 0, 0, 0, 25, 26, 27, 0, - 0, 0, 0, 28, 89, 0, 0, 0, 0, 0, - 0, 0, 29, 0, 106, 0, 30, 0, 31, 0, - 32, 33, 107, 0, 0, 108, 0, 0, 0, 0, - 34, 35, 36, 37, 38, 39, 40, 41, 0, 0, - 42, 0, 43, 0, 0, 109, 0, 0, 0, 44, - 110, 0, 383, 0, 45, 46, 47, 0, 48, 49, - 0, 2, 50, 51, 0, 3, 4, 5, 0, 0, - 0, -6, 52, 6, 7, 126, 127, 128, 129, 0, - 8, 9, 0, 0, 10, 0, 0, 11, 12, 0, - 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, - 14, 0, 0, 0, 15, 130, 0, 131, 0, 132, - 16, 0, 17, 0, 133, 329, 0, 0, 0, 0, - 0, 18, 19, 330, 0, 20, 0, 0, 0, 21, - 22, 0, 0, 23, 24, 0, 0, 0, 0, 0, + 116, 158, 267, 281, 363, 169, 200, 377, 160, 329, + 208, 355, 199, 222, 259, 260, 113, 274, 114, 1, + 79, 268, 95, 157, 212, 217, 364, 104, 2, 391, + 355, 105, 3, 4, 5, 223, 287, 288, 224, 396, + 6, 7, 80, 269, 210, 218, 211, 8, 9, 230, + 81, 10, 213, 101, 11, 12, 119, 171, 13, 120, + 161, 230, 282, 382, 283, 307, 121, 14, 219, 287, + 288, 15, 122, 127, 249, 140, 141, 16, 330, 17, + 143, 159, 172, 166, 170, 115, 205, 106, 18, 19, + 207, 215, 20, 144, 145, 235, 21, 22, 209, 173, + 23, 24, 174, 365, 221, 216, 232, 115, 96, 25, + 366, 146, 251, 97, 162, 325, 326, 233, 378, 225, + 226, 248, 26, 27, 28, 251, 227, 367, 253, 29, + 265, 153, 107, 254, 236, 237, 238, 239, 30, 201, + 108, 257, 31, 109, 32, 294, 33, 34, 258, 147, + 270, 261, 295, 263, 284, 296, 35, 36, 37, 38, + 39, 40, 41, 42, 264, 110, 43, 273, 44, 154, + 111, 155, 276, 278, 175, 285, 368, 45, 148, 369, + 385, 293, 46, 47, 48, 371, 49, 50, 292, 279, + 51, 52, 297, 303, 304, 305, 328, 83, 332, -6, + 53, 84, 176, 177, 178, 179, 361, 85, 360, 394, + 180, 362, 372, 375, 399, 2, 376, 379, 384, 3, + 4, 5, 380, 298, 381, 327, 386, 6, 7, 240, + 388, 414, 231, 390, 8, 9, 391, 398, 10, 395, + 411, 11, 12, 149, 400, 13, 412, 241, 150, 306, + 156, 413, 242, 243, 14, 272, 252, 86, 15, 262, + 115, 103, 266, 250, 16, 277, 17, 139, 255, 308, + 333, 383, 397, 356, 410, 18, 19, 0, 334, 20, + 0, 0, 0, 21, 22, 0, 299, 23, 24, 0, + 87, 88, 0, 374, 0, 0, 25, 401, 402, 403, + 404, 405, 0, 0, 0, 0, 409, 89, 0, 26, + 27, 28, 0, 335, 336, 0, 29, 401, 402, 403, + 404, 405, 0, 0, 0, 30, 0, 0, 0, 31, + 337, 32, 0, 33, 34, 0, 0, 0, 90, 0, + 0, 0, 0, 35, 36, 37, 38, 39, 40, 41, + 42, 338, 0, 43, 0, 44, 0, 0, 0, 339, + 0, 340, 0, 0, 45, 0, 387, 0, 0, 46, + 47, 48, 0, 49, 50, 341, 2, 51, 52, 0, + 3, 4, 5, 0, 0, 0, -6, 53, 6, 7, + 0, 0, 342, 343, 0, 8, 9, 0, 0, 10, + 0, 0, 11, 12, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 14, 0, 0, 0, 15, + 128, 129, 130, 131, 0, 16, 0, 17, 344, 0, + 345, 0, 0, 0, 0, 346, 18, 19, 0, 347, + 20, 0, 0, 0, 21, 22, 0, 0, 23, 24, + 132, 0, 133, 0, 134, 0, 0, 25, 0, 0, + 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 27, 28, 0, 0, 0, 0, 29, 0, 0, + 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 31, 309, 32, 0, 33, 34, 0, 0, 0, 310, + 0, 0, 0, 0, 35, 36, 37, 38, 39, 40, + 41, 42, 0, 184, 43, 0, 44, 311, 312, 185, + 313, 186, 0, 0, 0, 45, 314, 0, 0, 0, + 46, 47, 48, 0, 49, 50, 0, 0, 51, 52, + 0, 0, 0, 0, 0, 0, 0, 187, 53, 0, + 0, 0, 0, 315, 316, 0, 0, 317, 318, 0, + 319, 320, 321, 0, 322, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 26, 27, 0, 331, 332, - 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, - 29, 0, 0, 0, 30, 333, 31, 0, 32, 33, - 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, - 36, 37, 38, 39, 40, 41, 334, 0, 42, 0, - 43, 0, 0, 335, 0, 336, 0, 44, 0, 0, - 0, 0, 45, 46, 47, 0, 48, 49, 305, 337, - 50, 51, 0, 180, 0, 0, 306, 0, 0, 181, - 52, 182, 0, 0, 0, 0, 338, 339, 0, 0, - 0, 0, 0, 0, 307, 308, 0, 309, 0, 0, - 0, 0, 0, 310, 0, 0, 0, 183, 0, 0, + 0, 0, 0, 0, 0, 0, 188, 0, 189, 0, + 0, 0, 0, 0, 190, 0, 191, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 340, 0, 341, 0, 0, 0, 0, 342, 0, 311, - 312, 343, 0, 313, 314, 0, 315, 316, 317, 0, - 318, 0, 0, 0, 0, 0, 184, 0, 185, 0, - 0, 0, 0, 186, 0, 187, 0, 0, 188, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 319 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 323, + 0, 193, 194 }; static const yytype_int16 yycheck[] = { - 14, 36, 179, 154, 155, 7, 8, 60, 5, 60, - 42, 32, 47, 38, 54, 61, 143, 194, 65, 41, - 67, 90, 36, 25, 29, 178, 143, 1, 4, 11, - 60, 36, 60, 102, 39, 60, 10, 183, 34, 60, - 14, 15, 16, 57, 153, 59, 0, 193, 22, 23, - 26, 153, 3, 180, 181, 29, 30, 153, 54, 33, - 153, 63, 36, 37, 153, 242, 40, 64, 153, 66, - 92, 76, 27, 180, 181, 49, 193, 153, 118, 53, - 60, 77, 60, 129, 178, 59, 153, 61, 153, 91, - 153, 42, 43, 44, 45, 60, 70, 71, 153, 153, - 74, 106, 253, 254, 78, 79, 153, 60, 82, 83, - 65, 125, 67, 6, 96, 192, 32, 168, 60, 101, - 153, 27, 153, 137, 146, 27, 102, 84, 60, 103, - 104, 105, 189, 109, 166, 60, 110, 190, 31, 164, - 184, 185, 186, 187, 188, 119, 60, 60, 60, 123, - 126, 125, 154, 127, 128, 48, 153, 159, 51, 178, - 153, 153, 167, 137, 138, 139, 140, 141, 142, 143, - 144, 60, 323, 147, 8, 149, 153, 174, 12, 35, - 357, 153, 156, 178, 18, 136, 28, 161, 162, 163, - 145, 165, 166, 153, 27, 169, 170, 173, 153, 189, - 176, 152, 60, 60, 178, 179, 157, 158, 50, 386, - 153, 53, 178, 10, 391, 182, 189, 14, 15, 16, - 20, 192, 257, 191, 24, 22, 23, 189, 189, 122, - 189, 408, 29, 30, 68, 183, 33, 178, 97, 36, - 37, 178, 192, 40, 184, 185, 186, 187, 188, 178, - 134, 240, 49, 193, 161, 191, 53, 150, 151, 11, - 177, 122, 59, 156, 61, 198, 100, 101, 149, 26, - 285, 353, 388, 70, 71, -1, 402, 74, -1, 243, - 80, 78, 79, 117, -1, 82, 83, -1, -1, -1, - 325, 133, 134, -1, -1, -1, -1, -1, 140, -1, - -1, -1, -1, -1, -1, -1, 103, 104, 105, -1, - -1, -1, -1, 110, 148, -1, -1, -1, -1, -1, - -1, -1, 119, -1, 124, -1, 123, -1, 125, -1, - 127, 128, 132, -1, -1, 135, -1, -1, -1, -1, - 137, 138, 139, 140, 141, 142, 143, 144, -1, -1, - 147, -1, 149, -1, -1, 155, -1, -1, -1, 156, - 160, -1, 376, -1, 161, 162, 163, -1, 165, 166, - -1, 10, 169, 170, -1, 14, 15, 16, -1, -1, - -1, 178, 179, 22, 23, 55, 56, 57, 58, -1, - 29, 30, -1, -1, 33, -1, -1, 36, 37, -1, - -1, 40, -1, -1, -1, -1, -1, -1, -1, -1, - 49, -1, -1, -1, 53, 85, -1, 87, -1, 89, - 59, -1, 61, -1, 94, 9, -1, -1, -1, -1, - -1, 70, 71, 17, -1, 74, -1, -1, -1, 78, - 79, -1, -1, 82, 83, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 103, 104, 105, -1, 52, 53, - -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, - 119, -1, -1, -1, 123, 69, 125, -1, 127, 128, - -1, -1, -1, -1, -1, -1, -1, -1, 137, 138, - 139, 140, 141, 142, 143, 144, 90, -1, 147, -1, - 149, -1, -1, 97, -1, 99, -1, 156, -1, -1, - -1, -1, 161, 162, 163, -1, 165, 166, 46, 113, - 169, 170, -1, 13, -1, -1, 54, -1, -1, 19, - 179, 21, -1, -1, -1, -1, 130, 131, -1, -1, - -1, -1, -1, -1, 72, 73, -1, 75, -1, -1, - -1, -1, -1, 81, -1, -1, -1, 47, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 164, -1, 166, -1, -1, -1, -1, 171, -1, 107, - 108, 175, -1, 111, 112, -1, 114, 115, 116, -1, - 118, -1, -1, -1, -1, -1, 86, -1, 88, -1, - -1, -1, -1, 93, -1, 95, -1, -1, 98, -1, + 14, 37, 183, 5, 4, 43, 60, 60, 41, 61, + 55, 144, 48, 28, 156, 157, 65, 198, 67, 1, + 181, 38, 11, 37, 32, 34, 26, 20, 10, 186, + 144, 24, 14, 15, 16, 50, 183, 184, 53, 196, + 22, 23, 60, 60, 58, 54, 60, 29, 30, 91, + 60, 33, 60, 156, 36, 37, 156, 6, 40, 156, + 93, 103, 64, 196, 66, 246, 156, 49, 77, 183, + 184, 53, 156, 60, 119, 156, 156, 59, 130, 61, + 60, 60, 31, 156, 156, 156, 60, 80, 70, 71, + 0, 156, 74, 7, 8, 3, 78, 79, 181, 48, + 82, 83, 51, 103, 195, 156, 60, 156, 97, 91, + 110, 25, 126, 102, 147, 257, 258, 32, 171, 134, + 135, 156, 104, 105, 106, 139, 141, 127, 60, 111, + 168, 27, 125, 156, 42, 43, 44, 45, 120, 193, + 133, 27, 124, 136, 126, 29, 128, 129, 27, 63, + 167, 84, 36, 60, 156, 39, 138, 139, 140, 141, + 142, 143, 144, 145, 192, 158, 148, 60, 150, 65, + 163, 67, 60, 60, 123, 177, 176, 159, 92, 179, + 361, 156, 164, 165, 166, 327, 168, 169, 60, 181, + 172, 173, 76, 156, 156, 60, 156, 8, 35, 181, + 182, 12, 151, 152, 153, 154, 192, 18, 181, 390, + 159, 156, 27, 60, 395, 10, 60, 156, 195, 14, + 15, 16, 192, 107, 181, 261, 194, 22, 23, 137, + 185, 412, 98, 192, 29, 30, 186, 181, 33, 192, + 181, 36, 37, 157, 195, 40, 192, 155, 162, 244, + 146, 181, 160, 161, 49, 195, 136, 68, 53, 163, + 156, 11, 181, 123, 59, 202, 61, 27, 151, 247, + 9, 357, 392, 289, 406, 70, 71, -1, 17, 74, + -1, -1, -1, 78, 79, -1, 170, 82, 83, -1, + 101, 102, -1, 329, -1, -1, 91, 187, 188, 189, + 190, 191, -1, -1, -1, -1, 196, 118, -1, 104, + 105, 106, -1, 52, 53, -1, 111, 187, 188, 189, + 190, 191, -1, -1, -1, 120, -1, -1, -1, 124, + 69, 126, -1, 128, 129, -1, -1, -1, 149, -1, + -1, -1, -1, 138, 139, 140, 141, 142, 143, 144, + 145, 90, -1, 148, -1, 150, -1, -1, -1, 98, + -1, 100, -1, -1, 159, -1, 380, -1, -1, 164, + 165, 166, -1, 168, 169, 114, 10, 172, 173, -1, + 14, 15, 16, -1, -1, -1, 181, 182, 22, 23, + -1, -1, 131, 132, -1, 29, 30, -1, -1, 33, + -1, -1, 36, 37, -1, -1, 40, -1, -1, -1, + -1, -1, -1, -1, -1, 49, -1, -1, -1, 53, + 55, 56, 57, 58, -1, 59, -1, 61, 167, -1, + 169, -1, -1, -1, -1, 174, 70, 71, -1, 178, + 74, -1, -1, -1, 78, 79, -1, -1, 82, 83, + 85, -1, 87, -1, 89, -1, -1, 91, -1, -1, + 95, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 104, 105, 106, -1, -1, -1, -1, 111, -1, -1, + -1, -1, -1, -1, -1, -1, 120, -1, -1, -1, + 124, 46, 126, -1, 128, 129, -1, -1, -1, 54, + -1, -1, -1, -1, 138, 139, 140, 141, 142, 143, + 144, 145, -1, 13, 148, -1, 150, 72, 73, 19, + 75, 21, -1, -1, -1, 159, 81, -1, -1, -1, + 164, 165, 166, -1, 168, 169, -1, -1, 172, 173, + -1, -1, -1, -1, -1, -1, -1, 47, 182, -1, + -1, -1, -1, 108, 109, -1, -1, 112, 113, -1, + 115, 116, 117, -1, 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 86, -1, 88, -1, + -1, -1, -1, -1, 94, -1, 96, -1, -1, 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 120, 121, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 171 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 174, + -1, 121, 122 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1287,82 +1290,83 @@ static const yytype_uint16 yystos[] = { 0, 1, 10, 14, 15, 16, 22, 23, 29, 30, 33, 36, 37, 40, 49, 53, 59, 61, 70, 71, - 74, 78, 79, 82, 83, 103, 104, 105, 110, 119, - 123, 125, 127, 128, 137, 138, 139, 140, 141, 142, - 143, 144, 147, 149, 156, 161, 162, 163, 165, 166, - 169, 170, 179, 195, 196, 197, 198, 199, 211, 212, - 213, 214, 218, 223, 231, 240, 245, 249, 254, 258, - 259, 260, 261, 269, 270, 273, 284, 285, 178, 60, - 60, 215, 8, 12, 18, 68, 100, 101, 117, 148, - 250, 251, 252, 253, 11, 96, 101, 234, 235, 236, - 153, 262, 250, 20, 24, 80, 124, 132, 135, 155, - 160, 225, 65, 67, 153, 200, 201, 202, 153, 153, - 153, 153, 267, 268, 200, 281, 55, 56, 57, 58, - 85, 87, 89, 94, 237, 238, 239, 281, 153, 153, - 280, 60, 7, 8, 25, 63, 91, 154, 159, 274, - 275, 27, 65, 67, 145, 200, 201, 60, 41, 92, - 146, 246, 247, 248, 153, 263, 224, 225, 153, 6, - 31, 48, 51, 122, 150, 151, 156, 255, 256, 257, - 13, 19, 21, 47, 86, 88, 93, 95, 98, 120, - 121, 219, 220, 221, 222, 201, 60, 190, 277, 278, - 279, 60, 276, 0, 197, 178, 200, 200, 32, 60, - 283, 153, 153, 34, 54, 77, 272, 192, 28, 50, - 53, 133, 134, 140, 216, 217, 251, 235, 60, 32, - 226, 3, 42, 43, 44, 45, 136, 152, 157, 158, - 241, 242, 243, 244, 153, 197, 268, 200, 238, 60, - 153, 275, 232, 27, 27, 232, 232, 84, 247, 60, - 189, 225, 256, 283, 38, 60, 164, 282, 220, 60, - 283, 265, 60, 278, 60, 178, 203, 5, 64, 66, - 153, 174, 271, 180, 181, 286, 287, 288, 60, 153, - 29, 36, 39, 76, 106, 167, 227, 228, 229, 153, - 153, 60, 242, 283, 282, 46, 54, 72, 73, 75, - 81, 107, 108, 111, 112, 114, 115, 116, 118, 171, - 233, 232, 232, 201, 153, 61, 129, 266, 35, 9, - 17, 52, 53, 69, 90, 97, 99, 113, 130, 131, - 164, 166, 171, 175, 204, 205, 206, 207, 208, 209, - 210, 143, 287, 289, 290, 292, 178, 189, 153, 4, - 26, 102, 109, 126, 173, 176, 230, 232, 27, 264, - 201, 60, 60, 60, 168, 153, 189, 178, 193, 290, - 192, 283, 191, 200, 182, 291, 189, 183, 293, 294, - 283, 189, 193, 294, 178, 283, 192, 184, 185, 186, - 187, 188, 295, 296, 297, 193, 296, 178, 189, 178, - 283 + 74, 78, 79, 82, 83, 91, 104, 105, 106, 111, + 120, 124, 126, 128, 129, 138, 139, 140, 141, 142, + 143, 144, 145, 148, 150, 159, 164, 165, 166, 168, + 169, 172, 173, 182, 198, 199, 200, 201, 202, 214, + 215, 216, 217, 221, 226, 234, 243, 248, 252, 257, + 261, 262, 263, 264, 272, 273, 276, 287, 288, 181, + 60, 60, 218, 8, 12, 18, 68, 101, 102, 118, + 149, 253, 254, 255, 256, 11, 97, 102, 237, 238, + 239, 156, 265, 253, 20, 24, 80, 125, 133, 136, + 158, 163, 228, 65, 67, 156, 203, 204, 205, 156, + 156, 156, 156, 270, 271, 203, 284, 60, 55, 56, + 57, 58, 85, 87, 89, 95, 240, 241, 242, 284, + 156, 156, 283, 60, 7, 8, 25, 63, 92, 157, + 162, 277, 278, 27, 65, 67, 146, 203, 204, 60, + 41, 93, 147, 249, 250, 251, 156, 266, 227, 228, + 156, 6, 31, 48, 51, 123, 151, 152, 153, 154, + 159, 258, 259, 260, 13, 19, 21, 47, 86, 88, + 94, 96, 99, 121, 122, 222, 223, 224, 225, 204, + 60, 193, 280, 281, 282, 60, 279, 0, 200, 181, + 203, 203, 32, 60, 286, 156, 156, 34, 54, 77, + 275, 195, 28, 50, 53, 134, 135, 141, 219, 220, + 254, 238, 60, 32, 229, 3, 42, 43, 44, 45, + 137, 155, 160, 161, 244, 245, 246, 247, 156, 200, + 271, 203, 241, 60, 156, 278, 235, 27, 27, 235, + 235, 84, 250, 60, 192, 228, 259, 286, 38, 60, + 167, 285, 223, 60, 286, 268, 60, 281, 60, 181, + 206, 5, 64, 66, 156, 177, 274, 183, 184, 289, + 290, 291, 60, 156, 29, 36, 39, 76, 107, 170, + 230, 231, 232, 156, 156, 60, 245, 286, 285, 46, + 54, 72, 73, 75, 81, 108, 109, 112, 113, 115, + 116, 117, 119, 174, 236, 235, 235, 204, 156, 61, + 130, 269, 35, 9, 17, 52, 53, 69, 90, 98, + 100, 114, 131, 132, 167, 169, 174, 178, 207, 208, + 209, 210, 211, 212, 213, 144, 290, 292, 293, 295, + 181, 192, 156, 4, 26, 103, 110, 127, 176, 179, + 233, 235, 27, 267, 204, 60, 60, 60, 171, 156, + 192, 181, 196, 293, 195, 286, 194, 203, 185, 294, + 192, 186, 296, 297, 286, 192, 196, 297, 181, 286, + 195, 187, 188, 189, 190, 191, 298, 299, 300, 196, + 299, 181, 192, 181, 286 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 194, 195, 196, 196, 196, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 198, 199, 199, 199, 199, 199, 200, 200, 201, 202, - 202, 203, 203, 204, 204, 204, 205, 206, 206, 206, - 206, 206, 206, 206, 206, 207, 207, 208, 208, 208, - 208, 208, 208, 209, 210, 211, 212, 212, 213, 213, - 213, 214, 214, 214, 214, 214, 214, 214, 214, 214, - 215, 215, 216, 216, 217, 217, 217, 217, 217, 218, - 219, 219, 220, 220, 220, 221, 221, 221, 221, 221, - 221, 222, 222, 222, 222, 223, 223, 223, 224, 224, - 225, 225, 225, 225, 225, 225, 225, 225, 226, 226, - 227, 227, 227, 227, 228, 228, 229, 229, 230, 230, - 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, - 231, 231, 231, 232, 232, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, - 234, 234, 235, 236, 236, 236, 237, 237, 238, 239, - 239, 239, 239, 239, 239, 239, 239, 240, 241, 241, - 242, 242, 242, 242, 242, 243, 243, 244, 244, 244, - 244, 245, 246, 246, 247, 248, 248, 248, 249, 249, - 250, 250, 251, 251, 252, 252, 252, 252, 252, 252, - 253, 253, 254, 255, 255, 256, 257, 257, 257, 257, - 257, 257, 257, 257, 258, 258, 258, 258, 258, 258, - 258, 258, 258, 258, 258, 258, 258, 259, 259, 259, - 260, 260, 260, 261, 261, 262, 262, 262, 263, 264, - 264, 265, 265, 266, 266, 267, 267, 268, 269, 269, - 270, 270, 271, 271, 271, 271, 272, 272, 272, 273, - 274, 274, 275, 275, 275, 275, 275, 275, 275, 276, - 276, 277, 277, 278, 278, 279, 280, 280, 281, 281, - 282, 282, 282, 283, 283, 284, 285, 286, 286, 287, - 288, 288, 289, 289, 290, 291, 292, 293, 293, 294, - 295, 295, 296, 297, 297, 297, 297, 297 + 0, 197, 198, 199, 199, 199, 200, 200, 200, 200, + 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, + 201, 202, 202, 202, 202, 202, 203, 203, 204, 205, + 205, 206, 206, 207, 207, 207, 208, 209, 209, 209, + 209, 209, 209, 209, 209, 210, 210, 211, 211, 211, + 211, 211, 211, 212, 213, 214, 215, 215, 216, 216, + 216, 216, 217, 217, 217, 217, 217, 217, 217, 217, + 217, 218, 218, 219, 219, 220, 220, 220, 220, 220, + 221, 222, 222, 223, 223, 223, 224, 224, 224, 224, + 224, 224, 225, 225, 225, 225, 226, 226, 226, 227, + 227, 228, 228, 228, 228, 228, 228, 228, 228, 229, + 229, 230, 230, 230, 230, 231, 231, 232, 232, 233, + 233, 233, 233, 233, 233, 233, 234, 234, 234, 234, + 234, 234, 234, 234, 235, 235, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 237, 237, 238, 239, 239, 239, 240, 240, 241, + 242, 242, 242, 242, 242, 242, 242, 242, 243, 244, + 244, 245, 245, 245, 245, 245, 246, 246, 247, 247, + 247, 247, 248, 249, 249, 250, 251, 251, 251, 252, + 252, 253, 253, 254, 254, 255, 255, 255, 255, 255, + 255, 256, 256, 257, 258, 258, 259, 260, 260, 260, + 260, 260, 260, 260, 260, 260, 260, 261, 261, 261, + 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, + 262, 262, 262, 263, 263, 263, 264, 264, 265, 265, + 265, 266, 267, 267, 268, 268, 269, 269, 270, 270, + 271, 272, 272, 273, 273, 274, 274, 274, 274, 275, + 275, 275, 276, 277, 277, 278, 278, 278, 278, 278, + 278, 278, 279, 279, 280, 280, 281, 281, 282, 283, + 283, 284, 284, 285, 285, 285, 286, 286, 287, 288, + 289, 289, 290, 291, 291, 292, 292, 293, 294, 295, + 296, 296, 297, 298, 298, 299, 300, 300, 300, 300, + 300 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -1375,30 +1379,31 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 0, 2, 2, 2, 1, 1, 1, 1, 1, 2, - 2, 1, 2, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 3, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 3, 5, 3, - 4, 4, 3, 0, 2, 1, 1, 1, 1, 1, + 2, 0, 2, 2, 2, 1, 1, 1, 1, 1, + 2, 2, 1, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 3, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 3, 5, + 3, 4, 4, 3, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 1, 2, 1, 1, 1, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 2, 1, - 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, - 1, 2, 2, 1, 2, 1, 1, 1, 2, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, - 1, 2, 2, 2, 2, 3, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 4, 1, - 0, 0, 2, 2, 2, 2, 1, 1, 3, 3, + 1, 2, 1, 2, 1, 1, 1, 2, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 2, + 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, + 1, 1, 2, 2, 1, 2, 1, 1, 1, 2, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 1, 2, 1, 1, 1, 5, 2, 1, 2, 1, - 1, 1, 1, 1, 1, 5, 1, 3, 2, 3, - 1, 1, 2, 1, 5, 4, 3, 2, 1, 6, - 3, 2, 3, 1, 1, 1, 1, 1 + 2, 2, 3, 1, 2, 2, 2, 2, 3, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 0, 4, 1, 0, 0, 2, 2, 2, 2, 1, + 1, 3, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 1, 2, 1, 1, 1, 5, 2, + 1, 2, 1, 1, 1, 1, 1, 1, 5, 1, + 3, 2, 3, 1, 1, 2, 1, 5, 4, 3, + 2, 1, 6, 3, 2, 3, 1, 1, 1, 1, + 1 }; @@ -2077,7 +2082,7 @@ yyreduce: switch (yyn) { case 5: -#line 370 "ntp_parser.y" /* yacc.c:1646 */ +#line 373 "ntp_parser.y" /* yacc.c:1646 */ { /* I will need to incorporate much more fine grained * error messages. The following should suffice for @@ -2089,85 +2094,85 @@ yyreduce: ip_file->err_line_no, ip_file->err_col_no); } -#line 2093 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2098 "ntp_parser.c" /* yacc.c:1646 */ break; case 20: -#line 405 "ntp_parser.y" /* yacc.c:1646 */ +#line 408 "ntp_parser.y" /* yacc.c:1646 */ { peer_node *my_node; my_node = create_peer_node((yyvsp[-2].Integer), (yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.peers, my_node); } -#line 2104 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2109 "ntp_parser.c" /* yacc.c:1646 */ break; case 27: -#line 424 "ntp_parser.y" /* yacc.c:1646 */ +#line 427 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); } -#line 2110 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2115 "ntp_parser.c" /* yacc.c:1646 */ break; case 28: -#line 429 "ntp_parser.y" /* yacc.c:1646 */ +#line 432 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); } -#line 2116 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2121 "ntp_parser.c" /* yacc.c:1646 */ break; case 29: -#line 434 "ntp_parser.y" /* yacc.c:1646 */ +#line 437 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = AF_INET; } -#line 2122 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2127 "ntp_parser.c" /* yacc.c:1646 */ break; case 30: -#line 436 "ntp_parser.y" /* yacc.c:1646 */ +#line 439 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = AF_INET6; } -#line 2128 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2133 "ntp_parser.c" /* yacc.c:1646 */ break; case 31: -#line 441 "ntp_parser.y" /* yacc.c:1646 */ +#line 444 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } -#line 2134 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2139 "ntp_parser.c" /* yacc.c:1646 */ break; case 32: -#line 443 "ntp_parser.y" /* yacc.c:1646 */ +#line 446 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2143 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2148 "ntp_parser.c" /* yacc.c:1646 */ break; case 36: -#line 457 "ntp_parser.y" /* yacc.c:1646 */ +#line 460 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } -#line 2149 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2154 "ntp_parser.c" /* yacc.c:1646 */ break; case 45: -#line 473 "ntp_parser.y" /* yacc.c:1646 */ +#line 476 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2155 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2160 "ntp_parser.c" /* yacc.c:1646 */ break; case 46: -#line 475 "ntp_parser.y" /* yacc.c:1646 */ +#line 478 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2161 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2166 "ntp_parser.c" /* yacc.c:1646 */ break; case 53: -#line 489 "ntp_parser.y" /* yacc.c:1646 */ +#line 492 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } -#line 2167 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2172 "ntp_parser.c" /* yacc.c:1646 */ break; case 55: -#line 503 "ntp_parser.y" /* yacc.c:1646 */ +#line 506 "ntp_parser.y" /* yacc.c:1646 */ { unpeer_node *my_node; @@ -2175,79 +2180,85 @@ yyreduce: if (my_node) APPEND_G_FIFO(cfgt.unpeers, my_node); } -#line 2179 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2184 "ntp_parser.c" /* yacc.c:1646 */ break; case 58: -#line 524 "ntp_parser.y" /* yacc.c:1646 */ +#line 527 "ntp_parser.y" /* yacc.c:1646 */ { cfgt.broadcastclient = 1; } -#line 2185 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2190 "ntp_parser.c" /* yacc.c:1646 */ break; case 59: -#line 526 "ntp_parser.y" /* yacc.c:1646 */ +#line 529 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); } -#line 2191 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2196 "ntp_parser.c" /* yacc.c:1646 */ break; case 60: -#line 528 "ntp_parser.y" /* yacc.c:1646 */ +#line 531 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); } -#line 2197 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2202 "ntp_parser.c" /* yacc.c:1646 */ break; case 61: -#line 539 "ntp_parser.y" /* yacc.c:1646 */ +#line 533 "ntp_parser.y" /* yacc.c:1646 */ + { cfgt.mdnstries = (yyvsp[0].Integer); } +#line 2208 "ntp_parser.c" /* yacc.c:1646 */ + break; + + case 62: +#line 544 "ntp_parser.y" /* yacc.c:1646 */ { attr_val *atrv; atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); APPEND_G_FIFO(cfgt.vars, atrv); } -#line 2208 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2219 "ntp_parser.c" /* yacc.c:1646 */ break; - case 62: -#line 546 "ntp_parser.y" /* yacc.c:1646 */ + case 63: +#line 551 "ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.control_key = (yyvsp[0].Integer); } -#line 2214 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2225 "ntp_parser.c" /* yacc.c:1646 */ break; - case 63: -#line 548 "ntp_parser.y" /* yacc.c:1646 */ + case 64: +#line 553 "ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.cryptosw++; CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo)); } -#line 2223 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2234 "ntp_parser.c" /* yacc.c:1646 */ break; - case 64: -#line 553 "ntp_parser.y" /* yacc.c:1646 */ + case 65: +#line 558 "ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.keys = (yyvsp[0].String); } -#line 2229 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2240 "ntp_parser.c" /* yacc.c:1646 */ break; - case 65: -#line 555 "ntp_parser.y" /* yacc.c:1646 */ + case 66: +#line 560 "ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.keysdir = (yyvsp[0].String); } -#line 2235 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2246 "ntp_parser.c" /* yacc.c:1646 */ break; - case 66: -#line 557 "ntp_parser.y" /* yacc.c:1646 */ + case 67: +#line 562 "ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.request_key = (yyvsp[0].Integer); } -#line 2241 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2252 "ntp_parser.c" /* yacc.c:1646 */ break; - case 67: -#line 559 "ntp_parser.y" /* yacc.c:1646 */ + case 68: +#line 564 "ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.revoke = (yyvsp[0].Integer); } -#line 2247 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2258 "ntp_parser.c" /* yacc.c:1646 */ break; - case 68: -#line 561 "ntp_parser.y" /* yacc.c:1646 */ + case 69: +#line 566 "ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.trusted_key_list = (yyvsp[0].Attr_val_fifo); @@ -2256,38 +2267,38 @@ yyreduce: // else // LINK_SLIST(cfgt.auth.trusted_key_list, $2, link); } -#line 2260 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2271 "ntp_parser.c" /* yacc.c:1646 */ break; - case 69: -#line 570 "ntp_parser.y" /* yacc.c:1646 */ + case 70: +#line 575 "ntp_parser.y" /* yacc.c:1646 */ { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); } -#line 2266 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2277 "ntp_parser.c" /* yacc.c:1646 */ break; - case 70: -#line 575 "ntp_parser.y" /* yacc.c:1646 */ + case 71: +#line 580 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } -#line 2272 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2283 "ntp_parser.c" /* yacc.c:1646 */ break; - case 71: -#line 577 "ntp_parser.y" /* yacc.c:1646 */ + case 72: +#line 582 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2281 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2292 "ntp_parser.c" /* yacc.c:1646 */ break; - case 72: -#line 585 "ntp_parser.y" /* yacc.c:1646 */ + case 73: +#line 590 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } -#line 2287 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2298 "ntp_parser.c" /* yacc.c:1646 */ break; - case 73: -#line 587 "ntp_parser.y" /* yacc.c:1646 */ + case 74: +#line 592 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = NULL; cfgt.auth.revoke = (yyvsp[0].Integer); @@ -2296,59 +2307,59 @@ yyreduce: "please use 'revoke %d' instead.", cfgt.auth.revoke, cfgt.auth.revoke); } -#line 2300 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2311 "ntp_parser.c" /* yacc.c:1646 */ break; - case 79: -#line 612 "ntp_parser.y" /* yacc.c:1646 */ + case 80: +#line 617 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); } -#line 2306 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2317 "ntp_parser.c" /* yacc.c:1646 */ break; - case 80: -#line 617 "ntp_parser.y" /* yacc.c:1646 */ + case 81: +#line 622 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2315 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2326 "ntp_parser.c" /* yacc.c:1646 */ break; - case 81: -#line 622 "ntp_parser.y" /* yacc.c:1646 */ + case 82: +#line 627 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2324 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2335 "ntp_parser.c" /* yacc.c:1646 */ break; - case 82: -#line 630 "ntp_parser.y" /* yacc.c:1646 */ + case 83: +#line 635 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); } -#line 2330 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2341 "ntp_parser.c" /* yacc.c:1646 */ break; - case 83: -#line 632 "ntp_parser.y" /* yacc.c:1646 */ + case 84: +#line 637 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } -#line 2336 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2347 "ntp_parser.c" /* yacc.c:1646 */ break; - case 84: -#line 634 "ntp_parser.y" /* yacc.c:1646 */ + case 85: +#line 639 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); } -#line 2342 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2353 "ntp_parser.c" /* yacc.c:1646 */ break; - case 95: -#line 660 "ntp_parser.y" /* yacc.c:1646 */ + case 96: +#line 665 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); } -#line 2348 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2359 "ntp_parser.c" /* yacc.c:1646 */ break; - case 96: -#line 662 "ntp_parser.y" /* yacc.c:1646 */ + case 97: +#line 667 "ntp_parser.y" /* yacc.c:1646 */ { if (input_from_file) { cfgt.stats_dir = (yyvsp[0].String); @@ -2357,55 +2368,55 @@ yyreduce: yyerror(ip_file, "statsdir remote configuration ignored"); } } -#line 2361 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2372 "ntp_parser.c" /* yacc.c:1646 */ break; - case 97: -#line 671 "ntp_parser.y" /* yacc.c:1646 */ + case 98: +#line 676 "ntp_parser.y" /* yacc.c:1646 */ { filegen_node *fgn; fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.filegen_opts, fgn); } -#line 2372 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2383 "ntp_parser.c" /* yacc.c:1646 */ break; - case 98: -#line 681 "ntp_parser.y" /* yacc.c:1646 */ + case 99: +#line 686 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = (yyvsp[-1].Int_fifo); APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } -#line 2381 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2392 "ntp_parser.c" /* yacc.c:1646 */ break; - case 99: -#line 686 "ntp_parser.y" /* yacc.c:1646 */ + case 100: +#line 691 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = NULL; APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } -#line 2390 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2401 "ntp_parser.c" /* yacc.c:1646 */ break; - case 108: -#line 705 "ntp_parser.y" /* yacc.c:1646 */ + case 109: +#line 710 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } -#line 2396 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2407 "ntp_parser.c" /* yacc.c:1646 */ break; - case 109: -#line 707 "ntp_parser.y" /* yacc.c:1646 */ + case 110: +#line 712 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2405 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2416 "ntp_parser.c" /* yacc.c:1646 */ break; - case 110: -#line 715 "ntp_parser.y" /* yacc.c:1646 */ + case 111: +#line 720 "ntp_parser.y" /* yacc.c:1646 */ { if (input_from_file) { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); @@ -2415,11 +2426,11 @@ yyreduce: yyerror(ip_file, "filegen file remote config ignored"); } } -#line 2419 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2430 "ntp_parser.c" /* yacc.c:1646 */ break; - case 111: -#line 725 "ntp_parser.y" /* yacc.c:1646 */ + case 112: +#line 730 "ntp_parser.y" /* yacc.c:1646 */ { if (input_from_file) { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); @@ -2428,11 +2439,11 @@ yyreduce: yyerror(ip_file, "filegen type remote config ignored"); } } -#line 2432 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2443 "ntp_parser.c" /* yacc.c:1646 */ break; - case 112: -#line 734 "ntp_parser.y" /* yacc.c:1646 */ + case 113: +#line 739 "ntp_parser.y" /* yacc.c:1646 */ { const char *err; @@ -2447,33 +2458,33 @@ yyreduce: yyerror(ip_file, err); } } -#line 2451 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2462 "ntp_parser.c" /* yacc.c:1646 */ break; - case 113: -#line 749 "ntp_parser.y" /* yacc.c:1646 */ + case 114: +#line 754 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } -#line 2457 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2468 "ntp_parser.c" /* yacc.c:1646 */ break; - case 125: -#line 779 "ntp_parser.y" /* yacc.c:1646 */ + case 126: +#line 784 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo)); } -#line 2465 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2476 "ntp_parser.c" /* yacc.c:1646 */ break; - case 126: -#line 783 "ntp_parser.y" /* yacc.c:1646 */ + case 127: +#line 788 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo)); } -#line 2473 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2484 "ntp_parser.c" /* yacc.c:1646 */ break; - case 127: -#line 787 "ntp_parser.y" /* yacc.c:1646 */ + case 128: +#line 792 "ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2481,11 +2492,11 @@ yyreduce: ip_file->line_no); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2485 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2496 "ntp_parser.c" /* yacc.c:1646 */ break; - case 128: -#line 795 "ntp_parser.y" /* yacc.c:1646 */ + case 129: +#line 800 "ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2493,11 +2504,11 @@ yyreduce: ip_file->line_no); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2497 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2508 "ntp_parser.c" /* yacc.c:1646 */ break; - case 129: -#line 803 "ntp_parser.y" /* yacc.c:1646 */ + case 130: +#line 808 "ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2505,11 +2516,11 @@ yyreduce: ip_file->line_no); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2509 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2520 "ntp_parser.c" /* yacc.c:1646 */ break; - case 130: -#line 811 "ntp_parser.y" /* yacc.c:1646 */ + case 131: +#line 816 "ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2524,11 +2535,11 @@ yyreduce: ip_file->line_no); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2528 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2539 "ntp_parser.c" /* yacc.c:1646 */ break; - case 131: -#line 826 "ntp_parser.y" /* yacc.c:1646 */ + case 132: +#line 831 "ntp_parser.y" /* yacc.c:1646 */ { restrict_node *rn; @@ -2543,11 +2554,11 @@ yyreduce: ip_file->line_no); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2547 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2558 "ntp_parser.c" /* yacc.c:1646 */ break; - case 132: -#line 841 "ntp_parser.y" /* yacc.c:1646 */ + case 133: +#line 846 "ntp_parser.y" /* yacc.c:1646 */ { restrict_node * rn; @@ -2556,199 +2567,199 @@ yyreduce: NULL, NULL, (yyvsp[0].Int_fifo), ip_file->line_no); APPEND_G_FIFO(cfgt.restrict_opts, rn); } -#line 2560 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2571 "ntp_parser.c" /* yacc.c:1646 */ break; - case 133: -#line 853 "ntp_parser.y" /* yacc.c:1646 */ + case 134: +#line 858 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = NULL; } -#line 2566 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2577 "ntp_parser.c" /* yacc.c:1646 */ break; - case 134: -#line 855 "ntp_parser.y" /* yacc.c:1646 */ + case 135: +#line 860 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = (yyvsp[-1].Int_fifo); APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } -#line 2575 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2586 "ntp_parser.c" /* yacc.c:1646 */ break; - case 150: -#line 881 "ntp_parser.y" /* yacc.c:1646 */ + case 151: +#line 886 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2584 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2595 "ntp_parser.c" /* yacc.c:1646 */ break; - case 151: -#line 886 "ntp_parser.y" /* yacc.c:1646 */ + case 152: +#line 891 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2593 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2604 "ntp_parser.c" /* yacc.c:1646 */ break; - case 152: -#line 894 "ntp_parser.y" /* yacc.c:1646 */ + case 153: +#line 899 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2599 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2610 "ntp_parser.c" /* yacc.c:1646 */ break; - case 156: -#line 905 "ntp_parser.y" /* yacc.c:1646 */ + case 157: +#line 910 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2608 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2619 "ntp_parser.c" /* yacc.c:1646 */ break; - case 157: -#line 910 "ntp_parser.y" /* yacc.c:1646 */ + case 158: +#line 915 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2617 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2628 "ntp_parser.c" /* yacc.c:1646 */ break; - case 158: -#line 918 "ntp_parser.y" /* yacc.c:1646 */ + case 159: +#line 923 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2623 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2634 "ntp_parser.c" /* yacc.c:1646 */ break; - case 167: -#line 938 "ntp_parser.y" /* yacc.c:1646 */ + case 168: +#line 943 "ntp_parser.y" /* yacc.c:1646 */ { addr_opts_node *aon; aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.fudge, aon); } -#line 2634 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2645 "ntp_parser.c" /* yacc.c:1646 */ break; - case 168: -#line 948 "ntp_parser.y" /* yacc.c:1646 */ + case 169: +#line 953 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2643 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2654 "ntp_parser.c" /* yacc.c:1646 */ break; - case 169: -#line 953 "ntp_parser.y" /* yacc.c:1646 */ + case 170: +#line 958 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2652 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ - break; - - case 170: -#line 961 "ntp_parser.y" /* yacc.c:1646 */ - { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } -#line 2658 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2663 "ntp_parser.c" /* yacc.c:1646 */ break; case 171: -#line 963 "ntp_parser.y" /* yacc.c:1646 */ - { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2664 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 966 "ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } +#line 2669 "ntp_parser.c" /* yacc.c:1646 */ break; case 172: -#line 965 "ntp_parser.y" /* yacc.c:1646 */ +#line 968 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2670 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2675 "ntp_parser.c" /* yacc.c:1646 */ break; case 173: -#line 967 "ntp_parser.y" /* yacc.c:1646 */ - { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } -#line 2676 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 970 "ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } +#line 2681 "ntp_parser.c" /* yacc.c:1646 */ break; case 174: -#line 969 "ntp_parser.y" /* yacc.c:1646 */ +#line 972 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } -#line 2682 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2687 "ntp_parser.c" /* yacc.c:1646 */ break; - case 181: -#line 990 "ntp_parser.y" /* yacc.c:1646 */ - { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); } -#line 2688 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ + case 175: +#line 974 "ntp_parser.y" /* yacc.c:1646 */ + { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); } +#line 2693 "ntp_parser.c" /* yacc.c:1646 */ break; case 182: #line 995 "ntp_parser.y" /* yacc.c:1646 */ + { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); } +#line 2699 "ntp_parser.c" /* yacc.c:1646 */ + break; + + case 183: +#line 1000 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2697 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2708 "ntp_parser.c" /* yacc.c:1646 */ break; - case 183: -#line 1000 "ntp_parser.y" /* yacc.c:1646 */ + case 184: +#line 1005 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2706 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2717 "ntp_parser.c" /* yacc.c:1646 */ break; - case 184: -#line 1008 "ntp_parser.y" /* yacc.c:1646 */ + case 185: +#line 1013 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2712 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2723 "ntp_parser.c" /* yacc.c:1646 */ break; - case 188: -#line 1024 "ntp_parser.y" /* yacc.c:1646 */ + case 189: +#line 1029 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); } -#line 2718 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2729 "ntp_parser.c" /* yacc.c:1646 */ break; - case 189: -#line 1026 "ntp_parser.y" /* yacc.c:1646 */ + case 190: +#line 1031 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); } -#line 2724 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2735 "ntp_parser.c" /* yacc.c:1646 */ break; - case 190: -#line 1031 "ntp_parser.y" /* yacc.c:1646 */ + case 191: +#line 1036 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2733 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2744 "ntp_parser.c" /* yacc.c:1646 */ break; - case 191: -#line 1036 "ntp_parser.y" /* yacc.c:1646 */ + case 192: +#line 1041 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2742 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2753 "ntp_parser.c" /* yacc.c:1646 */ break; - case 192: -#line 1044 "ntp_parser.y" /* yacc.c:1646 */ + case 193: +#line 1049 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); } -#line 2748 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2759 "ntp_parser.c" /* yacc.c:1646 */ break; - case 193: -#line 1046 "ntp_parser.y" /* yacc.c:1646 */ + case 194: +#line 1051 "ntp_parser.y" /* yacc.c:1646 */ { if (input_from_file) { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); @@ -2762,63 +2773,63 @@ yyreduce: yyerror(ip_file, err_str); } } -#line 2766 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2777 "ntp_parser.c" /* yacc.c:1646 */ break; - case 202: -#line 1081 "ntp_parser.y" /* yacc.c:1646 */ + case 203: +#line 1086 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); } -#line 2772 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2783 "ntp_parser.c" /* yacc.c:1646 */ break; - case 203: -#line 1086 "ntp_parser.y" /* yacc.c:1646 */ + case 204: +#line 1091 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2781 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2792 "ntp_parser.c" /* yacc.c:1646 */ break; - case 204: -#line 1091 "ntp_parser.y" /* yacc.c:1646 */ + case 205: +#line 1096 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2790 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2801 "ntp_parser.c" /* yacc.c:1646 */ break; - case 205: -#line 1099 "ntp_parser.y" /* yacc.c:1646 */ + case 206: +#line 1104 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); } -#line 2796 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2807 "ntp_parser.c" /* yacc.c:1646 */ break; - case 216: -#line 1122 "ntp_parser.y" /* yacc.c:1646 */ + case 219: +#line 1129 "ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); APPEND_G_FIFO(cfgt.vars, av); } -#line 2807 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2818 "ntp_parser.c" /* yacc.c:1646 */ break; - case 217: -#line 1129 "ntp_parser.y" /* yacc.c:1646 */ + case 220: +#line 1136 "ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); APPEND_G_FIFO(cfgt.vars, av); } -#line 2818 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2829 "ntp_parser.c" /* yacc.c:1646 */ break; - case 218: -#line 1136 "ntp_parser.y" /* yacc.c:1646 */ + case 221: +#line 1143 "ntp_parser.y" /* yacc.c:1646 */ { char error_text[64]; attr_val *av; @@ -2834,11 +2845,11 @@ yyreduce: yyerror(ip_file, error_text); } } -#line 2838 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2849 "ntp_parser.c" /* yacc.c:1646 */ break; - case 219: -#line 1152 "ntp_parser.y" /* yacc.c:1646 */ + case 222: +#line 1159 "ntp_parser.y" /* yacc.c:1646 */ { if (!input_from_file) { yyerror(ip_file, "remote includefile ignored"); @@ -2857,72 +2868,72 @@ yyreduce: } } } -#line 2861 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2872 "ntp_parser.c" /* yacc.c:1646 */ break; - case 220: -#line 1171 "ntp_parser.y" /* yacc.c:1646 */ + case 223: +#line 1178 "ntp_parser.y" /* yacc.c:1646 */ { while (curr_include_level != -1) FCLOSE(fp[curr_include_level--]); } -#line 2870 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2881 "ntp_parser.c" /* yacc.c:1646 */ break; - case 221: -#line 1176 "ntp_parser.y" /* yacc.c:1646 */ + case 224: +#line 1183 "ntp_parser.y" /* yacc.c:1646 */ { /* see drift_parm below for actions */ } -#line 2876 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2887 "ntp_parser.c" /* yacc.c:1646 */ break; - case 222: -#line 1178 "ntp_parser.y" /* yacc.c:1646 */ + case 225: +#line 1185 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); } -#line 2882 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2893 "ntp_parser.c" /* yacc.c:1646 */ break; - case 223: -#line 1180 "ntp_parser.y" /* yacc.c:1646 */ + case 226: +#line 1187 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); } -#line 2888 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2899 "ntp_parser.c" /* yacc.c:1646 */ break; - case 224: -#line 1182 "ntp_parser.y" /* yacc.c:1646 */ + case 227: +#line 1189 "ntp_parser.y" /* yacc.c:1646 */ { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); } -#line 2894 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2905 "ntp_parser.c" /* yacc.c:1646 */ break; - case 225: -#line 1184 "ntp_parser.y" /* yacc.c:1646 */ + case 228: +#line 1191 "ntp_parser.y" /* yacc.c:1646 */ { addr_opts_node *aon; aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo)); APPEND_G_FIFO(cfgt.trap, aon); } -#line 2905 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2916 "ntp_parser.c" /* yacc.c:1646 */ break; - case 226: -#line 1191 "ntp_parser.y" /* yacc.c:1646 */ + case 229: +#line 1198 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); } -#line 2911 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2922 "ntp_parser.c" /* yacc.c:1646 */ break; - case 235: -#line 1213 "ntp_parser.y" /* yacc.c:1646 */ + case 238: +#line 1220 "ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; av = create_attr_sval(T_Driftfile, (yyvsp[0].String)); APPEND_G_FIFO(cfgt.vars, av); } -#line 2922 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2933 "ntp_parser.c" /* yacc.c:1646 */ break; - case 236: -#line 1220 "ntp_parser.y" /* yacc.c:1646 */ + case 239: +#line 1227 "ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; @@ -2931,82 +2942,82 @@ yyreduce: av = create_attr_dval(T_WanderThreshold, (yyvsp[0].Double)); APPEND_G_FIFO(cfgt.vars, av); } -#line 2935 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2946 "ntp_parser.c" /* yacc.c:1646 */ break; - case 237: -#line 1229 "ntp_parser.y" /* yacc.c:1646 */ + case 240: +#line 1236 "ntp_parser.y" /* yacc.c:1646 */ { attr_val *av; av = create_attr_sval(T_Driftfile, ""); APPEND_G_FIFO(cfgt.vars, av); } -#line 2946 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2957 "ntp_parser.c" /* yacc.c:1646 */ break; - case 238: -#line 1239 "ntp_parser.y" /* yacc.c:1646 */ + case 241: +#line 1246 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); } -#line 2952 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2963 "ntp_parser.c" /* yacc.c:1646 */ break; - case 240: -#line 1245 "ntp_parser.y" /* yacc.c:1646 */ + case 243: +#line 1252 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = 0; } -#line 2958 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2969 "ntp_parser.c" /* yacc.c:1646 */ break; - case 241: -#line 1250 "ntp_parser.y" /* yacc.c:1646 */ + case 244: +#line 1257 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; } -#line 2964 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2975 "ntp_parser.c" /* yacc.c:1646 */ break; - case 242: -#line 1252 "ntp_parser.y" /* yacc.c:1646 */ + case 245: +#line 1259 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2973 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2984 "ntp_parser.c" /* yacc.c:1646 */ break; - case 243: -#line 1260 "ntp_parser.y" /* yacc.c:1646 */ + case 246: +#line 1267 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); } -#line 2979 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2990 "ntp_parser.c" /* yacc.c:1646 */ break; - case 244: -#line 1262 "ntp_parser.y" /* yacc.c:1646 */ + case 247: +#line 1269 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address)); destroy_address_node((yyvsp[0].Address_node)); } -#line 2988 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 2999 "ntp_parser.c" /* yacc.c:1646 */ break; - case 245: -#line 1270 "ntp_parser.y" /* yacc.c:1646 */ + case 248: +#line 1277 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 2997 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3008 "ntp_parser.c" /* yacc.c:1646 */ break; - case 246: -#line 1275 "ntp_parser.y" /* yacc.c:1646 */ + case 249: +#line 1282 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 3006 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3017 "ntp_parser.c" /* yacc.c:1646 */ break; - case 247: -#line 1283 "ntp_parser.y" /* yacc.c:1646 */ + case 250: +#line 1290 "ntp_parser.y" /* yacc.c:1646 */ { char prefix; char * type; @@ -3028,141 +3039,141 @@ yyreduce: (yyval.Attr_val) = create_attr_sval(prefix, estrdup(type)); YYFREE((yyvsp[0].String)); } -#line 3032 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3043 "ntp_parser.c" /* yacc.c:1646 */ break; - case 248: -#line 1308 "ntp_parser.y" /* yacc.c:1646 */ + case 251: +#line 1315 "ntp_parser.y" /* yacc.c:1646 */ { nic_rule_node *nrn; nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer)); APPEND_G_FIFO(cfgt.nic_rules, nrn); } -#line 3043 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3054 "ntp_parser.c" /* yacc.c:1646 */ break; - case 249: -#line 1315 "ntp_parser.y" /* yacc.c:1646 */ + case 252: +#line 1322 "ntp_parser.y" /* yacc.c:1646 */ { nic_rule_node *nrn; nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer)); APPEND_G_FIFO(cfgt.nic_rules, nrn); } -#line 3054 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3065 "ntp_parser.c" /* yacc.c:1646 */ break; - case 259: -#line 1343 "ntp_parser.y" /* yacc.c:1646 */ + case 262: +#line 1350 "ntp_parser.y" /* yacc.c:1646 */ { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); } -#line 3060 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3071 "ntp_parser.c" /* yacc.c:1646 */ break; - case 260: -#line 1348 "ntp_parser.y" /* yacc.c:1646 */ + case 263: +#line 1355 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = (yyvsp[-1].Int_fifo); APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } -#line 3069 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3080 "ntp_parser.c" /* yacc.c:1646 */ break; - case 261: -#line 1353 "ntp_parser.y" /* yacc.c:1646 */ + case 264: +#line 1360 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Int_fifo) = NULL; APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer))); } -#line 3078 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3089 "ntp_parser.c" /* yacc.c:1646 */ break; - case 269: -#line 1377 "ntp_parser.y" /* yacc.c:1646 */ + case 272: +#line 1384 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer))); } -#line 3087 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3098 "ntp_parser.c" /* yacc.c:1646 */ break; - case 270: -#line 1382 "ntp_parser.y" /* yacc.c:1646 */ + case 273: +#line 1389 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer))); } -#line 3096 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3107 "ntp_parser.c" /* yacc.c:1646 */ break; - case 271: -#line 1390 "ntp_parser.y" /* yacc.c:1646 */ + case 274: +#line 1397 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 3105 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3116 "ntp_parser.c" /* yacc.c:1646 */ break; - case 272: -#line 1395 "ntp_parser.y" /* yacc.c:1646 */ + case 275: +#line 1402 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val)); } -#line 3114 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3125 "ntp_parser.c" /* yacc.c:1646 */ break; - case 273: -#line 1403 "ntp_parser.y" /* yacc.c:1646 */ + case 276: +#line 1410 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); } -#line 3120 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3131 "ntp_parser.c" /* yacc.c:1646 */ break; - case 275: -#line 1409 "ntp_parser.y" /* yacc.c:1646 */ + case 278: +#line 1416 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); } -#line 3126 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3137 "ntp_parser.c" /* yacc.c:1646 */ break; - case 276: -#line 1414 "ntp_parser.y" /* yacc.c:1646 */ + case 279: +#line 1421 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.String_fifo) = (yyvsp[-1].String_fifo); APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String))); } -#line 3135 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3146 "ntp_parser.c" /* yacc.c:1646 */ break; - case 277: -#line 1419 "ntp_parser.y" /* yacc.c:1646 */ + case 280: +#line 1426 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.String_fifo) = NULL; APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String))); } -#line 3144 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3155 "ntp_parser.c" /* yacc.c:1646 */ break; - case 278: -#line 1427 "ntp_parser.y" /* yacc.c:1646 */ + case 281: +#line 1434 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Address_fifo) = (yyvsp[-1].Address_fifo); APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node)); } -#line 3153 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3164 "ntp_parser.c" /* yacc.c:1646 */ break; - case 279: -#line 1432 "ntp_parser.y" /* yacc.c:1646 */ + case 282: +#line 1439 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Address_fifo) = NULL; APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node)); } -#line 3162 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3173 "ntp_parser.c" /* yacc.c:1646 */ break; - case 280: -#line 1440 "ntp_parser.y" /* yacc.c:1646 */ + case 283: +#line 1447 "ntp_parser.y" /* yacc.c:1646 */ { if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) { yyerror(ip_file, "Integer value is not boolean (0 or 1). Assuming 1"); @@ -3171,29 +3182,29 @@ yyreduce: (yyval.Integer) = (yyvsp[0].Integer); } } -#line 3175 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3186 "ntp_parser.c" /* yacc.c:1646 */ break; - case 281: -#line 1448 "ntp_parser.y" /* yacc.c:1646 */ + case 284: +#line 1455 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = 1; } -#line 3181 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3192 "ntp_parser.c" /* yacc.c:1646 */ break; - case 282: -#line 1449 "ntp_parser.y" /* yacc.c:1646 */ + case 285: +#line 1456 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Integer) = 0; } -#line 3187 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3198 "ntp_parser.c" /* yacc.c:1646 */ break; - case 283: -#line 1453 "ntp_parser.y" /* yacc.c:1646 */ + case 286: +#line 1460 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Double) = (double)(yyvsp[0].Integer); } -#line 3193 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3204 "ntp_parser.c" /* yacc.c:1646 */ break; - case 285: -#line 1464 "ntp_parser.y" /* yacc.c:1646 */ + case 288: +#line 1471 "ntp_parser.y" /* yacc.c:1646 */ { sim_node *sn; @@ -3203,125 +3214,125 @@ yyreduce: /* Revert from ; to \n for end-of-command */ old_config_style = 1; } -#line 3207 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3218 "ntp_parser.c" /* yacc.c:1646 */ break; - case 286: -#line 1481 "ntp_parser.y" /* yacc.c:1646 */ + case 289: +#line 1488 "ntp_parser.y" /* yacc.c:1646 */ { old_config_style = 0; } -#line 3213 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3224 "ntp_parser.c" /* yacc.c:1646 */ break; - case 287: -#line 1486 "ntp_parser.y" /* yacc.c:1646 */ + case 290: +#line 1493 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } -#line 3222 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3233 "ntp_parser.c" /* yacc.c:1646 */ break; - case 288: -#line 1491 "ntp_parser.y" /* yacc.c:1646 */ + case 291: +#line 1498 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } -#line 3231 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3242 "ntp_parser.c" /* yacc.c:1646 */ break; - case 289: -#line 1499 "ntp_parser.y" /* yacc.c:1646 */ + case 292: +#line 1506 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); } -#line 3237 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3248 "ntp_parser.c" /* yacc.c:1646 */ break; - case 292: -#line 1509 "ntp_parser.y" /* yacc.c:1646 */ + case 295: +#line 1516 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo); APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server)); } -#line 3246 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3257 "ntp_parser.c" /* yacc.c:1646 */ break; - case 293: -#line 1514 "ntp_parser.y" /* yacc.c:1646 */ + case 296: +#line 1521 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_server_fifo) = NULL; APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server)); } -#line 3255 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3266 "ntp_parser.c" /* yacc.c:1646 */ break; - case 294: -#line 1522 "ntp_parser.y" /* yacc.c:1646 */ + case 297: +#line 1529 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[-4].Address_node), (yyvsp[-2].Double), (yyvsp[-1].Sim_script_fifo))); } -#line 3261 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3272 "ntp_parser.c" /* yacc.c:1646 */ break; - case 295: -#line 1527 "ntp_parser.y" /* yacc.c:1646 */ + case 298: +#line 1534 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Double) = (yyvsp[-1].Double); } -#line 3267 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3278 "ntp_parser.c" /* yacc.c:1646 */ break; - case 296: -#line 1532 "ntp_parser.y" /* yacc.c:1646 */ + case 299: +#line 1539 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Address_node) = (yyvsp[0].Address_node); } -#line 3273 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3284 "ntp_parser.c" /* yacc.c:1646 */ break; - case 297: -#line 1537 "ntp_parser.y" /* yacc.c:1646 */ + case 300: +#line 1544 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo); APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script)); } -#line 3282 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3293 "ntp_parser.c" /* yacc.c:1646 */ break; - case 298: -#line 1542 "ntp_parser.y" /* yacc.c:1646 */ + case 301: +#line 1549 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_script_fifo) = NULL; APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script)); } -#line 3291 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3302 "ntp_parser.c" /* yacc.c:1646 */ break; - case 299: -#line 1550 "ntp_parser.y" /* yacc.c:1646 */ + case 302: +#line 1557 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[-3].Double), (yyvsp[-1].Attr_val_fifo))); } -#line 3297 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3308 "ntp_parser.c" /* yacc.c:1646 */ break; - case 300: -#line 1555 "ntp_parser.y" /* yacc.c:1646 */ + case 303: +#line 1562 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo); APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } -#line 3306 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3317 "ntp_parser.c" /* yacc.c:1646 */ break; - case 301: -#line 1560 "ntp_parser.y" /* yacc.c:1646 */ + case 304: +#line 1567 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val_fifo) = NULL; APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val)); } -#line 3315 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3326 "ntp_parser.c" /* yacc.c:1646 */ break; - case 302: -#line 1568 "ntp_parser.y" /* yacc.c:1646 */ + case 305: +#line 1575 "ntp_parser.y" /* yacc.c:1646 */ { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); } -#line 3321 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3332 "ntp_parser.c" /* yacc.c:1646 */ break; -#line 3325 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */ +#line 3336 "ntp_parser.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -3549,7 +3560,7 @@ yyreturn: #endif return yyresult; } -#line 1579 "ntp_parser.y" /* yacc.c:1906 */ +#line 1586 "ntp_parser.y" /* yacc.c:1906 */ void diff --git a/ntpd/ntp_parser.h b/ntpd/ntp_parser.h index c830157..2804e54 100644 --- a/ntpd/ntp_parser.h +++ b/ntpd/ntp_parser.h @@ -30,8 +30,8 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_YY_______NTPD_NTP_PARSER_H_INCLUDED -# define YY_YY_______NTPD_NTP_PARSER_H_INCLUDED +#ifndef YY_YY_NTP_PARSER_H_INCLUDED +# define YY_YY_NTP_PARSER_H_INCLUDED /* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 1 @@ -133,104 +133,107 @@ extern int yydebug; T_Maxdist = 343, T_Maxmem = 344, T_Maxpoll = 345, - T_Mem = 346, - T_Memlock = 347, - T_Minclock = 348, - T_Mindepth = 349, - T_Mindist = 350, - T_Minimum = 351, - T_Minpoll = 352, - T_Minsane = 353, - T_Mode = 354, - T_Mode7 = 355, - T_Monitor = 356, - T_Month = 357, - T_Mru = 358, - T_Multicastclient = 359, - T_Nic = 360, - T_Nolink = 361, - T_Nomodify = 362, - T_Nomrulist = 363, - T_None = 364, - T_Nonvolatile = 365, - T_Nopeer = 366, - T_Noquery = 367, - T_Noselect = 368, - T_Noserve = 369, - T_Notrap = 370, - T_Notrust = 371, - T_Ntp = 372, - T_Ntpport = 373, - T_NtpSignDsocket = 374, - T_Orphan = 375, - T_Orphanwait = 376, - T_Panic = 377, - T_Peer = 378, - T_Peerstats = 379, - T_Phone = 380, - T_Pid = 381, - T_Pidfile = 382, - T_Pool = 383, - T_Port = 384, - T_Preempt = 385, - T_Prefer = 386, - T_Protostats = 387, - T_Pw = 388, - T_Randfile = 389, - T_Rawstats = 390, - T_Refid = 391, - T_Requestkey = 392, - T_Reset = 393, - T_Restrict = 394, - T_Revoke = 395, - T_Rlimit = 396, - T_Saveconfigdir = 397, - T_Server = 398, - T_Setvar = 399, - T_Source = 400, - T_Stacksize = 401, - T_Statistics = 402, - T_Stats = 403, - T_Statsdir = 404, - T_Step = 405, - T_Stepout = 406, - T_Stratum = 407, - T_String = 408, - T_Sys = 409, - T_Sysstats = 410, - T_Tick = 411, - T_Time1 = 412, - T_Time2 = 413, - T_Timer = 414, - T_Timingstats = 415, - T_Tinker = 416, - T_Tos = 417, - T_Trap = 418, - T_True = 419, - T_Trustedkey = 420, - T_Ttl = 421, - T_Type = 422, - T_U_int = 423, - T_Unconfig = 424, - T_Unpeer = 425, - T_Version = 426, - T_WanderThreshold = 427, - T_Week = 428, - T_Wildcard = 429, - T_Xleave = 430, - T_Year = 431, - T_Flag = 432, - T_EOC = 433, - T_Simulate = 434, - T_Beep_Delay = 435, - T_Sim_Duration = 436, - T_Server_Offset = 437, - T_Duration = 438, - T_Freq_Offset = 439, - T_Wander = 440, - T_Jitter = 441, - T_Prop_Delay = 442, - T_Proc_Delay = 443 + T_Mdnstries = 346, + T_Mem = 347, + T_Memlock = 348, + T_Minclock = 349, + T_Mindepth = 350, + T_Mindist = 351, + T_Minimum = 352, + T_Minpoll = 353, + T_Minsane = 354, + T_Mode = 355, + T_Mode7 = 356, + T_Monitor = 357, + T_Month = 358, + T_Mru = 359, + T_Multicastclient = 360, + T_Nic = 361, + T_Nolink = 362, + T_Nomodify = 363, + T_Nomrulist = 364, + T_None = 365, + T_Nonvolatile = 366, + T_Nopeer = 367, + T_Noquery = 368, + T_Noselect = 369, + T_Noserve = 370, + T_Notrap = 371, + T_Notrust = 372, + T_Ntp = 373, + T_Ntpport = 374, + T_NtpSignDsocket = 375, + T_Orphan = 376, + T_Orphanwait = 377, + T_Panic = 378, + T_Peer = 379, + T_Peerstats = 380, + T_Phone = 381, + T_Pid = 382, + T_Pidfile = 383, + T_Pool = 384, + T_Port = 385, + T_Preempt = 386, + T_Prefer = 387, + T_Protostats = 388, + T_Pw = 389, + T_Randfile = 390, + T_Rawstats = 391, + T_Refid = 392, + T_Requestkey = 393, + T_Reset = 394, + T_Restrict = 395, + T_Revoke = 396, + T_Rlimit = 397, + T_Saveconfigdir = 398, + T_Server = 399, + T_Setvar = 400, + T_Source = 401, + T_Stacksize = 402, + T_Statistics = 403, + T_Stats = 404, + T_Statsdir = 405, + T_Step = 406, + T_Stepback = 407, + T_Stepfwd = 408, + T_Stepout = 409, + T_Stratum = 410, + T_String = 411, + T_Sys = 412, + T_Sysstats = 413, + T_Tick = 414, + T_Time1 = 415, + T_Time2 = 416, + T_Timer = 417, + T_Timingstats = 418, + T_Tinker = 419, + T_Tos = 420, + T_Trap = 421, + T_True = 422, + T_Trustedkey = 423, + T_Ttl = 424, + T_Type = 425, + T_U_int = 426, + T_Unconfig = 427, + T_Unpeer = 428, + T_Version = 429, + T_WanderThreshold = 430, + T_Week = 431, + T_Wildcard = 432, + T_Xleave = 433, + T_Year = 434, + T_Flag = 435, + T_EOC = 436, + T_Simulate = 437, + T_Beep_Delay = 438, + T_Sim_Duration = 439, + T_Server_Offset = 440, + T_Duration = 441, + T_Freq_Offset = 442, + T_Wander = 443, + T_Jitter = 444, + T_Prop_Delay = 445, + T_Proc_Delay = 446 }; #endif /* Tokens. */ @@ -322,104 +325,107 @@ extern int yydebug; #define T_Maxdist 343 #define T_Maxmem 344 #define T_Maxpoll 345 -#define T_Mem 346 -#define T_Memlock 347 -#define T_Minclock 348 -#define T_Mindepth 349 -#define T_Mindist 350 -#define T_Minimum 351 -#define T_Minpoll 352 -#define T_Minsane 353 -#define T_Mode 354 -#define T_Mode7 355 -#define T_Monitor 356 -#define T_Month 357 -#define T_Mru 358 -#define T_Multicastclient 359 -#define T_Nic 360 -#define T_Nolink 361 -#define T_Nomodify 362 -#define T_Nomrulist 363 -#define T_None 364 -#define T_Nonvolatile 365 -#define T_Nopeer 366 -#define T_Noquery 367 -#define T_Noselect 368 -#define T_Noserve 369 -#define T_Notrap 370 -#define T_Notrust 371 -#define T_Ntp 372 -#define T_Ntpport 373 -#define T_NtpSignDsocket 374 -#define T_Orphan 375 -#define T_Orphanwait 376 -#define T_Panic 377 -#define T_Peer 378 -#define T_Peerstats 379 -#define T_Phone 380 -#define T_Pid 381 -#define T_Pidfile 382 -#define T_Pool 383 -#define T_Port 384 -#define T_Preempt 385 -#define T_Prefer 386 -#define T_Protostats 387 -#define T_Pw 388 -#define T_Randfile 389 -#define T_Rawstats 390 -#define T_Refid 391 -#define T_Requestkey 392 -#define T_Reset 393 -#define T_Restrict 394 -#define T_Revoke 395 -#define T_Rlimit 396 -#define T_Saveconfigdir 397 -#define T_Server 398 -#define T_Setvar 399 -#define T_Source 400 -#define T_Stacksize 401 -#define T_Statistics 402 -#define T_Stats 403 -#define T_Statsdir 404 -#define T_Step 405 -#define T_Stepout 406 -#define T_Stratum 407 -#define T_String 408 -#define T_Sys 409 -#define T_Sysstats 410 -#define T_Tick 411 -#define T_Time1 412 -#define T_Time2 413 -#define T_Timer 414 -#define T_Timingstats 415 -#define T_Tinker 416 -#define T_Tos 417 -#define T_Trap 418 -#define T_True 419 -#define T_Trustedkey 420 -#define T_Ttl 421 -#define T_Type 422 -#define T_U_int 423 -#define T_Unconfig 424 -#define T_Unpeer 425 -#define T_Version 426 -#define T_WanderThreshold 427 -#define T_Week 428 -#define T_Wildcard 429 -#define T_Xleave 430 -#define T_Year 431 -#define T_Flag 432 -#define T_EOC 433 -#define T_Simulate 434 -#define T_Beep_Delay 435 -#define T_Sim_Duration 436 -#define T_Server_Offset 437 -#define T_Duration 438 -#define T_Freq_Offset 439 -#define T_Wander 440 -#define T_Jitter 441 -#define T_Prop_Delay 442 -#define T_Proc_Delay 443 +#define T_Mdnstries 346 +#define T_Mem 347 +#define T_Memlock 348 +#define T_Minclock 349 +#define T_Mindepth 350 +#define T_Mindist 351 +#define T_Minimum 352 +#define T_Minpoll 353 +#define T_Minsane 354 +#define T_Mode 355 +#define T_Mode7 356 +#define T_Monitor 357 +#define T_Month 358 +#define T_Mru 359 +#define T_Multicastclient 360 +#define T_Nic 361 +#define T_Nolink 362 +#define T_Nomodify 363 +#define T_Nomrulist 364 +#define T_None 365 +#define T_Nonvolatile 366 +#define T_Nopeer 367 +#define T_Noquery 368 +#define T_Noselect 369 +#define T_Noserve 370 +#define T_Notrap 371 +#define T_Notrust 372 +#define T_Ntp 373 +#define T_Ntpport 374 +#define T_NtpSignDsocket 375 +#define T_Orphan 376 +#define T_Orphanwait 377 +#define T_Panic 378 +#define T_Peer 379 +#define T_Peerstats 380 +#define T_Phone 381 +#define T_Pid 382 +#define T_Pidfile 383 +#define T_Pool 384 +#define T_Port 385 +#define T_Preempt 386 +#define T_Prefer 387 +#define T_Protostats 388 +#define T_Pw 389 +#define T_Randfile 390 +#define T_Rawstats 391 +#define T_Refid 392 +#define T_Requestkey 393 +#define T_Reset 394 +#define T_Restrict 395 +#define T_Revoke 396 +#define T_Rlimit 397 +#define T_Saveconfigdir 398 +#define T_Server 399 +#define T_Setvar 400 +#define T_Source 401 +#define T_Stacksize 402 +#define T_Statistics 403 +#define T_Stats 404 +#define T_Statsdir 405 +#define T_Step 406 +#define T_Stepback 407 +#define T_Stepfwd 408 +#define T_Stepout 409 +#define T_Stratum 410 +#define T_String 411 +#define T_Sys 412 +#define T_Sysstats 413 +#define T_Tick 414 +#define T_Time1 415 +#define T_Time2 416 +#define T_Timer 417 +#define T_Timingstats 418 +#define T_Tinker 419 +#define T_Tos 420 +#define T_Trap 421 +#define T_True 422 +#define T_Trustedkey 423 +#define T_Ttl 424 +#define T_Type 425 +#define T_U_int 426 +#define T_Unconfig 427 +#define T_Unpeer 428 +#define T_Version 429 +#define T_WanderThreshold 430 +#define T_Week 431 +#define T_Wildcard 432 +#define T_Xleave 433 +#define T_Year 434 +#define T_Flag 435 +#define T_EOC 436 +#define T_Simulate 437 +#define T_Beep_Delay 438 +#define T_Sim_Duration 439 +#define T_Server_Offset 440 +#define T_Duration 441 +#define T_Freq_Offset 442 +#define T_Wander 443 +#define T_Jitter 444 +#define T_Prop_Delay 445 +#define T_Proc_Delay 446 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -445,7 +451,7 @@ union YYSTYPE script_info * Sim_script; script_info_fifo * Sim_script_fifo; -#line 449 "../../ntpd/ntp_parser.h" /* yacc.c:1909 */ +#line 455 "ntp_parser.h" /* yacc.c:1909 */ }; # define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_DECLARED 1 @@ -456,4 +462,4 @@ extern YYSTYPE yylval; int yyparse (struct FILE_INFO *ip_file); -#endif /* !YY_YY_______NTPD_NTP_PARSER_H_INCLUDED */ +#endif /* !YY_YY_NTP_PARSER_H_INCLUDED */ diff --git a/ntpd/ntp_parser.y b/ntpd/ntp_parser.y index e75bffe..e878e79 100644 --- a/ntpd/ntp_parser.y +++ b/ntpd/ntp_parser.y @@ -159,6 +159,7 @@ %token T_Maxdist %token T_Maxmem %token T_Maxpoll +%token T_Mdnstries %token T_Mem %token T_Memlock %token T_Minclock @@ -219,6 +220,8 @@ %token T_Stats %token T_Statsdir %token T_Step +%token T_Stepback +%token T_Stepfwd %token T_Stepout %token T_Stratum %token T_String /* not a token */ @@ -526,6 +529,8 @@ other_mode_command { CONCAT_G_FIFOS(cfgt.manycastserver, $2); } | T_Multicastclient address_list { CONCAT_G_FIFOS(cfgt.multicastclient, $2); } + | T_Mdnstries T_Integer + { cfgt.mdnstries = $2; } ; @@ -1106,6 +1111,8 @@ tinker_option_keyword | T_Huffpuff | T_Panic | T_Step + | T_Stepback + | T_Stepfwd | T_Stepout | T_Tick ; diff --git a/ntpd/ntp_peer.c b/ntpd/ntp_peer.c index 495ee30..d42d804 100644 --- a/ntpd/ntp_peer.c +++ b/ntpd/ntp_peer.c @@ -92,6 +92,7 @@ int peer_free_count; /* count of free structures */ * value every time an association is mobilized. */ static associd_t current_association_ID; /* association ID */ +static associd_t initial_association_ID; /* association ID */ /* * Memory allocation watermarks. @@ -147,6 +148,7 @@ init_peer(void) do current_association_ID = ntp_random() & ASSOCID_MAX; while (!current_association_ID); + initial_association_ID = current_association_ID; } @@ -1036,3 +1038,21 @@ findmanycastpeer( return peer; } + +/* peer_cleanup - clean peer list prior to shutdown */ +void peer_cleanup(void) +{ + struct peer *peer; + associd_t assoc; + + for (assoc = initial_association_ID; assoc != current_association_ID; assoc++) { + if (assoc != 0U) { + peer = findpeerbyassoc(assoc); + if (peer != NULL) + unpeer(peer); + } + } + peer = findpeerbyassoc(current_association_ID); + if (peer != NULL) + unpeer(peer); +} diff --git a/ntpd/ntp_proto.c b/ntpd/ntp_proto.c index 2f7543f..577b5fb 100644 --- a/ntpd/ntp_proto.c +++ b/ntpd/ntp_proto.c @@ -245,7 +245,7 @@ transmit( /* * Update the reachability status. If not heard for * three consecutive polls, stuff infinity in the clock - * filter. + * filter. */ oreach = peer->reach; peer->outdate = current_time; @@ -290,7 +290,7 @@ transmit( * If preemptible and we have more peers than maxclock, * and this peer has the minimum score of preemptibles, * demobilize. - */ + */ if (peer->unreach >= NTP_UNREACH) { hpoll++; /* ephemeral: no FLAG_CONFIG nor FLAG_PREEMPT */ @@ -335,7 +335,7 @@ transmit( peer->retry--; /* - * Do not transmit if in broadcast client mode. + * Do not transmit if in broadcast client mode. */ if (peer->hmode != MODE_BCLIENT) peer_xmit(peer); @@ -442,7 +442,7 @@ receive( return; /* no flakeway */ } } - + /* * Version check must be after the query packets, since they * intentionally use an early version. @@ -486,18 +486,18 @@ receive( */ authlen = LEN_PKT_NOMAC; has_mac = rbufp->recv_length - authlen; - while (has_mac != 0) { + while (has_mac > 0) { u_int32 len; #ifdef AUTOKEY u_int32 hostlen; struct exten *ep; #endif /*AUTOKEY */ - if (has_mac % 4 != 0 || has_mac < MIN_MAC_LEN) { + if (has_mac % 4 != 0 || has_mac < (int)MIN_MAC_LEN) { sys_badlength++; return; /* bad length */ } - if (has_mac <= MAX_MAC_LEN) { + if (has_mac <= (int)MAX_MAC_LEN) { skeyid = ntohl(((u_int32 *)pkt)[authlen / 4]); break; @@ -540,6 +540,14 @@ receive( } } + /* + * If has_mac is < 0 we had a malformed packet. + */ + if (has_mac < 0) { + sys_badlength++; + return; /* bad length */ + } + /* * If authentication required, a MAC must be present. */ @@ -651,7 +659,7 @@ receive( * If the signature is 20 bytes long, the last 16 of * which are zero, then this is a Microsoft client * wanting AD-style authentication of the server's - * reply. + * reply. * * This is described in Microsoft's WSPP docs, in MS-SNTP: * http://msdn.microsoft.com/en-us/library/cc212930.aspx @@ -672,7 +680,7 @@ receive( * broadcast or unicast address as appropriate. */ if (crypto_flags && skeyid > NTP_MAXKEY) { - + /* * More on the autokey dance (AKD). A cookie is * constructed from public and private values. @@ -698,7 +706,7 @@ receive( * # if unsync, 0 * % can't happen */ - if (has_mac < MAX_MD5_LEN) { + if (has_mac < (int)MAX_MD5_LEN) { sys_badauth++; return; } @@ -736,7 +744,7 @@ receive( * purposes is zero. Note the hash is saved for * use later in the autokey mambo. */ - if (authlen > LEN_PKT_NOMAC && pkeyid != 0) { + if (authlen > (int)LEN_PKT_NOMAC && pkeyid != 0) { session_key(&rbufp->recv_srcadr, dstadr_sin, skeyid, 0, 2); tkeyid = session_key( @@ -866,7 +874,7 @@ receive( * curious and could be an intruder attempting to clog, so we * just ignore it. * - * If the packet is authentic and the manycastclient or pool + * If the packet is authentic and the manycastclient or pool * association is found, we mobilize a client association and * copy pertinent variables from the manycastclient or pool * association to the new client association. If not, just @@ -1089,6 +1097,7 @@ receive( fast_xmit(rbufp, MODE_ACTIVE, 0, restrict_mask); sys_restricted++; + return; } } @@ -1246,16 +1255,6 @@ receive( peer->flash |= TEST2; /* bogus */ } - /* - * Update the state variables. - */ - if (peer->flip == 0) { - if (hismode != MODE_BROADCAST) - peer->rec = p_xmt; - peer->dst = rbufp->recv_time; - } - peer->xmt = p_xmt; - /* * If this is a crypto_NAK, the server cannot authenticate a * client packet. The server might have just changed keys. Clear @@ -1275,19 +1274,21 @@ receive( #endif /* AUTOKEY */ return; - /* - * If the digest fails, the client cannot authenticate a server + /* + * If the digest fails or it's missing for authenticated + * associations, the client cannot authenticate a server * reply to a client packet previously sent. The loopback check * is designed to avoid a bait-and-switch attack, which was * possible in past versions. If symmetric modes, return a * crypto-NAK. The peer should restart the protocol. */ - } else if (!AUTH(has_mac || (restrict_mask & RES_DONTTRUST), - is_authentic)) { + } else if (!AUTH(peer->keyid || has_mac || + (restrict_mask & RES_DONTTRUST), is_authentic)) { report_event(PEVNT_AUTH, peer, "digest"); peer->flash |= TEST5; /* bad auth */ peer->badauth++; - if (hismode == MODE_ACTIVE || hismode == MODE_PASSIVE) + if (has_mac && + (hismode == MODE_ACTIVE || hismode == MODE_PASSIVE)) fast_xmit(rbufp, MODE_ACTIVE, 0, restrict_mask); if (peer->flags & FLAG_PREEMPT) { unpeer(peer); @@ -1300,6 +1301,16 @@ receive( return; } + /* + * Update the state variables. + */ + if (peer->flip == 0) { + if (hismode != MODE_BROADCAST) + peer->rec = p_xmt; + peer->dst = rbufp->recv_time; + } + peer->xmt = p_xmt; + /* * Set the peer ppoll to the maximum of the packet ppoll and the * peer minpoll. If a kiss-o'-death, set the peer minpoll to @@ -1568,7 +1579,7 @@ process_packet( /* * If the peer was previously unreachable, raise a trap. In any * case, mark it reachable. - */ + */ if (!peer->reach) { report_event(PEVNT_REACH, peer, NULL); peer->timereachable = current_time; @@ -1635,8 +1646,8 @@ process_packet( * Interleaved broadcast mode. Use interleaved timestamps. * t1 = peer->borg, t2 = p_org, t3 = p_org, t4 = aorg */ - if (peer->flags & FLAG_XB) { - ci = p_org; /* delay */ + if (peer->flags & FLAG_XB) { + ci = p_org; /* delay */ L_SUB(&ci, &peer->aorg); LFPTOD(&ci, t34); ci = p_org; /* t2 - t1 */ @@ -1765,7 +1776,7 @@ process_packet( p_del, peer->r21 / 1e3, peer->r34 / 1e3, td); #endif - } + } #endif /* ASSYM */ /* @@ -2092,7 +2103,7 @@ poll_update( void peer_clear( struct peer *peer, /* peer structure */ - char *ident /* tally lights */ + const char *ident /* tally lights */ ) { u_char u; @@ -2231,7 +2242,7 @@ clock_filter( for (i = NTP_SHIFT - 1; i >= 0; i--) { if (i != 0) peer->filter_disp[j] += dtemp; - if (peer->filter_disp[j] >= MAXDISPERSE) { + if (peer->filter_disp[j] >= MAXDISPERSE) { peer->filter_disp[j] = MAXDISPERSE; dst[i] = MAXDISPERSE; } else if (peer->update - peer->filter_epoch[j] > @@ -2246,7 +2257,7 @@ clock_filter( } /* - * If the clock has stabilized, sort the samples by distance. + * If the clock has stabilized, sort the samples by distance. */ if (freq_cnt == 0) { for (i = 1; i < NTP_SHIFT; i++) { @@ -2280,7 +2291,7 @@ clock_filter( continue; m++; } - + /* * Compute the dispersion and jitter. The dispersion is weighted * exponentially by NTP_FWEIGHT (0.5) so it is normalized close @@ -2382,7 +2393,7 @@ clock_select(void) struct peer *peer; int i, j, k, n; int nlist, nl2; - int allow, osurv; + int allow; int speer; double d, e, f, g; double high, low; @@ -2411,7 +2422,6 @@ clock_select(void) * enough to handle all associations. */ osys_peer = sys_peer; - osurv = sys_survivors; sys_survivors = 0; #ifdef LOCKCLOCK sys_leap = LEAP_NOTINSYNC; @@ -2485,9 +2495,9 @@ clock_select(void) /* * If this peer could have the orphan parent * as a synchronization ancestor, exclude it - * from selection to avoid forming a + * from selection to avoid forming a * synchronization loop within the orphan mesh, - * triggering stratum climb to infinity + * triggering stratum climb to infinity * instability. Peers at stratum higher than * the orphan stratum could have the orphan * parent in ancestry so are excluded. @@ -2595,7 +2605,7 @@ clock_select(void) for (allow = 0; 2 * allow < nlist; allow++) { /* - * Bound the interval (low, high) as the smallest + * Bound the interval (low, high) as the smallest * interval containing points from the most sources. */ n = 0; @@ -2631,7 +2641,7 @@ clock_select(void) * We assert the correct time is contained in the interval, but * the best offset estimate for the interval might not be * contained in the interval. For this purpose, a truechimer is - * defined as the midpoint of an interval that overlaps the + * defined as the midpoint of an interval that overlaps the * intersection interval. */ j = 0; @@ -2651,9 +2661,10 @@ clock_select(void) * include any of them in the cluster population. */ if (peer->flags & FLAG_PPS) { - if (typepps == NULL) + if (typepps == NULL) typepps = peer; - continue; + if (!(peer->flags & FLAG_TSTAMP_PPS)) + continue; } #endif /* REFCLOCK */ @@ -2664,7 +2675,7 @@ clock_select(void) nlist = j; /* - * If no survivors remain at this point, check if the modem + * If no survivors remain at this point, check if the modem * driver, local driver or orphan parent in that order. If so, * nominate the first one found as the only survivor. * Otherwise, give up and leave the island to the rats. @@ -2701,7 +2712,7 @@ clock_select(void) * by root distance. Continue voting as long as there are more * than sys_minclock survivors and the select jitter of the peer * with the worst metric is greater than the minimum peer - * jitter. Stop if we are about to discard a TRUE or PREFER + * jitter. Stop if we are about to discard a TRUE or PREFER * peer, who of course have the immunity idol. */ while (1) { @@ -2807,7 +2818,7 @@ clock_select(void) typesystem = peers[speer].peer; if (osys_peer == NULL || osys_peer == typesystem) { - sys_clockhop = 0; + sys_clockhop = 0; } else if ((x = fabs(typesystem->offset - osys_peer->offset)) < sys_mindisp) { if (sys_clockhop == 0) @@ -2981,7 +2992,7 @@ peer_xmit( ) { struct pkt xpkt; /* transmit packet */ - int sendlen, authlen; + size_t sendlen, authlen; keyid_t xkeyid = 0; /* transmit key ID */ l_fp xmt_tx, xmt_ty; @@ -3065,7 +3076,7 @@ peer_xmit( LFPTOD(&xmt_ty, peer->xleave); #ifdef DEBUG if (debug) - printf("transmit: at %ld %s->%s mode %d len %d\n", + printf("transmit: at %ld %s->%s mode %d len %zu\n", current_time, peer->dstadr ? stoa(&peer->dstadr->sin) : "-", stoa(&peer->srcadr), peer->hmode, sendlen); @@ -3105,7 +3116,7 @@ peer_xmit( * the session key is generated. */ while (1) { - + /* * Allocate and initialize a keylist if not * already done. Then, use the list in inverse @@ -3157,7 +3168,7 @@ peer_xmit( break; /* - * In symmetric modes the parameter, certificate, + * In symmetric modes the parameter, certificate, * identity, cookie and autokey exchanges are * required. The leapsecond exchange is optional. But, a * peer will not believe the other peer until the other @@ -3312,11 +3323,11 @@ peer_xmit( * Calculate the next session key. Since extension * fields are present, the cookie value is zero. */ - if (sendlen > LEN_PKT_NOMAC) { + if (sendlen > (int)LEN_PKT_NOMAC) { session_key(&peer->dstadr->sin, &peer->srcadr, xkeyid, 0, 2); } - } + } #endif /* AUTOKEY */ /* @@ -3354,7 +3365,7 @@ peer_xmit( authtrust(xkeyid, 0); #endif /* AUTOKEY */ if (sendlen > sizeof(xpkt)) { - msyslog(LOG_ERR, "proto: buffer overflow %u", sendlen); + msyslog(LOG_ERR, "proto: buffer overflow %zu", sendlen); exit (-1); } peer->t21_bytes = sendlen; @@ -3379,7 +3390,7 @@ peer_xmit( #ifdef AUTOKEY #ifdef DEBUG if (debug) - printf("transmit: at %ld %s->%s mode %d keyid %08x len %d index %d\n", + printf("transmit: at %ld %s->%s mode %d keyid %08x len %zu index %d\n", current_time, latoa(peer->dstadr), ntoa(&peer->srcadr), peer->hmode, xkeyid, sendlen, peer->keynumber); @@ -3590,7 +3601,7 @@ pool_xmit( &hints, 0, /* no retry */ &pool_name_resolved, - (void *)(u_int)pool->associd); + (void *)(intptr_t)pool->associd); if (!rc) DPRINTF(1, ("pool DNS lookup %s started\n", pool->hostname)); @@ -3611,7 +3622,7 @@ pool_xmit( return; /* out of addresses, re-query DNS next poll */ restrict_mask = restrictions(rmtadr); if (RES_FLAGS & restrict_mask) - restrict_source(rmtadr, 0, + restrict_source(rmtadr, 0, current_time + POOL_SOLICIT_WINDOW + 1); lcladr = findinterface(rmtadr); memset(&xpkt, 0, sizeof(xpkt)); @@ -3696,7 +3707,7 @@ pool_name_resolved( return; } - assoc = (associd_t)(u_int)context; + assoc = (associd_t)(intptr_t)context; pool = findpeerbyassoc(assoc); if (NULL == pool) { msyslog(LOG_ERR, diff --git a/ntpd/ntp_request.c b/ntpd/ntp_request.c index 157304b..8ffebad 100644 --- a/ntpd/ntp_request.c +++ b/ntpd/ntp_request.c @@ -58,7 +58,7 @@ struct req_proc { * Universal request codes */ static const struct req_proc univ_codes[] = { - { NO_REQUEST, NOAUTH, 0, 0 } + { NO_REQUEST, NOAUTH, 0, 0, NULL } }; static void req_ack (sockaddr_u *, endpt *, struct req_pkt *, int); @@ -231,7 +231,7 @@ static endpt *frominter; void init_request (void) { - int i; + size_t i; numrequests = 0; numresppkts = 0; @@ -261,7 +261,7 @@ req_ack( rpkt.auth_seq = AUTH_SEQ(0, 0); rpkt.implementation = inpkt->implementation; rpkt.request = inpkt->request; - rpkt.err_nitems = ERR_NITEMS(errcode, 0); + rpkt.err_nitems = ERR_NITEMS(errcode, 0); rpkt.mbz_itemsize = MBZ_ITEMSIZE(0); /* @@ -448,7 +448,7 @@ process_private( || (++ec, INFO_SEQ(inpkt->auth_seq) != 0) || (++ec, INFO_ERR(inpkt->err_nitems) != 0) || (++ec, INFO_MBZ(inpkt->mbz_itemsize) != 0) - || (++ec, rbufp->recv_length < REQ_LEN_HDR) + || (++ec, rbufp->recv_length < (int)REQ_LEN_HDR) ) { NLOG(NLOG_SYSEVENT) if (current_time >= quiet_until) { @@ -599,11 +599,10 @@ process_private( return; } if (recv_len > REQ_LEN_NOMAC + MAX_MAC_LEN) { - DPRINTF(5, ("bad pkt length %lu\n", - (u_long)recv_len)); + DPRINTF(5, ("bad pkt length %zu\n", recv_len)); msyslog(LOG_ERR, - "process_private: bad pkt length %lu", - (u_long)recv_len); + "process_private: bad pkt length %zu", + recv_len); req_ack(srcadr, inter, inpkt, INFO_ERR_FMT); return; } @@ -2076,7 +2075,7 @@ req_get_traps( { struct info_trap *it; struct ctl_trap *tr; - int i; + size_t i; if (num_ctl_traps == 0) { req_ack(srcadr, inter, inpkt, INFO_ERR_NODATA); diff --git a/ntpd/ntp_restrict.c b/ntpd/ntp_restrict.c index 6e75667..9948d54 100644 --- a/ntpd/ntp_restrict.c +++ b/ntpd/ntp_restrict.c @@ -46,7 +46,7 @@ #define MASK_IPV6_ADDR(dst, src, msk) \ do { \ int idx; \ - for (idx = 0; idx < COUNTOF((dst)->s6_addr); idx++) { \ + for (idx = 0; idx < (int)COUNTOF((dst)->s6_addr); idx++) { \ (dst)->s6_addr[idx] = (src)->s6_addr[idx] \ & (msk)->s6_addr[idx]; \ } \ @@ -298,7 +298,7 @@ match_restrict6_addr( MASK_IPV6_ADDR(&masked, addr, &res->u.v6.mask); if (ADDR6_EQ(&masked, &res->u.v6.addr) && (!(RESM_NTPONLY & res->mflags) - || NTP_PORT == port)) + || NTP_PORT == (int)port)) break; } return res; diff --git a/ntpd/ntp_scanner.c b/ntpd/ntp_scanner.c index 3e09856..a7c1992 100644 --- a/ntpd/ntp_scanner.c +++ b/ntpd/ntp_scanner.c @@ -70,12 +70,12 @@ keyword( int token ) { - int i; + size_t i; const char *text; i = token - LOWEST_KEYWORD_ID; - if (i >= 0 && i < COUNTOF(keyword_text)) + if (i < COUNTOF(keyword_text)) text = keyword_text[i]; else text = NULL; @@ -297,7 +297,7 @@ is_integer( /* Check that all the remaining characters are digits */ for (; lexeme[i] != '\0'; i++) { - if (!isdigit(lexeme[i])) + if (!isdigit((unsigned char)lexeme[i])) return FALSE; } @@ -322,7 +322,7 @@ is_u_int( int is_hex; i = 0; - if ('0' == lexeme[i] && 'x' == tolower(lexeme[i + 1])) { + if ('0' == lexeme[i] && 'x' == tolower((unsigned char)lexeme[i + 1])) { i += 2; is_hex = TRUE; } else { @@ -331,9 +331,9 @@ is_u_int( /* Check that all the remaining characters are digits */ for (; lexeme[i] != '\0'; i++) { - if (is_hex && !isxdigit(lexeme[i])) + if (is_hex && !isxdigit((unsigned char)lexeme[i])) return FALSE; - if (!is_hex && !isdigit(lexeme[i])) + if (!is_hex && !isdigit((unsigned char)lexeme[i])) return FALSE; } @@ -357,14 +357,14 @@ is_double( i++; /* Read the integer part */ - for (; lexeme[i] && isdigit(lexeme[i]); i++) + for (; lexeme[i] && isdigit((unsigned char)lexeme[i]); i++) num_digits++; /* Check for the optional decimal point */ if ('.' == lexeme[i]) { i++; /* Check for any digits after the decimal point */ - for (; lexeme[i] && isdigit(lexeme[i]); i++) + for (; lexeme[i] && isdigit((unsigned char)lexeme[i]); i++) num_digits++; } @@ -380,7 +380,7 @@ is_double( return 1; /* There is still more input, read the exponent */ - if ('e' == tolower(lexeme[i])) + if ('e' == tolower((unsigned char)lexeme[i])) i++; else return 0; @@ -390,7 +390,7 @@ is_double( i++; /* Now read the exponent part */ - while (lexeme[i] && isdigit(lexeme[i])) + while (lexeme[i] && isdigit((unsigned char)lexeme[i])) i++; /* Check if we are done */ @@ -455,7 +455,7 @@ create_string_token( * ignore end of line whitespace */ pch = lexeme; - while (*pch && isspace(*pch)) + while (*pch && isspace((unsigned char)*pch)) pch++; if (!*pch) { @@ -481,7 +481,7 @@ yylex( ) { static follby followedby = FOLLBY_TOKEN; - int i; + size_t i; int instring; int yylval_was_set; int converted; @@ -502,7 +502,7 @@ yylex( if (EOF == ch) { - if (!input_from_file || !curr_include_level) + if (!input_from_file || curr_include_level <= 0) return 0; FCLOSE(fp[curr_include_level]); @@ -640,7 +640,7 @@ yylex( } else if (is_u_int(yytext)) { yylval_was_set = TRUE; if ('0' == yytext[0] && - 'x' == tolower(yytext[1])) + 'x' == tolower((unsigned char)yytext[1])) converted = sscanf(&yytext[2], "%x", &yylval.U_int); else diff --git a/ntpd/ntp_util.c b/ntpd/ntp_util.c index a7da52b..c4bc901 100644 --- a/ntpd/ntp_util.c +++ b/ntpd/ntp_util.c @@ -679,7 +679,7 @@ record_raw_stats( int version, int mode, int stratum, - int poll, + int ppoll, int precision, double root_delay, /* seconds */ double root_dispersion,/* seconds */ @@ -702,7 +702,7 @@ record_raw_stats( stoa(srcadr), dstadr ? stoa(dstadr) : "-", ulfptoa(t1, 9), ulfptoa(t2, 9), ulfptoa(t3, 9), ulfptoa(t4, 9), - leap, version, mode, stratum, poll, precision, + leap, version, mode, stratum, ppoll, precision, root_delay, root_dispersion, refid_str(refid, stratum)); fflush(rawstats.fp); } diff --git a/ntpd/ntpd-opts.c b/ntpd/ntpd-opts.c index 4c298c5..910689d 100644 --- a/ntpd/ntpd-opts.c +++ b/ntpd/ntpd-opts.c @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpd-opts.c) * - * It has been AutoGen-ed December 2, 2014 at 08:54:08 AM by AutoGen 5.18.5pre4 + * It has been AutoGen-ed April 7, 2015 at 04:23:14 AM by AutoGen 5.18.5pre4 * From the definitions ntpd-opts.def * and the template file options * @@ -18,7 +18,7 @@ * The ntpd program is copyrighted and licensed * under the following terms: * - * Copyright (C) 1970-2014 The University of Delaware, all rights reserved. + * Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved. * This is free software. It is licensed for use, modification and * redistribution under the terms of the NTP License, copies of which * can be seen at: @@ -31,7 +31,7 @@ * both the copyright notice and this permission notice appear in * supporting documentation, and that the name The University of Delaware not be used in * advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. The University of Delaware makes no + * without specific, written prior permission. The University of Delaware and Network Time Foundation makes no * representations about the suitability this software for any purpose. It * is provided "as is" without express or implied warranty. */ @@ -50,7 +50,7 @@ extern "C" { #endif extern FILE * option_usage_fp; #define zCopyright (ntpd_opt_strs+0) -#define zLicenseDescrip (ntpd_opt_strs+314) +#define zLicenseDescrip (ntpd_opt_strs+340) /* * global included definitions @@ -74,150 +74,154 @@ extern FILE * option_usage_fp; /** * static const strings for ntpd options */ -static char const ntpd_opt_strs[3011] = -/* 0 */ "ntpd 4.2.7p482\n" - "Copyright (C) 1970-2014 The University of Delaware, all rights reserved.\n" +static char const ntpd_opt_strs[3129] = +/* 0 */ "ntpd 4.2.8p2\n" + "Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.\n" "This is free software. It is licensed for use, modification and\n" "redistribution under the terms of the NTP License, copies of which\n" "can be seen at:\n" " \n" " \n\0" -/* 314 */ "Permission to use, copy, modify, and distribute this software and its\n" +/* 340 */ "Permission to use, copy, modify, and distribute this software and its\n" "documentation for any purpose with or without fee is hereby granted,\n" "provided that the above copyright notice appears in all copies and that\n" "both the copyright notice and this permission notice appear in supporting\n" "documentation, and that the name The University of Delaware not be used in\n" "advertising or publicity pertaining to distribution of the software without\n" - "specific, written prior permission. The University of Delaware makes no\n" - "representations about the suitability this software for any purpose. It is\n" - "provided \"as is\" without express or implied warranty.\n\0" -/* 954 */ "Force IPv4 DNS name resolution\0" -/* 985 */ "IPV4\0" -/* 990 */ "ipv4\0" -/* 995 */ "Force IPv6 DNS name resolution\0" -/* 1026 */ "IPV6\0" -/* 1031 */ "ipv6\0" -/* 1036 */ "Require crypto authentication\0" -/* 1066 */ "AUTHREQ\0" -/* 1074 */ "authreq\0" -/* 1082 */ "Do not require crypto authentication\0" -/* 1119 */ "AUTHNOREQ\0" -/* 1129 */ "authnoreq\0" -/* 1139 */ "Allow us to sync to broadcast servers\0" -/* 1177 */ "BCASTSYNC\0" -/* 1187 */ "bcastsync\0" -/* 1197 */ "configuration file name\0" -/* 1221 */ "CONFIGFILE\0" -/* 1232 */ "configfile\0" -/* 1243 */ "Increase debug verbosity level\0" -/* 1274 */ "DEBUG_LEVEL\0" -/* 1286 */ "debug-level\0" -/* 1298 */ "Set the debug verbosity level\0" -/* 1328 */ "SET_DEBUG_LEVEL\0" -/* 1344 */ "set-debug-level\0" -/* 1360 */ "frequency drift file name\0" -/* 1386 */ "DRIFTFILE\0" -/* 1396 */ "driftfile\0" -/* 1406 */ "Allow the first adjustment to be Big\0" -/* 1443 */ "PANICGATE\0" -/* 1453 */ "panicgate\0" -/* 1463 */ "Jail directory\0" -/* 1478 */ "JAILDIR\0" -/* 1486 */ "jaildir\0" -/* 1494 */ "built without --enable-clockctl or --enable-linuxcaps or --enable-solarisprivs\0" -/* 1573 */ "Listen on an interface name or address\0" -/* 1612 */ "INTERFACE\0" -/* 1622 */ "interface\0" -/* 1632 */ "path to symmetric keys\0" -/* 1655 */ "KEYFILE\0" -/* 1663 */ "keyfile\0" -/* 1671 */ "path to the log file\0" -/* 1692 */ "LOGFILE\0" -/* 1700 */ "logfile\0" -/* 1708 */ "Do not listen to virtual interfaces\0" -/* 1744 */ "NOVIRTUALIPS\0" -/* 1757 */ "novirtualips\0" -/* 1770 */ "Modify Multimedia Timer (Windows only)\0" -/* 1809 */ "MODIFYMMTIMER\0" -/* 1823 */ "modifymmtimer\0" -/* 1837 */ "Do not fork\0" -/* 1849 */ "NOFORK\0" -/* 1856 */ "nofork\0" -/* 1863 */ "Run at high priority\0" -/* 1884 */ "NICE\0" -/* 1889 */ "nice\0" -/* 1894 */ "path to the PID file\0" -/* 1915 */ "PIDFILE\0" -/* 1923 */ "pidfile\0" -/* 1931 */ "Process priority\0" -/* 1948 */ "PRIORITY\0" -/* 1957 */ "priority\0" -/* 1966 */ "Set the time and quit\0" -/* 1988 */ "QUIT\0" -/* 1993 */ "quit\0" -/* 1998 */ "Broadcast/propagation delay\0" -/* 2026 */ "PROPAGATIONDELAY\0" -/* 2043 */ "propagationdelay\0" -/* 2060 */ "Save parsed configuration and quit\0" -/* 2095 */ "SAVECONFIGQUIT\0" -/* 2110 */ "saveconfigquit\0" -/* 2125 */ "Statistics file location\0" -/* 2150 */ "STATSDIR\0" -/* 2159 */ "statsdir\0" -/* 2168 */ "Trusted key number\0" -/* 2187 */ "TRUSTEDKEY\0" -/* 2198 */ "trustedkey\0" -/* 2209 */ "Run as userid (or userid:groupid)\0" -/* 2243 */ "USER\0" -/* 2248 */ "user\0" -/* 2253 */ "interval in seconds between scans for new or dropped interfaces\0" -/* 2317 */ "UPDATEINTERVAL\0" -/* 2332 */ "updateinterval\0" -/* 2347 */ "make ARG an ntp variable (RW)\0" -/* 2377 */ "VAR\0" -/* 2381 */ "var\0" -/* 2385 */ "make ARG an ntp variable (RW|DEF)\0" -/* 2419 */ "DVAR\0" -/* 2424 */ "dvar\0" -/* 2429 */ "Seconds to wait for first clock sync\0" -/* 2466 */ "WAIT_SYNC\0" -/* 2476 */ "wait-sync\0" -/* 2486 */ "Slew up to 600 seconds\0" -/* 2509 */ "SLEW\0" -/* 2514 */ "slew\0" -/* 2519 */ "Use CPU cycle counter (Windows only)\0" -/* 2556 */ "USEPCC\0" -/* 2563 */ "usepcc\0" -/* 2570 */ "Force CPU cycle counter use (Windows only)\0" -/* 2613 */ "PCCFREQ\0" -/* 2621 */ "pccfreq\0" -/* 2629 */ "Register with mDNS as a NTP server\0" -/* 2664 */ "MDNS\0" -/* 2669 */ "mdns\0" -/* 2674 */ "display extended usage information and exit\0" -/* 2718 */ "help\0" -/* 2723 */ "extended usage information passed thru pager\0" -/* 2768 */ "more-help\0" -/* 2778 */ "output version information and exit\0" -/* 2814 */ "version\0" -/* 2822 */ "NTPD\0" -/* 2827 */ "ntpd - NTP daemon program - Ver. 4.2.7p482\n" + "specific, written prior permission. The University of Delaware and Network\n" + "Time Foundation makes no representations about the suitability this\n" + "software for any purpose. It is provided \"as is\" without express or\n" + "implied warranty.\n\0" +/* 1008 */ "Force IPv4 DNS name resolution\0" +/* 1039 */ "IPV4\0" +/* 1044 */ "ipv4\0" +/* 1049 */ "Force IPv6 DNS name resolution\0" +/* 1080 */ "IPV6\0" +/* 1085 */ "ipv6\0" +/* 1090 */ "Require crypto authentication\0" +/* 1120 */ "AUTHREQ\0" +/* 1128 */ "authreq\0" +/* 1136 */ "Do not require crypto authentication\0" +/* 1173 */ "AUTHNOREQ\0" +/* 1183 */ "authnoreq\0" +/* 1193 */ "Allow us to sync to broadcast servers\0" +/* 1231 */ "BCASTSYNC\0" +/* 1241 */ "bcastsync\0" +/* 1251 */ "configuration file name\0" +/* 1275 */ "CONFIGFILE\0" +/* 1286 */ "configfile\0" +/* 1297 */ "Increase debug verbosity level\0" +/* 1328 */ "DEBUG_LEVEL\0" +/* 1340 */ "debug-level\0" +/* 1352 */ "Set the debug verbosity level\0" +/* 1382 */ "SET_DEBUG_LEVEL\0" +/* 1398 */ "set-debug-level\0" +/* 1414 */ "frequency drift file name\0" +/* 1440 */ "DRIFTFILE\0" +/* 1450 */ "driftfile\0" +/* 1460 */ "Allow the first adjustment to be Big\0" +/* 1497 */ "PANICGATE\0" +/* 1507 */ "panicgate\0" +/* 1517 */ "Step any initial offset correction.\0" +/* 1553 */ "FORCE_STEP_ONCE\0" +/* 1569 */ "force-step-once\0" +/* 1585 */ "Jail directory\0" +/* 1600 */ "JAILDIR\0" +/* 1608 */ "jaildir\0" +/* 1616 */ "built without --enable-clockctl or --enable-linuxcaps or --enable-solarisprivs\0" +/* 1695 */ "Listen on an interface name or address\0" +/* 1734 */ "INTERFACE\0" +/* 1744 */ "interface\0" +/* 1754 */ "path to symmetric keys\0" +/* 1777 */ "KEYFILE\0" +/* 1785 */ "keyfile\0" +/* 1793 */ "path to the log file\0" +/* 1814 */ "LOGFILE\0" +/* 1822 */ "logfile\0" +/* 1830 */ "Do not listen to virtual interfaces\0" +/* 1866 */ "NOVIRTUALIPS\0" +/* 1879 */ "novirtualips\0" +/* 1892 */ "Modify Multimedia Timer (Windows only)\0" +/* 1931 */ "MODIFYMMTIMER\0" +/* 1945 */ "modifymmtimer\0" +/* 1959 */ "Do not fork\0" +/* 1971 */ "NOFORK\0" +/* 1978 */ "nofork\0" +/* 1985 */ "Run at high priority\0" +/* 2006 */ "NICE\0" +/* 2011 */ "nice\0" +/* 2016 */ "path to the PID file\0" +/* 2037 */ "PIDFILE\0" +/* 2045 */ "pidfile\0" +/* 2053 */ "Process priority\0" +/* 2070 */ "PRIORITY\0" +/* 2079 */ "priority\0" +/* 2088 */ "Set the time and quit\0" +/* 2110 */ "QUIT\0" +/* 2115 */ "quit\0" +/* 2120 */ "Broadcast/propagation delay\0" +/* 2148 */ "PROPAGATIONDELAY\0" +/* 2165 */ "propagationdelay\0" +/* 2182 */ "Save parsed configuration and quit\0" +/* 2217 */ "SAVECONFIGQUIT\0" +/* 2232 */ "saveconfigquit\0" +/* 2247 */ "Statistics file location\0" +/* 2272 */ "STATSDIR\0" +/* 2281 */ "statsdir\0" +/* 2290 */ "Trusted key number\0" +/* 2309 */ "TRUSTEDKEY\0" +/* 2320 */ "trustedkey\0" +/* 2331 */ "Run as userid (or userid:groupid)\0" +/* 2365 */ "USER\0" +/* 2370 */ "user\0" +/* 2375 */ "interval in seconds between scans for new or dropped interfaces\0" +/* 2439 */ "UPDATEINTERVAL\0" +/* 2454 */ "updateinterval\0" +/* 2469 */ "make ARG an ntp variable (RW)\0" +/* 2499 */ "VAR\0" +/* 2503 */ "var\0" +/* 2507 */ "make ARG an ntp variable (RW|DEF)\0" +/* 2541 */ "DVAR\0" +/* 2546 */ "dvar\0" +/* 2551 */ "Seconds to wait for first clock sync\0" +/* 2588 */ "WAIT_SYNC\0" +/* 2598 */ "wait-sync\0" +/* 2608 */ "Slew up to 600 seconds\0" +/* 2631 */ "SLEW\0" +/* 2636 */ "slew\0" +/* 2641 */ "Use CPU cycle counter (Windows only)\0" +/* 2678 */ "USEPCC\0" +/* 2685 */ "usepcc\0" +/* 2692 */ "Force CPU cycle counter use (Windows only)\0" +/* 2735 */ "PCCFREQ\0" +/* 2743 */ "pccfreq\0" +/* 2751 */ "Register with mDNS as a NTP server\0" +/* 2786 */ "MDNS\0" +/* 2791 */ "mdns\0" +/* 2796 */ "display extended usage information and exit\0" +/* 2840 */ "help\0" +/* 2845 */ "extended usage information passed thru pager\0" +/* 2890 */ "more-help\0" +/* 2900 */ "output version information and exit\0" +/* 2936 */ "version\0" +/* 2944 */ "NTPD\0" +/* 2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p2\n" "Usage: %s [ - [] | --[{=| }] ]... \\\n" "\t\t[ ... ]\n\0" -/* 2960 */ "http://bugs.ntp.org, bugs@ntp.org\0" -/* 2994 */ "\n\0" -/* 2996 */ "ntpd 4.2.7p482"; +/* 3080 */ "http://bugs.ntp.org, bugs@ntp.org\0" +/* 3114 */ "\n\0" +/* 3116 */ "ntpd 4.2.8p2"; /** * ipv4 option description with * "Must also have options" and "Incompatible options": */ /** Descriptive text for the ipv4 option */ -#define IPV4_DESC (ntpd_opt_strs+954) +#define IPV4_DESC (ntpd_opt_strs+1008) /** Upper-cased name for the ipv4 option */ -#define IPV4_NAME (ntpd_opt_strs+985) +#define IPV4_NAME (ntpd_opt_strs+1039) /** Name string for the ipv4 option */ -#define IPV4_name (ntpd_opt_strs+990) +#define IPV4_name (ntpd_opt_strs+1044) /** Other options that appear in conjunction with the ipv4 option */ static int const aIpv4CantList[] = { INDEX_OPT_IPV6, NO_EQUIVALENT }; @@ -229,11 +233,11 @@ static int const aIpv4CantList[] = { * "Must also have options" and "Incompatible options": */ /** Descriptive text for the ipv6 option */ -#define IPV6_DESC (ntpd_opt_strs+995) +#define IPV6_DESC (ntpd_opt_strs+1049) /** Upper-cased name for the ipv6 option */ -#define IPV6_NAME (ntpd_opt_strs+1026) +#define IPV6_NAME (ntpd_opt_strs+1080) /** Name string for the ipv6 option */ -#define IPV6_name (ntpd_opt_strs+1031) +#define IPV6_name (ntpd_opt_strs+1085) /** Other options that appear in conjunction with the ipv6 option */ static int const aIpv6CantList[] = { INDEX_OPT_IPV4, NO_EQUIVALENT }; @@ -245,11 +249,11 @@ static int const aIpv6CantList[] = { * "Must also have options" and "Incompatible options": */ /** Descriptive text for the authreq option */ -#define AUTHREQ_DESC (ntpd_opt_strs+1036) +#define AUTHREQ_DESC (ntpd_opt_strs+1090) /** Upper-cased name for the authreq option */ -#define AUTHREQ_NAME (ntpd_opt_strs+1066) +#define AUTHREQ_NAME (ntpd_opt_strs+1120) /** Name string for the authreq option */ -#define AUTHREQ_name (ntpd_opt_strs+1074) +#define AUTHREQ_name (ntpd_opt_strs+1128) /** Other options that appear in conjunction with the authreq option */ static int const aAuthreqCantList[] = { INDEX_OPT_AUTHNOREQ, NO_EQUIVALENT }; @@ -261,11 +265,11 @@ static int const aAuthreqCantList[] = { * "Must also have options" and "Incompatible options": */ /** Descriptive text for the authnoreq option */ -#define AUTHNOREQ_DESC (ntpd_opt_strs+1082) +#define AUTHNOREQ_DESC (ntpd_opt_strs+1136) /** Upper-cased name for the authnoreq option */ -#define AUTHNOREQ_NAME (ntpd_opt_strs+1119) +#define AUTHNOREQ_NAME (ntpd_opt_strs+1173) /** Name string for the authnoreq option */ -#define AUTHNOREQ_name (ntpd_opt_strs+1129) +#define AUTHNOREQ_name (ntpd_opt_strs+1183) /** Other options that appear in conjunction with the authnoreq option */ static int const aAuthnoreqCantList[] = { INDEX_OPT_AUTHREQ, NO_EQUIVALENT }; @@ -276,11 +280,11 @@ static int const aAuthnoreqCantList[] = { * bcastsync option description: */ /** Descriptive text for the bcastsync option */ -#define BCASTSYNC_DESC (ntpd_opt_strs+1139) +#define BCASTSYNC_DESC (ntpd_opt_strs+1193) /** Upper-cased name for the bcastsync option */ -#define BCASTSYNC_NAME (ntpd_opt_strs+1177) +#define BCASTSYNC_NAME (ntpd_opt_strs+1231) /** Name string for the bcastsync option */ -#define BCASTSYNC_name (ntpd_opt_strs+1187) +#define BCASTSYNC_name (ntpd_opt_strs+1241) /** Compiled in flag settings for the bcastsync option */ #define BCASTSYNC_FLAGS (OPTST_DISABLED) @@ -288,11 +292,11 @@ static int const aAuthnoreqCantList[] = { * configfile option description: */ /** Descriptive text for the configfile option */ -#define CONFIGFILE_DESC (ntpd_opt_strs+1197) +#define CONFIGFILE_DESC (ntpd_opt_strs+1251) /** Upper-cased name for the configfile option */ -#define CONFIGFILE_NAME (ntpd_opt_strs+1221) +#define CONFIGFILE_NAME (ntpd_opt_strs+1275) /** Name string for the configfile option */ -#define CONFIGFILE_name (ntpd_opt_strs+1232) +#define CONFIGFILE_name (ntpd_opt_strs+1286) /** Compiled in flag settings for the configfile option */ #define CONFIGFILE_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -301,11 +305,11 @@ static int const aAuthnoreqCantList[] = { * debug-level option description: */ /** Descriptive text for the debug-level option */ -#define DEBUG_LEVEL_DESC (ntpd_opt_strs+1243) +#define DEBUG_LEVEL_DESC (ntpd_opt_strs+1297) /** Upper-cased name for the debug-level option */ -#define DEBUG_LEVEL_NAME (ntpd_opt_strs+1274) +#define DEBUG_LEVEL_NAME (ntpd_opt_strs+1328) /** Name string for the debug-level option */ -#define DEBUG_LEVEL_name (ntpd_opt_strs+1286) +#define DEBUG_LEVEL_name (ntpd_opt_strs+1340) /** Compiled in flag settings for the debug-level option */ #define DEBUG_LEVEL_FLAGS (OPTST_DISABLED) @@ -313,11 +317,11 @@ static int const aAuthnoreqCantList[] = { * set-debug-level option description: */ /** Descriptive text for the set-debug-level option */ -#define SET_DEBUG_LEVEL_DESC (ntpd_opt_strs+1298) +#define SET_DEBUG_LEVEL_DESC (ntpd_opt_strs+1352) /** Upper-cased name for the set-debug-level option */ -#define SET_DEBUG_LEVEL_NAME (ntpd_opt_strs+1328) +#define SET_DEBUG_LEVEL_NAME (ntpd_opt_strs+1382) /** Name string for the set-debug-level option */ -#define SET_DEBUG_LEVEL_name (ntpd_opt_strs+1344) +#define SET_DEBUG_LEVEL_name (ntpd_opt_strs+1398) /** Compiled in flag settings for the set-debug-level option */ #define SET_DEBUG_LEVEL_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC)) @@ -326,11 +330,11 @@ static int const aAuthnoreqCantList[] = { * driftfile option description: */ /** Descriptive text for the driftfile option */ -#define DRIFTFILE_DESC (ntpd_opt_strs+1360) +#define DRIFTFILE_DESC (ntpd_opt_strs+1414) /** Upper-cased name for the driftfile option */ -#define DRIFTFILE_NAME (ntpd_opt_strs+1386) +#define DRIFTFILE_NAME (ntpd_opt_strs+1440) /** Name string for the driftfile option */ -#define DRIFTFILE_name (ntpd_opt_strs+1396) +#define DRIFTFILE_name (ntpd_opt_strs+1450) /** Compiled in flag settings for the driftfile option */ #define DRIFTFILE_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -339,24 +343,36 @@ static int const aAuthnoreqCantList[] = { * panicgate option description: */ /** Descriptive text for the panicgate option */ -#define PANICGATE_DESC (ntpd_opt_strs+1406) +#define PANICGATE_DESC (ntpd_opt_strs+1460) /** Upper-cased name for the panicgate option */ -#define PANICGATE_NAME (ntpd_opt_strs+1443) +#define PANICGATE_NAME (ntpd_opt_strs+1497) /** Name string for the panicgate option */ -#define PANICGATE_name (ntpd_opt_strs+1453) +#define PANICGATE_name (ntpd_opt_strs+1507) /** Compiled in flag settings for the panicgate option */ #define PANICGATE_FLAGS (OPTST_DISABLED) +/** + * force_step_once option description: + */ +/** Descriptive text for the force_step_once option */ +#define FORCE_STEP_ONCE_DESC (ntpd_opt_strs+1517) +/** Upper-cased name for the force_step_once option */ +#define FORCE_STEP_ONCE_NAME (ntpd_opt_strs+1553) +/** Name string for the force_step_once option */ +#define FORCE_STEP_ONCE_name (ntpd_opt_strs+1569) +/** Compiled in flag settings for the force_step_once option */ +#define FORCE_STEP_ONCE_FLAGS (OPTST_DISABLED) + /** * jaildir option description: */ #ifdef HAVE_DROPROOT /** Descriptive text for the jaildir option */ -#define JAILDIR_DESC (ntpd_opt_strs+1463) +#define JAILDIR_DESC (ntpd_opt_strs+1585) /** Upper-cased name for the jaildir option */ -#define JAILDIR_NAME (ntpd_opt_strs+1478) +#define JAILDIR_NAME (ntpd_opt_strs+1600) /** Name string for the jaildir option */ -#define JAILDIR_name (ntpd_opt_strs+1486) +#define JAILDIR_name (ntpd_opt_strs+1608) /** Compiled in flag settings for the jaildir option */ #define JAILDIR_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -365,19 +381,19 @@ static int const aAuthnoreqCantList[] = { #define JAILDIR_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) #define JAILDIR_NAME NULL /** Descriptive text for the jaildir option */ -#define JAILDIR_DESC (ntpd_opt_strs+1494) -#define JAILDIR_name (ntpd_opt_strs+1486) +#define JAILDIR_DESC (ntpd_opt_strs+1616) +#define JAILDIR_name (ntpd_opt_strs+1608) #endif /* HAVE_DROPROOT */ /** * interface option description: */ /** Descriptive text for the interface option */ -#define INTERFACE_DESC (ntpd_opt_strs+1573) +#define INTERFACE_DESC (ntpd_opt_strs+1695) /** Upper-cased name for the interface option */ -#define INTERFACE_NAME (ntpd_opt_strs+1612) +#define INTERFACE_NAME (ntpd_opt_strs+1734) /** Name string for the interface option */ -#define INTERFACE_name (ntpd_opt_strs+1622) +#define INTERFACE_name (ntpd_opt_strs+1744) /** Compiled in flag settings for the interface option */ #define INTERFACE_FLAGS (OPTST_DISABLED | OPTST_STACKED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -386,11 +402,11 @@ static int const aAuthnoreqCantList[] = { * keyfile option description: */ /** Descriptive text for the keyfile option */ -#define KEYFILE_DESC (ntpd_opt_strs+1632) +#define KEYFILE_DESC (ntpd_opt_strs+1754) /** Upper-cased name for the keyfile option */ -#define KEYFILE_NAME (ntpd_opt_strs+1655) +#define KEYFILE_NAME (ntpd_opt_strs+1777) /** Name string for the keyfile option */ -#define KEYFILE_name (ntpd_opt_strs+1663) +#define KEYFILE_name (ntpd_opt_strs+1785) /** Compiled in flag settings for the keyfile option */ #define KEYFILE_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -399,11 +415,11 @@ static int const aAuthnoreqCantList[] = { * logfile option description: */ /** Descriptive text for the logfile option */ -#define LOGFILE_DESC (ntpd_opt_strs+1671) +#define LOGFILE_DESC (ntpd_opt_strs+1793) /** Upper-cased name for the logfile option */ -#define LOGFILE_NAME (ntpd_opt_strs+1692) +#define LOGFILE_NAME (ntpd_opt_strs+1814) /** Name string for the logfile option */ -#define LOGFILE_name (ntpd_opt_strs+1700) +#define LOGFILE_name (ntpd_opt_strs+1822) /** Compiled in flag settings for the logfile option */ #define LOGFILE_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -412,11 +428,11 @@ static int const aAuthnoreqCantList[] = { * novirtualips option description: */ /** Descriptive text for the novirtualips option */ -#define NOVIRTUALIPS_DESC (ntpd_opt_strs+1708) +#define NOVIRTUALIPS_DESC (ntpd_opt_strs+1830) /** Upper-cased name for the novirtualips option */ -#define NOVIRTUALIPS_NAME (ntpd_opt_strs+1744) +#define NOVIRTUALIPS_NAME (ntpd_opt_strs+1866) /** Name string for the novirtualips option */ -#define NOVIRTUALIPS_name (ntpd_opt_strs+1757) +#define NOVIRTUALIPS_name (ntpd_opt_strs+1879) /** Compiled in flag settings for the novirtualips option */ #define NOVIRTUALIPS_FLAGS (OPTST_DISABLED) @@ -425,11 +441,11 @@ static int const aAuthnoreqCantList[] = { */ #ifdef SYS_WINNT /** Descriptive text for the modifymmtimer option */ -#define MODIFYMMTIMER_DESC (ntpd_opt_strs+1770) +#define MODIFYMMTIMER_DESC (ntpd_opt_strs+1892) /** Upper-cased name for the modifymmtimer option */ -#define MODIFYMMTIMER_NAME (ntpd_opt_strs+1809) +#define MODIFYMMTIMER_NAME (ntpd_opt_strs+1931) /** Name string for the modifymmtimer option */ -#define MODIFYMMTIMER_name (ntpd_opt_strs+1823) +#define MODIFYMMTIMER_name (ntpd_opt_strs+1945) /** Compiled in flag settings for the modifymmtimer option */ #define MODIFYMMTIMER_FLAGS (OPTST_DISABLED) @@ -445,11 +461,11 @@ static int const aAuthnoreqCantList[] = { * "Must also have options" and "Incompatible options": */ /** Descriptive text for the nofork option */ -#define NOFORK_DESC (ntpd_opt_strs+1837) +#define NOFORK_DESC (ntpd_opt_strs+1959) /** Upper-cased name for the nofork option */ -#define NOFORK_NAME (ntpd_opt_strs+1849) +#define NOFORK_NAME (ntpd_opt_strs+1971) /** Name string for the nofork option */ -#define NOFORK_name (ntpd_opt_strs+1856) +#define NOFORK_name (ntpd_opt_strs+1978) /** Other options that appear in conjunction with the nofork option */ static int const aNoforkCantList[] = { INDEX_OPT_WAIT_SYNC, NO_EQUIVALENT }; @@ -460,11 +476,11 @@ static int const aNoforkCantList[] = { * nice option description: */ /** Descriptive text for the nice option */ -#define NICE_DESC (ntpd_opt_strs+1863) +#define NICE_DESC (ntpd_opt_strs+1985) /** Upper-cased name for the nice option */ -#define NICE_NAME (ntpd_opt_strs+1884) +#define NICE_NAME (ntpd_opt_strs+2006) /** Name string for the nice option */ -#define NICE_name (ntpd_opt_strs+1889) +#define NICE_name (ntpd_opt_strs+2011) /** Compiled in flag settings for the nice option */ #define NICE_FLAGS (OPTST_DISABLED) @@ -472,11 +488,11 @@ static int const aNoforkCantList[] = { * pidfile option description: */ /** Descriptive text for the pidfile option */ -#define PIDFILE_DESC (ntpd_opt_strs+1894) +#define PIDFILE_DESC (ntpd_opt_strs+2016) /** Upper-cased name for the pidfile option */ -#define PIDFILE_NAME (ntpd_opt_strs+1915) +#define PIDFILE_NAME (ntpd_opt_strs+2037) /** Name string for the pidfile option */ -#define PIDFILE_name (ntpd_opt_strs+1923) +#define PIDFILE_name (ntpd_opt_strs+2045) /** Compiled in flag settings for the pidfile option */ #define PIDFILE_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -485,11 +501,11 @@ static int const aNoforkCantList[] = { * priority option description: */ /** Descriptive text for the priority option */ -#define PRIORITY_DESC (ntpd_opt_strs+1931) +#define PRIORITY_DESC (ntpd_opt_strs+2053) /** Upper-cased name for the priority option */ -#define PRIORITY_NAME (ntpd_opt_strs+1948) +#define PRIORITY_NAME (ntpd_opt_strs+2070) /** Name string for the priority option */ -#define PRIORITY_name (ntpd_opt_strs+1957) +#define PRIORITY_name (ntpd_opt_strs+2079) /** Compiled in flag settings for the priority option */ #define PRIORITY_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC)) @@ -499,11 +515,11 @@ static int const aNoforkCantList[] = { * "Must also have options" and "Incompatible options": */ /** Descriptive text for the quit option */ -#define QUIT_DESC (ntpd_opt_strs+1966) +#define QUIT_DESC (ntpd_opt_strs+2088) /** Upper-cased name for the quit option */ -#define QUIT_NAME (ntpd_opt_strs+1988) +#define QUIT_NAME (ntpd_opt_strs+2110) /** Name string for the quit option */ -#define QUIT_name (ntpd_opt_strs+1993) +#define QUIT_name (ntpd_opt_strs+2115) /** Other options that appear in conjunction with the quit option */ static int const aQuitCantList[] = { INDEX_OPT_SAVECONFIGQUIT, @@ -515,11 +531,11 @@ static int const aQuitCantList[] = { * propagationdelay option description: */ /** Descriptive text for the propagationdelay option */ -#define PROPAGATIONDELAY_DESC (ntpd_opt_strs+1998) +#define PROPAGATIONDELAY_DESC (ntpd_opt_strs+2120) /** Upper-cased name for the propagationdelay option */ -#define PROPAGATIONDELAY_NAME (ntpd_opt_strs+2026) +#define PROPAGATIONDELAY_NAME (ntpd_opt_strs+2148) /** Name string for the propagationdelay option */ -#define PROPAGATIONDELAY_name (ntpd_opt_strs+2043) +#define PROPAGATIONDELAY_name (ntpd_opt_strs+2165) /** Compiled in flag settings for the propagationdelay option */ #define PROPAGATIONDELAY_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -530,11 +546,11 @@ static int const aQuitCantList[] = { */ #ifdef SAVECONFIG /** Descriptive text for the saveconfigquit option */ -#define SAVECONFIGQUIT_DESC (ntpd_opt_strs+2060) +#define SAVECONFIGQUIT_DESC (ntpd_opt_strs+2182) /** Upper-cased name for the saveconfigquit option */ -#define SAVECONFIGQUIT_NAME (ntpd_opt_strs+2095) +#define SAVECONFIGQUIT_NAME (ntpd_opt_strs+2217) /** Name string for the saveconfigquit option */ -#define SAVECONFIGQUIT_name (ntpd_opt_strs+2110) +#define SAVECONFIGQUIT_name (ntpd_opt_strs+2232) /** Other options that appear in conjunction with the saveconfigquit option */ static int const aSaveconfigquitCantList[] = { INDEX_OPT_QUIT, @@ -555,11 +571,11 @@ static int const aSaveconfigquitCantList[] = { * statsdir option description: */ /** Descriptive text for the statsdir option */ -#define STATSDIR_DESC (ntpd_opt_strs+2125) +#define STATSDIR_DESC (ntpd_opt_strs+2247) /** Upper-cased name for the statsdir option */ -#define STATSDIR_NAME (ntpd_opt_strs+2150) +#define STATSDIR_NAME (ntpd_opt_strs+2272) /** Name string for the statsdir option */ -#define STATSDIR_name (ntpd_opt_strs+2159) +#define STATSDIR_name (ntpd_opt_strs+2281) /** Compiled in flag settings for the statsdir option */ #define STATSDIR_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -568,11 +584,11 @@ static int const aSaveconfigquitCantList[] = { * trustedkey option description: */ /** Descriptive text for the trustedkey option */ -#define TRUSTEDKEY_DESC (ntpd_opt_strs+2168) +#define TRUSTEDKEY_DESC (ntpd_opt_strs+2290) /** Upper-cased name for the trustedkey option */ -#define TRUSTEDKEY_NAME (ntpd_opt_strs+2187) +#define TRUSTEDKEY_NAME (ntpd_opt_strs+2309) /** Name string for the trustedkey option */ -#define TRUSTEDKEY_name (ntpd_opt_strs+2198) +#define TRUSTEDKEY_name (ntpd_opt_strs+2320) /** Compiled in flag settings for the trustedkey option */ #define TRUSTEDKEY_FLAGS (OPTST_DISABLED | OPTST_STACKED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -582,11 +598,11 @@ static int const aSaveconfigquitCantList[] = { */ #ifdef HAVE_DROPROOT /** Descriptive text for the user option */ -#define USER_DESC (ntpd_opt_strs+2209) +#define USER_DESC (ntpd_opt_strs+2331) /** Upper-cased name for the user option */ -#define USER_NAME (ntpd_opt_strs+2243) +#define USER_NAME (ntpd_opt_strs+2365) /** Name string for the user option */ -#define USER_name (ntpd_opt_strs+2248) +#define USER_name (ntpd_opt_strs+2370) /** Compiled in flag settings for the user option */ #define USER_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -595,19 +611,19 @@ static int const aSaveconfigquitCantList[] = { #define USER_FLAGS (OPTST_OMITTED | OPTST_NO_INIT) #define USER_NAME NULL /** Descriptive text for the user option */ -#define USER_DESC (ntpd_opt_strs+1494) -#define USER_name (ntpd_opt_strs+2248) +#define USER_DESC (ntpd_opt_strs+1616) +#define USER_name (ntpd_opt_strs+2370) #endif /* HAVE_DROPROOT */ /** * updateinterval option description: */ /** Descriptive text for the updateinterval option */ -#define UPDATEINTERVAL_DESC (ntpd_opt_strs+2253) +#define UPDATEINTERVAL_DESC (ntpd_opt_strs+2375) /** Upper-cased name for the updateinterval option */ -#define UPDATEINTERVAL_NAME (ntpd_opt_strs+2317) +#define UPDATEINTERVAL_NAME (ntpd_opt_strs+2439) /** Name string for the updateinterval option */ -#define UPDATEINTERVAL_name (ntpd_opt_strs+2332) +#define UPDATEINTERVAL_name (ntpd_opt_strs+2454) /** Compiled in flag settings for the updateinterval option */ #define UPDATEINTERVAL_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_NUMERIC)) @@ -616,11 +632,11 @@ static int const aSaveconfigquitCantList[] = { * var option description: */ /** Descriptive text for the var option */ -#define VAR_DESC (ntpd_opt_strs+2347) +#define VAR_DESC (ntpd_opt_strs+2469) /** Upper-cased name for the var option */ -#define VAR_NAME (ntpd_opt_strs+2377) +#define VAR_NAME (ntpd_opt_strs+2499) /** Name string for the var option */ -#define VAR_name (ntpd_opt_strs+2381) +#define VAR_name (ntpd_opt_strs+2503) /** Compiled in flag settings for the var option */ #define VAR_FLAGS (OPTST_DISABLED | OPTST_STACKED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -629,11 +645,11 @@ static int const aSaveconfigquitCantList[] = { * dvar option description: */ /** Descriptive text for the dvar option */ -#define DVAR_DESC (ntpd_opt_strs+2385) +#define DVAR_DESC (ntpd_opt_strs+2507) /** Upper-cased name for the dvar option */ -#define DVAR_NAME (ntpd_opt_strs+2419) +#define DVAR_NAME (ntpd_opt_strs+2541) /** Name string for the dvar option */ -#define DVAR_name (ntpd_opt_strs+2424) +#define DVAR_name (ntpd_opt_strs+2546) /** Compiled in flag settings for the dvar option */ #define DVAR_FLAGS (OPTST_DISABLED | OPTST_STACKED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -644,11 +660,11 @@ static int const aSaveconfigquitCantList[] = { */ #ifdef HAVE_WORKING_FORK /** Descriptive text for the wait-sync option */ -#define WAIT_SYNC_DESC (ntpd_opt_strs+2429) +#define WAIT_SYNC_DESC (ntpd_opt_strs+2551) /** Upper-cased name for the wait-sync option */ -#define WAIT_SYNC_NAME (ntpd_opt_strs+2466) +#define WAIT_SYNC_NAME (ntpd_opt_strs+2588) /** Name string for the wait-sync option */ -#define WAIT_SYNC_name (ntpd_opt_strs+2476) +#define WAIT_SYNC_name (ntpd_opt_strs+2598) /** Other options that appear in conjunction with the wait-sync option */ static int const aWait_SyncCantList[] = { INDEX_OPT_NOFORK, @@ -670,11 +686,11 @@ static int const aWait_SyncCantList[] = { * slew option description: */ /** Descriptive text for the slew option */ -#define SLEW_DESC (ntpd_opt_strs+2486) +#define SLEW_DESC (ntpd_opt_strs+2608) /** Upper-cased name for the slew option */ -#define SLEW_NAME (ntpd_opt_strs+2509) +#define SLEW_NAME (ntpd_opt_strs+2631) /** Name string for the slew option */ -#define SLEW_name (ntpd_opt_strs+2514) +#define SLEW_name (ntpd_opt_strs+2636) /** Compiled in flag settings for the slew option */ #define SLEW_FLAGS (OPTST_DISABLED) @@ -683,11 +699,11 @@ static int const aWait_SyncCantList[] = { */ #ifdef SYS_WINNT /** Descriptive text for the usepcc option */ -#define USEPCC_DESC (ntpd_opt_strs+2519) +#define USEPCC_DESC (ntpd_opt_strs+2641) /** Upper-cased name for the usepcc option */ -#define USEPCC_NAME (ntpd_opt_strs+2556) +#define USEPCC_NAME (ntpd_opt_strs+2678) /** Name string for the usepcc option */ -#define USEPCC_name (ntpd_opt_strs+2563) +#define USEPCC_name (ntpd_opt_strs+2685) /** Compiled in flag settings for the usepcc option */ #define USEPCC_FLAGS (OPTST_DISABLED) @@ -703,11 +719,11 @@ static int const aWait_SyncCantList[] = { */ #ifdef SYS_WINNT /** Descriptive text for the pccfreq option */ -#define PCCFREQ_DESC (ntpd_opt_strs+2570) +#define PCCFREQ_DESC (ntpd_opt_strs+2692) /** Upper-cased name for the pccfreq option */ -#define PCCFREQ_NAME (ntpd_opt_strs+2613) +#define PCCFREQ_NAME (ntpd_opt_strs+2735) /** Name string for the pccfreq option */ -#define PCCFREQ_name (ntpd_opt_strs+2621) +#define PCCFREQ_name (ntpd_opt_strs+2743) /** Compiled in flag settings for the pccfreq option */ #define PCCFREQ_FLAGS (OPTST_DISABLED \ | OPTST_SET_ARGTYPE(OPARG_TYPE_STRING)) @@ -724,11 +740,11 @@ static int const aWait_SyncCantList[] = { */ #ifdef HAVE_DNSREGISTRATION /** Descriptive text for the mdns option */ -#define MDNS_DESC (ntpd_opt_strs+2629) +#define MDNS_DESC (ntpd_opt_strs+2751) /** Upper-cased name for the mdns option */ -#define MDNS_NAME (ntpd_opt_strs+2664) +#define MDNS_NAME (ntpd_opt_strs+2786) /** Name string for the mdns option */ -#define MDNS_name (ntpd_opt_strs+2669) +#define MDNS_name (ntpd_opt_strs+2791) /** Compiled in flag settings for the mdns option */ #define MDNS_FLAGS (OPTST_DISABLED) @@ -742,11 +758,11 @@ static int const aWait_SyncCantList[] = { /* * Help/More_Help/Version option descriptions: */ -#define HELP_DESC (ntpd_opt_strs+2674) -#define HELP_name (ntpd_opt_strs+2718) +#define HELP_DESC (ntpd_opt_strs+2796) +#define HELP_name (ntpd_opt_strs+2840) #ifdef HAVE_WORKING_FORK -#define MORE_HELP_DESC (ntpd_opt_strs+2723) -#define MORE_HELP_name (ntpd_opt_strs+2768) +#define MORE_HELP_DESC (ntpd_opt_strs+2845) +#define MORE_HELP_name (ntpd_opt_strs+2890) #define MORE_HELP_FLAGS (OPTST_IMM | OPTST_NO_INIT) #else #define MORE_HELP_DESC HELP_DESC @@ -759,8 +775,8 @@ static int const aWait_SyncCantList[] = { # define VER_FLAGS (OPTST_SET_ARGTYPE(OPARG_TYPE_STRING) | \ OPTST_ARG_OPTIONAL | OPTST_IMM | OPTST_NO_INIT) #endif -#define VER_DESC (ntpd_opt_strs+2778) -#define VER_name (ntpd_opt_strs+2814) +#define VER_DESC (ntpd_opt_strs+2900) +#define VER_name (ntpd_opt_strs+2936) /** * Declare option callback procedures */ @@ -900,8 +916,20 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ PANICGATE_DESC, PANICGATE_NAME, PANICGATE_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 10, VALUE_OPT_JAILDIR, - /* equiv idx, value */ 10, VALUE_OPT_JAILDIR, + { /* entry idx, value */ 10, VALUE_OPT_FORCE_STEP_ONCE, + /* equiv idx, value */ 10, VALUE_OPT_FORCE_STEP_ONCE, + /* equivalenced to */ NO_EQUIVALENT, + /* min, max, act ct */ 0, 1, 0, + /* opt state flags */ FORCE_STEP_ONCE_FLAGS, 0, + /* last opt argumnt */ { NULL }, /* --force_step_once */ + /* arg list/cookie */ NULL, + /* must/cannot opts */ NULL, NULL, + /* option proc */ NULL, + /* desc, NAME, name */ FORCE_STEP_ONCE_DESC, FORCE_STEP_ONCE_NAME, FORCE_STEP_ONCE_name, + /* disablement strs */ NULL, NULL }, + + { /* entry idx, value */ 11, VALUE_OPT_JAILDIR, + /* equiv idx, value */ 11, VALUE_OPT_JAILDIR, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ JAILDIR_FLAGS, 0, @@ -912,8 +940,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ JAILDIR_DESC, JAILDIR_NAME, JAILDIR_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 11, VALUE_OPT_INTERFACE, - /* equiv idx, value */ 11, VALUE_OPT_INTERFACE, + { /* entry idx, value */ 12, VALUE_OPT_INTERFACE, + /* equiv idx, value */ 12, VALUE_OPT_INTERFACE, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, NOLIMIT, 0, /* opt state flags */ INTERFACE_FLAGS, 0, @@ -924,8 +952,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ INTERFACE_DESC, INTERFACE_NAME, INTERFACE_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 12, VALUE_OPT_KEYFILE, - /* equiv idx, value */ 12, VALUE_OPT_KEYFILE, + { /* entry idx, value */ 13, VALUE_OPT_KEYFILE, + /* equiv idx, value */ 13, VALUE_OPT_KEYFILE, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ KEYFILE_FLAGS, 0, @@ -936,8 +964,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ KEYFILE_DESC, KEYFILE_NAME, KEYFILE_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 13, VALUE_OPT_LOGFILE, - /* equiv idx, value */ 13, VALUE_OPT_LOGFILE, + { /* entry idx, value */ 14, VALUE_OPT_LOGFILE, + /* equiv idx, value */ 14, VALUE_OPT_LOGFILE, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ LOGFILE_FLAGS, 0, @@ -948,8 +976,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ LOGFILE_DESC, LOGFILE_NAME, LOGFILE_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 14, VALUE_OPT_NOVIRTUALIPS, - /* equiv idx, value */ 14, VALUE_OPT_NOVIRTUALIPS, + { /* entry idx, value */ 15, VALUE_OPT_NOVIRTUALIPS, + /* equiv idx, value */ 15, VALUE_OPT_NOVIRTUALIPS, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ NOVIRTUALIPS_FLAGS, 0, @@ -960,8 +988,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ NOVIRTUALIPS_DESC, NOVIRTUALIPS_NAME, NOVIRTUALIPS_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 15, VALUE_OPT_MODIFYMMTIMER, - /* equiv idx, value */ 15, VALUE_OPT_MODIFYMMTIMER, + { /* entry idx, value */ 16, VALUE_OPT_MODIFYMMTIMER, + /* equiv idx, value */ 16, VALUE_OPT_MODIFYMMTIMER, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ MODIFYMMTIMER_FLAGS, 0, @@ -972,8 +1000,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ MODIFYMMTIMER_DESC, MODIFYMMTIMER_NAME, MODIFYMMTIMER_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 16, VALUE_OPT_NOFORK, - /* equiv idx, value */ 16, VALUE_OPT_NOFORK, + { /* entry idx, value */ 17, VALUE_OPT_NOFORK, + /* equiv idx, value */ 17, VALUE_OPT_NOFORK, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ NOFORK_FLAGS, 0, @@ -984,8 +1012,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ NOFORK_DESC, NOFORK_NAME, NOFORK_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 17, VALUE_OPT_NICE, - /* equiv idx, value */ 17, VALUE_OPT_NICE, + { /* entry idx, value */ 18, VALUE_OPT_NICE, + /* equiv idx, value */ 18, VALUE_OPT_NICE, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ NICE_FLAGS, 0, @@ -996,8 +1024,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ NICE_DESC, NICE_NAME, NICE_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 18, VALUE_OPT_PIDFILE, - /* equiv idx, value */ 18, VALUE_OPT_PIDFILE, + { /* entry idx, value */ 19, VALUE_OPT_PIDFILE, + /* equiv idx, value */ 19, VALUE_OPT_PIDFILE, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ PIDFILE_FLAGS, 0, @@ -1008,8 +1036,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ PIDFILE_DESC, PIDFILE_NAME, PIDFILE_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 19, VALUE_OPT_PRIORITY, - /* equiv idx, value */ 19, VALUE_OPT_PRIORITY, + { /* entry idx, value */ 20, VALUE_OPT_PRIORITY, + /* equiv idx, value */ 20, VALUE_OPT_PRIORITY, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ PRIORITY_FLAGS, 0, @@ -1020,8 +1048,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ PRIORITY_DESC, PRIORITY_NAME, PRIORITY_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 20, VALUE_OPT_QUIT, - /* equiv idx, value */ 20, VALUE_OPT_QUIT, + { /* entry idx, value */ 21, VALUE_OPT_QUIT, + /* equiv idx, value */ 21, VALUE_OPT_QUIT, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ QUIT_FLAGS, 0, @@ -1032,8 +1060,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ QUIT_DESC, QUIT_NAME, QUIT_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 21, VALUE_OPT_PROPAGATIONDELAY, - /* equiv idx, value */ 21, VALUE_OPT_PROPAGATIONDELAY, + { /* entry idx, value */ 22, VALUE_OPT_PROPAGATIONDELAY, + /* equiv idx, value */ 22, VALUE_OPT_PROPAGATIONDELAY, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ PROPAGATIONDELAY_FLAGS, 0, @@ -1044,8 +1072,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ PROPAGATIONDELAY_DESC, PROPAGATIONDELAY_NAME, PROPAGATIONDELAY_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 22, VALUE_OPT_SAVECONFIGQUIT, - /* equiv idx, value */ 22, VALUE_OPT_SAVECONFIGQUIT, + { /* entry idx, value */ 23, VALUE_OPT_SAVECONFIGQUIT, + /* equiv idx, value */ 23, VALUE_OPT_SAVECONFIGQUIT, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ SAVECONFIGQUIT_FLAGS, 0, @@ -1056,8 +1084,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ SAVECONFIGQUIT_DESC, SAVECONFIGQUIT_NAME, SAVECONFIGQUIT_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 23, VALUE_OPT_STATSDIR, - /* equiv idx, value */ 23, VALUE_OPT_STATSDIR, + { /* entry idx, value */ 24, VALUE_OPT_STATSDIR, + /* equiv idx, value */ 24, VALUE_OPT_STATSDIR, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ STATSDIR_FLAGS, 0, @@ -1068,8 +1096,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ STATSDIR_DESC, STATSDIR_NAME, STATSDIR_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 24, VALUE_OPT_TRUSTEDKEY, - /* equiv idx, value */ 24, VALUE_OPT_TRUSTEDKEY, + { /* entry idx, value */ 25, VALUE_OPT_TRUSTEDKEY, + /* equiv idx, value */ 25, VALUE_OPT_TRUSTEDKEY, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, NOLIMIT, 0, /* opt state flags */ TRUSTEDKEY_FLAGS, 0, @@ -1080,8 +1108,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ TRUSTEDKEY_DESC, TRUSTEDKEY_NAME, TRUSTEDKEY_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 25, VALUE_OPT_USER, - /* equiv idx, value */ 25, VALUE_OPT_USER, + { /* entry idx, value */ 26, VALUE_OPT_USER, + /* equiv idx, value */ 26, VALUE_OPT_USER, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ USER_FLAGS, 0, @@ -1092,8 +1120,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ USER_DESC, USER_NAME, USER_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 26, VALUE_OPT_UPDATEINTERVAL, - /* equiv idx, value */ 26, VALUE_OPT_UPDATEINTERVAL, + { /* entry idx, value */ 27, VALUE_OPT_UPDATEINTERVAL, + /* equiv idx, value */ 27, VALUE_OPT_UPDATEINTERVAL, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ UPDATEINTERVAL_FLAGS, 0, @@ -1104,8 +1132,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ UPDATEINTERVAL_DESC, UPDATEINTERVAL_NAME, UPDATEINTERVAL_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 27, VALUE_OPT_VAR, - /* equiv idx, value */ 27, VALUE_OPT_VAR, + { /* entry idx, value */ 28, VALUE_OPT_VAR, + /* equiv idx, value */ 28, VALUE_OPT_VAR, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, NOLIMIT, 0, /* opt state flags */ VAR_FLAGS, 0, @@ -1116,8 +1144,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ VAR_DESC, VAR_NAME, VAR_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 28, VALUE_OPT_DVAR, - /* equiv idx, value */ 28, VALUE_OPT_DVAR, + { /* entry idx, value */ 29, VALUE_OPT_DVAR, + /* equiv idx, value */ 29, VALUE_OPT_DVAR, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, NOLIMIT, 0, /* opt state flags */ DVAR_FLAGS, 0, @@ -1128,8 +1156,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ DVAR_DESC, DVAR_NAME, DVAR_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 29, VALUE_OPT_WAIT_SYNC, - /* equiv idx, value */ 29, VALUE_OPT_WAIT_SYNC, + { /* entry idx, value */ 30, VALUE_OPT_WAIT_SYNC, + /* equiv idx, value */ 30, VALUE_OPT_WAIT_SYNC, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ WAIT_SYNC_FLAGS, 0, @@ -1140,8 +1168,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ WAIT_SYNC_DESC, WAIT_SYNC_NAME, WAIT_SYNC_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 30, VALUE_OPT_SLEW, - /* equiv idx, value */ 30, VALUE_OPT_SLEW, + { /* entry idx, value */ 31, VALUE_OPT_SLEW, + /* equiv idx, value */ 31, VALUE_OPT_SLEW, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ SLEW_FLAGS, 0, @@ -1152,8 +1180,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ SLEW_DESC, SLEW_NAME, SLEW_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 31, VALUE_OPT_USEPCC, - /* equiv idx, value */ 31, VALUE_OPT_USEPCC, + { /* entry idx, value */ 32, VALUE_OPT_USEPCC, + /* equiv idx, value */ 32, VALUE_OPT_USEPCC, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ USEPCC_FLAGS, 0, @@ -1164,8 +1192,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ USEPCC_DESC, USEPCC_NAME, USEPCC_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 32, VALUE_OPT_PCCFREQ, - /* equiv idx, value */ 32, VALUE_OPT_PCCFREQ, + { /* entry idx, value */ 33, VALUE_OPT_PCCFREQ, + /* equiv idx, value */ 33, VALUE_OPT_PCCFREQ, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ PCCFREQ_FLAGS, 0, @@ -1176,8 +1204,8 @@ static tOptDesc optDesc[OPTION_CT] = { /* desc, NAME, name */ PCCFREQ_DESC, PCCFREQ_NAME, PCCFREQ_name, /* disablement strs */ NULL, NULL }, - { /* entry idx, value */ 33, VALUE_OPT_MDNS, - /* equiv idx, value */ 33, VALUE_OPT_MDNS, + { /* entry idx, value */ 34, VALUE_OPT_MDNS, + /* equiv idx, value */ 34, VALUE_OPT_MDNS, /* equivalenced to */ NO_EQUIVALENT, /* min, max, act ct */ 0, 1, 0, /* opt state flags */ MDNS_FLAGS, 0, @@ -1230,21 +1258,21 @@ static tOptDesc optDesc[OPTION_CT] = { /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /** Reference to the upper cased version of ntpd. */ -#define zPROGNAME (ntpd_opt_strs+2822) +#define zPROGNAME (ntpd_opt_strs+2944) /** Reference to the title line for ntpd usage. */ -#define zUsageTitle (ntpd_opt_strs+2827) +#define zUsageTitle (ntpd_opt_strs+2949) /** There is no ntpd configuration file. */ #define zRcName NULL /** There are no directories to search for ntpd config files. */ #define apzHomeList NULL /** The ntpd program bug email address. */ -#define zBugsAddr (ntpd_opt_strs+2960) +#define zBugsAddr (ntpd_opt_strs+3080) /** Clarification/explanation of what ntpd does. */ -#define zExplain (ntpd_opt_strs+2994) +#define zExplain (ntpd_opt_strs+3114) /** Extra detail explaining what ntpd does. */ #define zDetail (NULL) /** The full version string for ntpd. */ -#define zFullVersion (ntpd_opt_strs+2996) +#define zFullVersion (ntpd_opt_strs+3116) /* extracted from optcode.tlib near line 364 */ #if defined(ENABLE_NLS) @@ -1366,7 +1394,7 @@ tOptions ntpdOptions = { NO_EQUIVALENT, /* '-#' option index */ NO_EQUIVALENT /* index of default opt */ }, - 37 /* full option count */, 34 /* user option count */, + 38 /* full option count */, 35 /* user option count */, ntpd_full_usage, ntpd_short_usage, NULL, NULL, PKGDATADIR, ntpd_packager_info @@ -1501,8 +1529,8 @@ static void bogus_function(void) { translate option names. */ /* referenced via ntpdOptions.pzCopyright */ - puts(_("ntpd 4.2.7p482\n\ -Copyright (C) 1970-2014 The University of Delaware, all rights reserved.\n\ + puts(_("ntpd 4.2.8p2\n\ +Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.\n\ This is free software. It is licensed for use, modification and\n\ redistribution under the terms of the NTP License, copies of which\n\ can be seen at:\n")); @@ -1516,9 +1544,10 @@ provided that the above copyright notice appears in all copies and that\n\ both the copyright notice and this permission notice appear in supporting\n\ documentation, and that the name The University of Delaware not be used in\n\ advertising or publicity pertaining to distribution of the software without\n\ -specific, written prior permission. The University of Delaware makes no\n\ -representations about the suitability this software for any purpose. It is\n\ -provided \"as is\" without express or implied warranty.\n")); +specific, written prior permission. The University of Delaware and Network\n\ +Time Foundation makes no representations about the suitability this\n\ +software for any purpose. It is provided \"as is\" without express or\n\ +implied warranty.\n")); /* referenced via ntpdOptions.pOptDesc->pzText */ puts(_("Force IPv4 DNS name resolution")); @@ -1550,6 +1579,9 @@ provided \"as is\" without express or implied warranty.\n")); /* referenced via ntpdOptions.pOptDesc->pzText */ puts(_("Allow the first adjustment to be Big")); + /* referenced via ntpdOptions.pOptDesc->pzText */ + puts(_("Step any initial offset correction.")); + /* referenced via ntpdOptions.pOptDesc->pzText */ puts(_("Jail directory")); @@ -1638,7 +1670,7 @@ provided \"as is\" without express or implied warranty.\n")); puts(_("output version information and exit")); /* referenced via ntpdOptions.pzUsageTitle */ - puts(_("ntpd - NTP daemon program - Ver. 4.2.7p482\n\ + puts(_("ntpd - NTP daemon program - Ver. 4.2.8p2\n\ Usage: %s [ - [] | --[{=| }] ]... \\\n\ \t\t[ ... ]\n")); @@ -1646,7 +1678,7 @@ Usage: %s [ - [] | --[{=| }] ]... \\\n\ puts(_("\n")); /* referenced via ntpdOptions.pzFullVersion */ - puts(_("ntpd 4.2.7p482")); + puts(_("ntpd 4.2.8p2")); /* referenced via ntpdOptions.pzFullUsage */ puts(_("<<>>")); diff --git a/ntpd/ntpd-opts.h b/ntpd/ntpd-opts.h index 7a33779..682aebd 100644 --- a/ntpd/ntpd-opts.h +++ b/ntpd/ntpd-opts.h @@ -1,7 +1,7 @@ /* * EDIT THIS FILE WITH CAUTION (ntpd-opts.h) * - * It has been AutoGen-ed December 2, 2014 at 08:54:07 AM by AutoGen 5.18.5pre4 + * It has been AutoGen-ed April 7, 2015 at 04:23:13 AM by AutoGen 5.18.5pre4 * From the definitions ntpd-opts.def * and the template file options * @@ -18,7 +18,7 @@ * The ntpd program is copyrighted and licensed * under the following terms: * - * Copyright (C) 1970-2014 The University of Delaware, all rights reserved. + * Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved. * This is free software. It is licensed for use, modification and * redistribution under the terms of the NTP License, copies of which * can be seen at: @@ -31,7 +31,7 @@ * both the copyright notice and this permission notice appear in * supporting documentation, and that the name The University of Delaware not be used in * advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. The University of Delaware makes no + * without specific, written prior permission. The University of Delaware and Network Time Foundation makes no * representations about the suitability this software for any purpose. It * is provided "as is" without express or implied warranty. */ @@ -74,40 +74,41 @@ typedef enum { INDEX_OPT_SET_DEBUG_LEVEL = 7, INDEX_OPT_DRIFTFILE = 8, INDEX_OPT_PANICGATE = 9, - INDEX_OPT_JAILDIR = 10, - INDEX_OPT_INTERFACE = 11, - INDEX_OPT_KEYFILE = 12, - INDEX_OPT_LOGFILE = 13, - INDEX_OPT_NOVIRTUALIPS = 14, - INDEX_OPT_MODIFYMMTIMER = 15, - INDEX_OPT_NOFORK = 16, - INDEX_OPT_NICE = 17, - INDEX_OPT_PIDFILE = 18, - INDEX_OPT_PRIORITY = 19, - INDEX_OPT_QUIT = 20, - INDEX_OPT_PROPAGATIONDELAY = 21, - INDEX_OPT_SAVECONFIGQUIT = 22, - INDEX_OPT_STATSDIR = 23, - INDEX_OPT_TRUSTEDKEY = 24, - INDEX_OPT_USER = 25, - INDEX_OPT_UPDATEINTERVAL = 26, - INDEX_OPT_VAR = 27, - INDEX_OPT_DVAR = 28, - INDEX_OPT_WAIT_SYNC = 29, - INDEX_OPT_SLEW = 30, - INDEX_OPT_USEPCC = 31, - INDEX_OPT_PCCFREQ = 32, - INDEX_OPT_MDNS = 33, - INDEX_OPT_VERSION = 34, - INDEX_OPT_HELP = 35, - INDEX_OPT_MORE_HELP = 36 + INDEX_OPT_FORCE_STEP_ONCE = 10, + INDEX_OPT_JAILDIR = 11, + INDEX_OPT_INTERFACE = 12, + INDEX_OPT_KEYFILE = 13, + INDEX_OPT_LOGFILE = 14, + INDEX_OPT_NOVIRTUALIPS = 15, + INDEX_OPT_MODIFYMMTIMER = 16, + INDEX_OPT_NOFORK = 17, + INDEX_OPT_NICE = 18, + INDEX_OPT_PIDFILE = 19, + INDEX_OPT_PRIORITY = 20, + INDEX_OPT_QUIT = 21, + INDEX_OPT_PROPAGATIONDELAY = 22, + INDEX_OPT_SAVECONFIGQUIT = 23, + INDEX_OPT_STATSDIR = 24, + INDEX_OPT_TRUSTEDKEY = 25, + INDEX_OPT_USER = 26, + INDEX_OPT_UPDATEINTERVAL = 27, + INDEX_OPT_VAR = 28, + INDEX_OPT_DVAR = 29, + INDEX_OPT_WAIT_SYNC = 30, + INDEX_OPT_SLEW = 31, + INDEX_OPT_USEPCC = 32, + INDEX_OPT_PCCFREQ = 33, + INDEX_OPT_MDNS = 34, + INDEX_OPT_VERSION = 35, + INDEX_OPT_HELP = 36, + INDEX_OPT_MORE_HELP = 37 } teOptIndex; /** count of all options for ntpd */ -#define OPTION_CT 37 +#define OPTION_CT 38 /** ntpd version */ -#define NTPD_VERSION "4.2.7p482" +#define NTPD_VERSION "4.2.8p2" /** Full ntpd version text */ -#define NTPD_FULL_VERSION "ntpd 4.2.7p482" +#define NTPD_FULL_VERSION "ntpd 4.2.8p2" /** * Interface defines for all options. Replace "n" with the UPPER_CASED @@ -199,6 +200,10 @@ typedef enum { # warning undefining PANICGATE due to option name conflict # undef PANICGATE # endif +# ifdef FORCE_STEP_ONCE +# warning undefining FORCE_STEP_ONCE due to option name conflict +# undef FORCE_STEP_ONCE +# endif # ifdef JAILDIR # warning undefining JAILDIR due to option name conflict # undef JAILDIR @@ -306,6 +311,7 @@ typedef enum { # undef SET_DEBUG_LEVEL # undef DRIFTFILE # undef PANICGATE +# undef FORCE_STEP_ONCE # undef JAILDIR # undef INTERFACE # undef KEYFILE @@ -348,6 +354,7 @@ typedef enum { #define OPT_VALUE_SET_DEBUG_LEVEL (DESC(SET_DEBUG_LEVEL).optArg.argInt) #define VALUE_OPT_DRIFTFILE 'f' #define VALUE_OPT_PANICGATE 'g' +#define VALUE_OPT_FORCE_STEP_ONCE 'G' #define VALUE_OPT_JAILDIR 'i' #define VALUE_OPT_INTERFACE 'I' #define VALUE_OPT_KEYFILE 'k' diff --git a/ntpd/ntpd.1ntpdman b/ntpd/ntpd.1ntpdman index 810e071..5ded89b 100644 --- a/ntpd/ntpd.1ntpdman +++ b/ntpd/ntpd.1ntpdman @@ -10,11 +10,11 @@ .ds B-Font B .ds I-Font I .ds R-Font R -.TH ntpd 1ntpdman "02 Dec 2014" "4.2.7p482" "User Commands" +.TH ntpd 1ntpdman "07 Apr 2015" "4.2.8p2" "User Commands" .\" -.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-AtaWSL/ag-MtaORL) +.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-TQays3/ag-5Qaqr3) .\" -.\" It has been AutoGen-ed December 2, 2014 at 08:56:46 AM by AutoGen 5.18.5pre4 +.\" It has been AutoGen-ed April 7, 2015 at 04:25:45 AM by AutoGen 5.18.5pre4 .\" From the definitions ntpd-opts.def .\" and the template file agman-cmd.tpl .SH NAME @@ -175,7 +175,7 @@ The name and path of the frequency file, by default. This is the same operation as the \fBdriftfile\fP \fIdriftfile\fP -configuration specification in the +configuration specification in the \fI/etc/ntp.conf\fP file. .TP @@ -196,6 +196,20 @@ See the \fBtinker\fP configuration file directive for other options. .TP +.NOP \f\*[B-Font]\-G\f[], \f\*[B-Font]\-\-force\-step\-once\f[] +Step any initial offset correction.. +.sp +Normally, +\fBntpd\fP +steps the time if the time offset exceeds the step threshold, +which is 128 ms by default, and otherwise slews the time. +This option forces the initial offset correction to be stepped, +so the highest time accuracy can be achieved quickly. +However, this may also cause the time to be stepped back +so this option must not be used if +applications requiring monotonic time are running. +See the \fBtinker\fP configuration file directive for other options. +.TP .NOP \f\*[B-Font]\-i\f[] \f\*[I-Font]string\f[], \f\*[B-Font]\-\-jaildir\f[]=\f\*[I-Font]string\f[] Jail directory. .sp @@ -220,7 +234,7 @@ Open the network address given, or all the addresses associated with the given interface name. This option may appear multiple times. This option also implies not opening other addresses, except wildcard and localhost. This option is deprecated. Please consider using the configuration file -\fBinterface\fP command, which is more versatile. +\fBinterface\fP command, which is more versatile. .TP .NOP \f\*[B-Font]\-k\f[] \f\*[I-Font]string\f[], \f\*[B-Font]\-\-keyfile\f[]=\f\*[I-Font]string\f[] path to symmetric keys. @@ -959,9 +973,9 @@ RFC5908 .PP .SH "AUTHORS" -The University of Delaware +The University of Delaware and Network Time Foundation .SH "COPYRIGHT" -Copyright (C) 1970-2014 The University of Delaware all rights reserved. +Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation all rights reserved. This program is released under the terms of the NTP license, . .SH BUGS The diff --git a/ntpd/ntpd.1ntpdmdoc b/ntpd/ntpd.1ntpdmdoc index 5b02dd1..14b38e4 100644 --- a/ntpd/ntpd.1ntpdmdoc +++ b/ntpd/ntpd.1ntpdmdoc @@ -1,9 +1,9 @@ -.Dd December 2 2014 +.Dd April 7 2015 .Dt NTPD 1ntpdmdoc User Commands .Os .\" EDIT THIS FILE WITH CAUTION (ntpd-opts.mdoc) .\" -.\" It has been AutoGen-ed December 2, 2014 at 08:57:03 AM by AutoGen 5.18.5pre4 +.\" It has been AutoGen-ed April 7, 2015 at 04:26:02 AM by AutoGen 5.18.5pre4 .\" From the definitions ntpd-opts.def .\" and the template file agmdoc-cmd.tpl .Sh NAME @@ -144,7 +144,7 @@ The name and path of the frequency file, by default. This is the same operation as the \fBdriftfile\fP \fIdriftfile\fP -configuration specification in the +configuration specification in the \fI/etc/ntp.conf\fP file. .It Fl g , Fl \-panicgate @@ -163,6 +163,19 @@ options. See the \fBtinker\fP configuration file directive for other options. +.It Fl G , Fl \-force\-step\-once +Step any initial offset correction.. +.sp +Normally, +\fBntpd\fP +steps the time if the time offset exceeds the step threshold, +which is 128 ms by default, and otherwise slews the time. +This option forces the initial offset correction to be stepped, +so the highest time accuracy can be achieved quickly. +However, this may also cause the time to be stepped back +so this option must not be used if +applications requiring monotonic time are running. +See the \fBtinker\fP configuration file directive for other options. .It Fl i Ar string , Fl \-jaildir Ns = Ns Ar string Jail directory. .sp @@ -186,7 +199,7 @@ Open the network address given, or all the addresses associated with the given interface name. This option may appear multiple times. This option also implies not opening other addresses, except wildcard and localhost. This option is deprecated. Please consider using the configuration file -\fBinterface\fP command, which is more versatile. +\fBinterface\fP command, which is more versatile. .It Fl k Ar string , Fl \-keyfile Ns = Ns Ar string path to symmetric keys. .sp @@ -867,9 +880,9 @@ A snapshot of this documentation is available in HTML format in .%O RFC5908 .Re .Sh "AUTHORS" -The University of Delaware +The University of Delaware and Network Time Foundation .Sh "COPYRIGHT" -Copyright (C) 1970\-2014 The University of Delaware all rights reserved. +Copyright (C) 1992\-2015 The University of Delaware and Network Time Foundation all rights reserved. This program is released under the terms of the NTP license, . .Sh BUGS The diff --git a/ntpd/ntpd.c b/ntpd/ntpd.c index ef1baa7..529e6ce 100644 --- a/ntpd/ntpd.c +++ b/ntpd/ntpd.c @@ -168,8 +168,8 @@ int root_dropped; char *user; /* User to switch to */ char *group; /* group to switch to */ const char *chrootdir; /* directory to chroot to */ -int sw_uid; -int sw_gid; +uid_t sw_uid; +gid_t sw_gid; char *endp; struct group *gr; struct passwd *pw; @@ -937,6 +937,10 @@ getgroup: msyslog(LOG_ERR, "Cannot setegid() to group `%s': %m", group); exit (-1); } + if (group) + setgroups(1, &sw_gid); + else + initgroups(pw->pw_name, pw->pw_gid); if (user && setuid(sw_uid)) { msyslog(LOG_ERR, "Cannot setuid() to user `%s': %m", user); exit (-1); @@ -1258,6 +1262,7 @@ finish( if (mdns != NULL) DNSServiceRefDeallocate(mdns); # endif + peer_cleanup(); exit(0); } #endif /* !SIM && SIGDIE1 */ diff --git a/ntpd/ntpd.html b/ntpd/ntpd.html index 25b6caa..8919ee9 100644 --- a/ntpd/ntpd.html +++ b/ntpd/ntpd.html @@ -39,7 +39,7 @@ The program can operate in any of several modes, including client/server, symmetric and broadcast modes, and with both symmetric-key and public-key cryptography. -

    This document applies to version 4.2.7p482 of ntpd. +

    This document applies to version 4.2.8p2 of ntpd.